Вопрос или проблема
Некоторое время назад я вручную создал виртуальную машину на своем настольном ПК с FreeBSD.
Она использует том ZFS объемом 32 ГБ, который я создал только для нее:
% zfs list | grep vm
mypool/i386vm 34.3G 4.85T 18.2G -
Я хотел бы управлять ею, используя фронт-энд mv
, предоставленный портом sysutils/vm-bhyve. Как мне это сделать?
Я установил vm_dir
в zfs:mypool
.
Затем я “создал” определение виртуальной машины с помощью vm create little
. Теперь я пытаюсь изменить ее конфигурацию с помощью vm config little
:
loader="bhyveload"
cpu=1
memory=256M
network0_type="virtio-net"
network0_switch="pub"
disk0_type="virtio-blk"
disk0_name="i386vm"
uuid="5339d118-....-fc4dd43d225b"
network0_mac="58:....:f2"
Однако, когда я пытаюсь запустить виртуальную машину с помощью vm start little
, я вижу, что она пытается вызвать bhyveload
с неправильным путем к диску:
bhyveload -c /dev/nmdm-little.1A -m 256M -e smbios.system.uuid=5339d118-b8e4-11ef-9352-fc4dd43d225b -e autoboot_delay=3 -e bhyve_vm_name=little -d /mypool/little/i386vm little
Как мне заставить ее использовать мой существующий том ZFS? Если том нужно переименовать или переместить (в пределах того же пула) — как мне это сделать?
Ответ или решение
Как перенести существующую виртуальную машину под управление vm-bhyve
Если вы уже создали виртуальную машину (VM) на своем диспетчере FreeBSD и теперь хотите управлять ею с помощью фронтенда mv
, предоставляемого пакетом vm-bhyve
, следуйте этим шагам.
1. Подготовка среды
Убедитесь, что необходимые для работы vm-bhyve
модули загружены и пакет установлен. Проверьте наличие соответствующей версии FreeBSD и обновите систему, если это необходимо.
pkg install vm-bhyve
2. Настройка переменной vm_dir
Вы уже указали, что переменная vm_dir
установлена в zfs:mypool
. Убедитесь, что это действительно так, и выполните:
echo 'vm_dir="zfs:mypool"' >> /etc/vm-bhyve.conf
3. Создание конфигурации для существующей VM
Вы создали конфигурацию для вашей ВМ с именем little
. Однако вам нужно сделать некоторые изменения в конфигурации, чтобы вернуть используемый вами ZFS диск. Для этого выполните команду:
vm config little
Затем откорректируйте параметры конфигурации. Например:
loader="bhyveload"
cpu=1
memory=256M
network0_type="virtio-net"
network0_switch="pub"
disk0_type="virtio-blk"
disk0_name="i386vm" # Имя вашего существующего ZFS тома
uuid="5339d118-....-fc4dd43d225b"
network0_mac="58:....:f2"
Убедитесь, что disk0_name
указан правильно для уже существующего тома mypool/i386vm
.
4. Устранение проблемы с неправильным путем к диску
Как вы заметили, bhyveload
пытается извлечь том с неправильным путём. Это происходит потому, что vm-bhyve
ожидает, что диск будет находиться в директории VM. Вам нужно создать символическую ссылку или переместить существующий ZFS том, чтобы vm-bhyve
смог найти его.
Если вы хотите просто переместить ZFS том, выполните следующую команду:
zfs rename mypool/i386vm mypool/little/i386vm
Это создаст необходимую структуру, чтобы vm-bhyve
нашел ваш том.
5. Запуск виртуальной машины
После внесения всех изменений попробуйте снова запустить ВМ:
vm start little
Если возникнут ошибки, внимательно просмотрите вывод и подождите, пока все процессы завершатся. Теперь ваша виртуальная машина должна успешно запуститься с использованием существующего ZFS тома.
Заключение
Перенос уже существующей виртуальной машины под управление vm-bhyve
может показаться сложным, однако, следуя указанным шагам и корректируя конфигурацию соответственно, вы сможете интегрировать ее в вашу среду управления виртуальными машинами. Убедитесь, что все команды выполнены корректно и проверяйте вывод на предмет возможных ошибок, чтобы упростить процесс устранения неполадок.
Если у вас возникли дополнительные вопросы, не стесняйтесь обращаться за помощью. Успехов в управлении вашими виртуальными машинами!