Автоматическое монтирование файловой системы с хоста при запуске виртуальной машины

Как в 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

Комментарии ()