[libvirt-qemu] Пробрасываем папку с хоста в виртуалку

Иногда не всегда уместно создавать для виртуалки отдельный диск для хранения данных, т.к. он занимает много места и в нем вообще может не быть необходимости, а когда этим диском надо поделиться с кем-нибудь еще, начиная от соседней виртуалки и заканчивая lxc контейнером, с ним совсем неудобно.

Мало инфы нашел об этом в интернете, поэтому напишу тут.

Fast setup

Дока есть тут: https://wiki.qemu.org/Documentation/9psetup

Добавляем в конфиг виртуалки:

<filesystem type="mount" accessmode="mapped">
  <source dir="/mnt/asdf/"/>
  <target dir="mounttag"/>
</filesystem>

Где source — Путь до директории на хосте, а target — произвольный тег для гостя.

Монтируем на госте папку таким образом:

losted@adm:~$ sudo mount -t 9p -o trans=virtio mounttag /mnt

Готово, папка примонтирована:

losted@adm:~$ ll /mnt
total 4536096
drwxr-xr-x  5 losted root         4096 Sep 27 12:57  ./
drwxr-xr-x 22 root   root         4096 Aug 10 20:15  ../
drwxrwxr-x  2 losted losted      12288 Sep 21 22:28  devops/
drwxrwxr-x  2 losted losted      20480 Sep 23 11:00  dev_ops_true/
drwxrwxr-x  3 losted losted       4096 Sep 27 12:57  streams/
-rw-rw-r--  1 losted losted  639952799 Mar 24  2021 'Настоящее и будущее DevOps-gvN-XW6jmSM.mkv'
-rw-rw-r--  1 losted losted 4004952357 Sep 20 16:28 'Трансляция Saint HighLoad++ 2021, 20.09, Гриффиндор-wG4u5XEl-vo.mkv'

losted@adm:~$ df -h /mnt/
Filesystem      Size  Used Avail Use% Mounted on
mounttag        2.7T  2.2T  355G  87% /mnt

Qemu-guest-agent для работы проброса необязателен.

Подробнее

Права доступа

При монтировании надо следить за правами доступа. Чтобы это все вообще работало, надо чтобы папка на хосте принадлежала тому же юзеру/группе, что и владельцу процесса qemu-system.

root@microsrv >> /mnt/lxc/storage/home >> ll
итого 20K
...
drwxrwxrwx+  7 libvirt-qemu libvirt-qemu 4,0K сен 27 16:41 streams/

Если надо, чтобы несколько юзеров/групп были владельцами файлов/папок, то удобно воспользоваться ACL:

root@microsrv  /mnt/lxc/storage/home  setfacl -R -m u:www-data:rwx streams/
root@microsrv  /mnt/lxc/storage/home  getfacl streams
# file: streams
# owner: libvirt-qemu
# group: libvirt-qemu
user::rwx
user:www-data:rwx
group::rwx
mask::rwx
other::rwx

Теперь права на владение имеют юзеры www-data и libvirt-qemu. Таким образом дали доступ для веб-сервера и qemu

Опции монтирования

Вот тут и тут есть параметры XMLки для хоста и монтирования на госте. Из важных могу отметить security_modelи access — настройки доступа к содержимому. Я оставил все по умолчанию — mapped и user.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *