Использование Plan 9 для обмена файлами между хост-системой и виртуальными машинами.
Рассказ о том как настроить общий каталог между виртуальной машиной и хост-системой посредством VirtFS. VirtFS это реализация Plan 9 поверх VirtIO.Общий каталог удобен в случае обмена файлами между виртуальным окружением и хост-системой, тем более что работа обеспечивается быстрым virtio-транспортом.
На хост системе необходимо собрать пакеты sys-apps/attr и sys-libs/libcap. Эти пакеты обеспечивают поддержку расширенных атрибутов и capabilities. Гостевое ядро необходимо собрать с опциями обеспечивающими поддержку Plan 9.
CONFIG_NET_9P=y
СONFIG_NET_9P_VIRTIO=y
CONFIG_9P_FS=y
CONFIG_9P_FS_POSIX_ACL=y
QEMU также должен быть собран с поддержкой расширенных атрибутов и virtfs (--enable-attr --enable-virtfs).
Когда все условия соблюдены запускаем QEMU. Существует два варианта
вариант создания через отдельное утройство
-fsdev local,id=share,path=/mnt/share_9p,security_model=none
-device virtio-9p-pci,fsdev=share,mount_tag=host_9p
или вариант создания через "-virtfs"
-virtfs local,id=share,path=/mnt/share_9p,security_model=none,mount_tag=host_9p
Каталог должен принадлежать пользователю от имени которого запускаем VM. Когда машина запущена можно выполнить монтирование каталога внутри VM. В процессе монитирования используем тэг который указывался в mount_tag
# mount -t 9p -o trans=virtio,version=9p2000.L,posixacl,cache=loose host_9p /mnt/host_9p/
Обязательные опции, используемые при запуске QEMU:
- "-fsdev" используется только совместно с "-device virtio-9p-pci".
- "-virtfs" не имеет зависимостей от других параметров.
- fsdriver: определяет использование драйвера. Доступны local, handle и proxy.
- id: идентификатор присваиваемый виртуальной файловой системе. id не должен содержать в себе цифр. При определении через "-fsdev/-device" параметры для id и fsdev должны совпадать;
- path: каталог внутри хост-системы используемый под нужды virtfs;
- security_model: используемая модель безопасности:
- mapped - использование расширенных атрибутов для хранения прав доступа.
- passthrough - использование обычной модели прав доступа. Права на файлы назначаются посредством setuid()/setgid().
- none - аналог passthrough с тем отличием что ошибки при выполнении chown будут проигнорированы. Это применимо в когда виртуальное окружение запущено не от root;
- fsdev: опция используется в качестве подпараметра -device virtio-9p-pci, где указывается идентификатор назначенный виртуальной файловой системы;
- mount_tag: тэг файловой системы используемый при монтировании внутри гостевого окружения.
- writeout=immediate: позволяет отказаться от использования страничного кэша системы и писать сразу на диск;
- readonly: экспорт каталога в режиме "только чтение". По умолчанию, запись разрешена.
- socket: сокет используемый для обмена данными с virtfs-proxy-helper. Используется при использовании proxy драйвера.
- sock_fd: обмен данными с virtfs-proxy-helper осуществляется через использование файлового дескриптора. Используется при использовании proxy драйвера.
На главную "Virtualizing Linux"
Комментариев нет:
Отправить комментарий