Страницы

Сохранить статью у себя в соцсети:

суббота, 30 июня 2012 г.

§ File exchange between host and VM.

Использование 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"

Комментариев нет:

Отправить комментарий

Популярные сообщения

Профиль в Google+ Яндекс цитирования Яндекс.Метрика