Использовать virt-manager для обмена файлами между хостом Linux и гостем Windows?

26

Можно ли использовать виртуальную аппаратную опцию «Fileystem Passthrough» внутри virt-manager, чтобы разделить папку на моем хосте Linux с моим гостем Windows? Я нашел несколько руководств, как сделать это с гостем Linux, но когда я пытаюсь сделать это с гостем Windows, я получаю следующее сообщение об ошибке при попытке запустить виртуальную машину:

Error starting domain: Unable to read from monitor: Connection reset by peer

Traceback (most recent call last):   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 100, in cb_wrapper
    callback(asyncjob, *args, **kwargs)   File "/usr/share/virt-manager/virtManager/asyncjob.py", line 122, in tmpcb
    callback(*args, **kwargs)   File "/usr/share/virt-manager/virtManager/domain.py", line 1210, in startup
    self._backend.create()   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 698, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: Unable to read from monitor: Connection reset by peer

Я попытался найти какую-то документацию, но все, что я мог найти, - это официальная страница со ссылкой на FAQ и «некоторые скриншоты» .

Blaker
источник

Ответы:

16

Я не верю, что это возможно с помощью гостей Windows. Я обычно настраиваю сервер Samba на хосте Linux KVM, а затем делюсь этой папкой с гостями KVM.

Файловая система Passthrough

Документация по совместному использованию каталога хоста KVM с гостями KVM (Linux) доступна здесь на веб-сайте virt-manager. Страница называется: Пример общего доступа к файлам хоста с гостем .

Настройка Samba

Веб-сайт linux-kvm также содержит инструкции по настройке Samba. Эта документация доступна здесь под названием: Совет. Как вы можете обмениваться файлами на вашем хосте Linux с гостем Windows, используя Samba .

SLM
источник
большие пальцы для "настройки самбы". Это более безопасный подход
pqnet
@pqnet: не могли бы вы уточнить, как и почему это безопаснее?
0xC0000022L
4
@ 0xC0000022L, поскольку он не зависит от способности виртуализатора эффективно обманывать гостевую операционную систему, которая может сломаться при изменении операционной системы. Samba - это сетевой протокол, поэтому гостевая операционная система меньше рассчитывает на то, что она может, и на нее нельзя.
pqnet
6

Файловые менеджеры по умолчанию в среде рабочего стола Gnome и KDE могут легко получить доступ к общим ресурсам Windows по протоколу SMB.
Вам не нужно устанавливать сервер samba на хост-компьютере Linux, потому что ОС Windows уже поставляется со встроенными протоколами связи samba.

Допустим, ваша гостевая ОС, например, « Windows XP », выберите папку, к которой вы хотите предоставить общий доступ, или просто создайте ее для этой цели, например, «hostshare», и щелкните правой кнопкой мыши по ней -> « свойства » -> вкладка « Обмен » -> выберите: « Предоставить общий доступ к этой папке в сети » и « Разрешить пользователям сети изменять мои файлы ».

На этом этапе убедитесь, что брандмауэр Windows предоставляет доступ к общим файлам и ресурсам принтера. Откройте меню « Пуск » -> « Настройки » -> « Панель управления » -> « Брандмауэр Windows » -> вкладка « Исключения » -> выберите: -> « Общий доступ к файлам и принтерам ».

Убедитесь, что хост-компьютер Linux виден из гостевой виртуальной машины Windows через сеть. Итак, из командной строки Windows введите: « ping 10.0.0.12 », где в данном случае (в качестве примера) «10.0.0.12» - это IP-адрес хоста; Вы должны изменить его на свой. Если у вас нет ответов на эхо, вам придется разобраться с этим.
И проделайте то же самое из командной строки Linux: « ping -c3 192.168.122.216 », где эти числа (в качестве примера) относятся к адресу virt-IP, назначенному гостевой виртуальной машине; Вы должны изменить его на свой.

На хосте Linux откройте « Nautilus » и перейдите в « Файл » -> « Подключиться к серверу » -> В поле « Адрес сервера » введите: « smb / 192.168.122.216 » -> « Подключиться ».
Откроется окно Nautilus с просматриваемыми ресурсами вашего Windows-сервера, встроенного в Samba. Вы сможете увидеть и получить доступ к содержимому папки windows hosts . Вот и все!

Энди
источник
2

Я считаю, что @slm предоставил лучший ответ. ОДНАКО, есть другой вариант использования. Однако эта альтернатива немного взломана.

Грубый гид. Не учитывайте эти окончательные команды:

  1. создать файл образа (дискета ms-dos или компакт-диск ISO-9660)
  2. отформатировать изображение в файловой системе, например, mkfs.msdos
  3. при необходимости копируйте и манипулируйте файлами на изображении, например, с помощью mcopy и др.
  4. смонтировать образ на гостевой виртуальный диск или дискету

Это не идеальный вариант, но он может работать, если ваша гостевая виртуальная машина не разрешает соединения по сетевому протоколу между dom0 и гостем (например, во время закрытого сеанса VPN).

Больше информации здесь:

/programming//q/11202706/3407600

0xSheepdog
источник
1

Возможен общий доступ только для чтения (гостевой Windows имеет R / W, а хост Linux может только читать), так как хост Linux может монтировать NTFS на устройстве обратной связи, предположим, что вы используете хранилище «сырого» типа для гостевой системы Windows:

Предположим, у вас есть Win.img в качестве необработанного образа, он эмулируется как диск.

  • Шаг 1: Найдите смещение вашей файловой системы (поскольку это диск) с помощью fdisk:
$ fdisk -lu Win.img

Disk Win.img: 16.3 GB, 16252928000 bytes
255 heads, 63 sectors/track, 1975 cylinders, total 31744000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x3a793a79

    Device Boot      Start         End      Blocks   Id  System
    Win.img   *          63    31712309    15856123+   7  HPFS/NTFS/exFAT

Теперь вычислите смещение = 63 x 512 = 32256

  • Шаг 2: смонтировать его
mount Win.img /mntpoint -o ro,loop,offset=32256

ВНИМАНИЕ

Вы можете смонтировать его RW, и, следовательно, Linux может записать в него, но ваша файловая система будет повреждена! Потому что и ваш Linux и Windows обращаются к файловой системе в то же время! Они могут выделить те же самые свободные блоки для записи файлов, которые они хотят записать!

Linux читается нестабильно, в редких случаях

С этим методом файловая система безопасна, и в большинстве случаев нормально стабильное чтение. Однако, как я уже сказал, они одновременно обращаются к файловой системе, и, таким образом, когда Windows пытается что-то записать, Linux может не получить информацию и, таким образом, прочитать что-то поврежденное. Однако, если вы используете его осторожно, чтение должно быть очень стабильным.

Робин Хсу
источник
3
Насколько это надежно? Данные могут быть в кеше. Записи не будут атомарными относительно операций чтения в другой системе.
ctrl-alt-delor
0

Я использую Dokany + Win-SSHFS для монтирования удаленных папок через ssh. Пусть они играют в догонялки, а не наоборот < злорадная улыбка >

Арье Склярук
источник
0

Решение Энди сработало для меня, хоста Debian и гостя Windows. Обратите внимание, что у меня установлены spice-guest-tools со специальным сетевым драйвером от redhat.

Кроме того, мне пришлось снять защиту паролем через smb. Здесь по этой ссылке я нашел, как удалить пароль https://pureinfotech.com/setup-network-file-sharing-windows-10/

Тьерри Вилмарт
источник