В релизе Proxmox VE 8.4 появилась возможность создавать общие директории на хосте для прямого доступа из виртуальных машин (аналог общих папок в VMware Workstation). Виртуальные машины могут получать прямой доступ (без использования сети) к общим директориям (файлам) на хосте Proxmox с помощью файловой системы VirtIOFS. В этой статье мы рассмотрим, как создать общую директорию на Proxmox и смонтировать ее в виртуальных машинах с гостевыми Linux или Windows.
Для проброса директорий с хоста Proxmox в ВМ используется демон virtiofsd, встроенная поддержка которого появилась в версии 8.4.
Проверьте версию Proxmox на хосте:
# pveversion -v
Если версия ниже, чем 8.4, выполните обновление Proxmox.
Проверьте, что virtiofsd установлен на хосте:
# dpkg -l | grep virtiofsd
Создайте общую директорию на хосте Proxmox, к которой вы хотите предоставить доступ для виртуальных машин:
# mkdir /mnt/VMShare
Откройте Proxmox web UI и перейдите в раздел Datacenter -> Directory Mappings. Добавьте новое сопоставление для ресурса, который ссылается на локальную папку /mnt/VMShare.
Теперь нужно в настройках виртуальной машины добавить общую ресурс (папку) VirtioFS. Отройте настройки ВМ -> Hardware -> Virtiofs.
Укажите локальную директорию, которую вы хотите пробросить в ВМ.
Virtiofsd поддерживает проброс ACL и xattr атрибутов объектов общей директории в гостевую ВМ. Так вы можете управлять правами доступа к объектам, конечно если гостевая файловая система их поддерживает (имеет смысл только для файловых систем Linux).
Виртуальные машины с ядром Linux 5.4+ по умолчанию поддерживают virtiofs. Проверьте, что драйвер загружен:
# lsmod | grep virtiofs
Чтобы в ВМ с гостевой Linux временно смонтировать директорию с хоста Proxmox с помощью драйвера virtiofs, выполните в гостевой ВМ команду:
# mount -t virtiofs VMShare /mnt/hostshare
Или добавьте запись в fstab, чтобы иметь постоянную смонтированную директорию:
VMShare /mnt/hostshare virtiofs rw,relatime 0 0
mount: /mnt/hostshare: wrong fs type, bad option, bad superblock on vmshare, missing codepage or helper program, or other error. dmesg(1) may have more information after failed mount system call.
Дело в том, чтобы виртуальное устройство virtiofs появилось в оборудовании ВМ, ее нужно выключить (простой перезагрузки ВМ недостаточно).
После включения выведем конфигурацию ВМ, проверим что в настройках появилось устройство virtiofs:
# qm config 154 --current
virtiofs0: VMShare
В гостевой ВМ с Windows для использования virtiofs нужно дополнительно установить VirtioFS Guest Tools, которые включаю в себя драйвер для доступа к устройству. Смонтируйте в ВМ последую версию ISO образа Virtio ISO (
virtio-win-0.1.271.iso
или выше). Запустите установщик
virtio-win-gt-x64.msi
, установите драйвера viofs/VirtioFS (подробнее в статье об установке Windows в виртуальную машину Proxmox).
Проверим, что драйвер службы установлен и само устройство Virtio FS доступно из гостевой Windows:
Get-Service VirtioFsDrv
Get-PnpDevice | Where-Object { $_.FriendlyName -like "*VirtioFS*" -or $_.FriendlyName -like "*Virtio FS*" }
Для монтирования директории VirtioFS в Windows понадобится утилита WinFSP (Windows File System Proxy), которая позволяет подключать файловые системы в пользовательском режиме (аналог FUSE для Linux)
Скачайте и установите WinFSP https://github.com/winfsp/winfsp/releases
Перезапустите службу VirtIO-FS Service (VirtioFsSvc), которая через winfsp смонтирует общую папку virtiofs.
Общая папка хоста Proxmox появится в виде отдельного диска в проводнике гостевой Windows в виртуальной машине.