VirtioFS в Proxmox: общая папка без сети
С помощью VirtioFS можно в рамках одного гипервизора всем виртуальным машинам подключать общую папку для совместной работы, которая располагается на гипервизоре. Основное удобство тут в том, что всё это работает только локально в пределах гипервизора, вообще не использует сетевой стек, и не требует особой настройки. Просто добавляешь эту общую папку в виртуальные машины и там подключаешь. Не нужно следить за доступом по сети, за аутентификацией и т.д. Права доступа поддерживаются только линуксовые, в том числе расширенные атрибуты ACL.
VirtioFS поддерживается и в Linux, и в Windows. В линуксе есть поддержка на уровне ядра, так что вообще ничего дополнительно устанавливать и настраивать не надо. В винде драйвер входит в состав драйверов из набора virtio-win.iso, так что в любом случае будет установлен вместе с остальными. Дополнительно нужно будет установить небольшую службу winfsp, упакованную в .msi пакет. Настраивать её тоже не надо. Просто устанавливаешь, запускаешь и она автоматом монтирует диск, который подключен к VM как устройство virtiofs.
Покажу пару примеров, где это может быть полезно. Я не раз настраивал в рамках одного гипервизора сервер 1С на Linux и виндовый терминал, как для пользователей, так и служебные машины с виндой для администраторов 1С. Меня иногда просят сделать общую сетевую папку для винды и линукса, чтобы настраивать какие-то обмены. Не знаю, насколько это реально нужно именно в таком виде, но настраивал не раз, обычно на samba или ksmbd. Эту задачу проще всего решает как раз VirtioFS - одна общая папка для всех систем.
Общую папку можно монтировать всем виртуалкам для того, чтобы они туда складывали какие-то бэкапы или нужные общие данные (например, логи или санкционные пакеты). Они в итоге оказываются на гипервизоре, а уже оттуда их забирает какое-то внешнее хранилище. Удобно держать под рукой локальные бэкапы для быстрого восстановления в случае проблем. Общая директория упрощает настройку и управление. У всех вируталок она будет одинаково смонтирована с одинаковым же именем и путём. Опять же вообще не задействуется сетевой стек для перемещения данных внутри этого общего хранилища.
Настраивается всё это дело в разделе Datacenter ⇨ Directory Mappings. В качестве общей директории выбирается любая папка на гипервизоре. Можно отдельный диск под это выделить.
В Linux монтируеутся, как обычно:
# mount -t virtiofs VM_Share /mnt/VM_Share
В Windows, как я сказал, достаточно установить winfsp и запустить службу, которую она добавит. Служба автоматом создаст отдельный диск, подключенный как virtiofs, использовав его имя.
☝️ С подключенным устройством VirtioFS виртуальная машина не сможет автоматически мигрировать в кластере. Так что для кластеров с автобалансировкой это решение не подходит.
#proxmox