Автоматическое монтирование файловой системы с хоста при запуске виртуальной машины
Как в libvirt настроить автоматическое монтирование virtio-9p файловой системы с хоста во время запуска виртуальной машины
Для целей разработки у меня созданы виртуальные машины с Docker/Kubernetes, к которым подключаются директории с хостовой машины. Проблема в том, что mount
можно выполнить после авторизации на гостевой машине, приложения использующие эту директории запускаются автоматически с запуском ОС.
Здесь сразу надо сказать, что последующие настройки выполняются на гостевой машине с ОС Ubuntu. Скорее всего, они подойдут и для Debian-based систем, но утверждать не буду. Насчет остальных не знаю.
Подключение FS к виртуальной машине
Конфиг libvirt
<filesystem type="mount" accessmode="mapped">
<source dir="/home/ra/SHARE"/>
<target dir="/SHARE"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</filesystem>
Через GUI virt-manager
Настройка виртуальной машины
Заходим в виртуальную машину и выполняем все последующие действия там. Всего шага 2: подключить модули к ядру; настроить подключение файловой системы.
Добавление модулей 9p в initramfs
Для того чтобы все заработало, сначала нужно подключить необходимые модули ядра. Для этого открываем для редактирования файл /etc/initramfs-tools/modules
:
$ sudo vim /etc/initramfs-tools/modules
Добавляем туда следующие записи:
9p
9pnet
9pnet_virtio
Получится примерно так:
# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax: module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
9p
9pnet
9pnet_virtio
Обновляем initramfs:
$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-5.15.0-78-generic
Настраиваем fstab
Создаем папку в которую будет монтироваться FS:
$ mkdir ~/SHARE
Для автоматического монтирования, нужно добавить соответствующую запись в /etc/fstab
$ sudo vim /etc/fstab
Добавляем следующую запись (для настроек приведенных выше):
# <file system> <mount point> <type> <options> <dump> <pass>
/SHARE ~/SHARE 9p trans=virtio,version=9p2000.L 0 0
Должно получится, примерно, так:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/ubuntu-vg/ubuntu-lv during curtin installation
/dev/disk/by-id/dm-uuid-LVM-rus9weUDDepgrZUa6OrbPcorI7On4JdkLercJtjN0OR2m2X06vXdHZdNrnqUGlGC / ext4 defaults 0 1
# /boot was on /dev/vda2 during curtin installation
/dev/disk/by-uuid/9d97efc1-bd88-46a2-84af-78af3b49932c /boot ext4 defaults 0 1
/swap.img none swap sw 0 0
/SHARE ~/SHARE 9p trans=virtio,version=9p2000.L 0 0
Готово.
После перезагрузки, наша директория с хоста будет подключена как файловая система в папку ~/SHARE
на гостевой машине.
Теги: Linux, Виртуальные машыны, VM