StratoVirt поддерживает создание моментальных снимков приостановленной виртуальной машины (ВМ) в виде шаблона ВМ. Этот шаблон можно использовать для быстрого запуска новой ВМ. Быстрый запуск пропускает этапы загрузки ядра и инициализации пользовательского пространства, что позволяет запустить ВМ за очень короткое время.
Сначала создаём ВМ StratoVirt:
$ ./stratovirt \
-machine microvm \
-kernel path/to/vmlinux.bin \
-append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
-drive file=path/to/rootfs,id=rootfs,readonly=off,direct=off \
-device virtio-blk-device,drive=rootfs,id=rootfs \
-qmp unix:path/to/socket,server,nowait \
-serial stdio
После загрузки ВМ приостанавливаем её с помощью QMP:
$ ncat -U path/to/socket
{"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
{"execute":"stop"}
{"event":"STOP","data":{},"timestamp":{"seconds":1583908726,"microseconds":162739}}
{"return":{}}
Когда ВМ находится в приостановленном состоянии, безопасно создать моментальный снимок ВМ в указанный каталог с помощью QMP.
$ ncat -U path/to/socket
{"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
{"execute":"migrate", "arguments":{"uri":"file:path/to/template"}}
{"return":{}}
В указанном каталоге на системе будут созданы два файла.
$ ls path/to/template
memory state
Файл state
содержит данные о состоянии устройств ВМ. Файл memory
содержит данные гостевой памяти ВМ. Размер файла определяется размером гостевой памяти ВМ.
Восстановите из шаблона ВМ с помощью следующей команды:
$ ./stratovirt \
-machine microvm \
-kernel path/to/vmlinux.bin \
-append "console=ttyS0 pci=off reboot=k quiet panic=1 root=/dev/vda" \
-drive file=path/to/rootfs,id=rootfs,readonly=off,direct=off \
-device virtio-blk-device,drive=rootfs,id=rootfs \
-qmp unix:path/to/socket,server,nowait \
-serial stdio \
-incoming file:path/to/template
Конфигурация устройства должна быть такой же, как у шаблонной ВМ. Можно изменить количество процессоров, размер гостевой памяти, номер и тип устройства. Для файла диска можно использовать только предыдущий файл или его резервные копии. После этого ВМ успешно создаётся из шаблона.
Используйте команду QMP query-migrate
, чтобы проверить состояние моментального снимка:
$ ncat -U path/to/socket
{"QMP":{"version":{"StratoVirt":{"micro":1,"minor":0,"major":0},"package":""},"capabilities":[]}}
{"execute":"query-migrate"}
{"return":{"status":"completed"}}
Теперь существует 5 состояний во время моментального снимка:
None
: Ресурс не подготовлен полностью.Setup
: Ресурс настроен, готов к моментальному снимку.Active
: В процессе моментального снимка.Completed
: Моментальный снимок выполнен успешно.Failed
: Моментальный снимок не удался.Поддержка моментальных снимков и восстановления для типов машин:
microvm
q35
(на платформе x86_64)virt
(на платформе aarch64).Некоторые устройства и функции пока не поддерживают моментальные снимки:
vhost-net
vfio
balloon
hugepage
,mem-shared
,backend file of memory
pmu
sve
gic-version=2
.Атрибуты некоторых устройств нельзя изменить:
virtio-net
: macvirtio-blk
: file (только обычный файл или скопированный файл), serial_numdevice
: bus, addrsmp
m
.Для типа машины microvm
, если используется hot-replace
перед моментальным снимком, добавьте вновь заменённое устройство в команду восстановления.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )