× К оглавлению На главную Об авторе

   Дата и время публикации:

Проблема и решение

1. Суть проблемы

В том, что физически GNOME Boxes свои образы сохраняет в директории $HOME/.local/share/gnome-boxes/images, а в директории $HOME/.config/libvirt/qemu/ находится конфигурационный файл XML [3.2], поиск которых показан в дампе 1.1 и дампе 1.2

Дамп 1.1

~$ find $HOME/.local/share/gnome-boxes/images -name "debian10-uni*" -type f -print 
/home/user/.local/share/gnome-boxes/images/debian10-uni

~$ find $HOME/.config/libvirt -name "debian10-uni*" -type f -print 
/home/user/.config/libvirt/qemu/debian10-uni.xml

Поэтому, так как GNOME Boxes основывается на среде управления Qemu-эмулятором libvirt, которая запускается параллельно, как показано в дампе 1.2, вместе с virtlogd в выводе программы procps_ptree [3.3].

Дамп 1.2

~$ procps-ptree
114786   1892      Sl        user  0.1  0.1   01-19 16:48:56     00:01:30       libvirtd
160874   1892      Sl        user  1.6  2.5         07:46:32     00:04:37       gnome-boxes
173735   1892      Sl        user  0.0  0.0         09:00:05     00:00:00       virtlogd
173739   1892      Sl        user 10.5 36.0         09:00:05     00:21:05       qemu-system-x86

Поэтому мне нужно было найти решение, как клонировать образ гостевой ОС debian10-uni, который можно запускать в GNOME Boxes не только из $HOME/.local/share/gnome-boxes/images, но и выбранной в произвольной директории.

2. Решение

По умолчанию, GNOME Boxes использует qemu:///session ( сеанса с правами пользователя) вместо qemu:///system (сеанс c правами суперпользователя), что нужно учитывать, когда производится подключение к менеджеру libvirt с использованием пользовательского интерфейса, как показано в дампе 2.1

Дамп 2.1

$ virsh -c qemu:///session 
Добро пожаловать в virsh — интерактивный терминал виртуализации.

Введите  «help» для получения справки по командам
         «quit», чтобы завершить работу и выйти.

Virsh # list
 ID   Имя            Состояние
--------------------------------
 8    debian10-uni   работает

Как показано в дампе 2.1, через опцию устанавливается соединение с гипервизором вместо ввода команды connect qemu:///session. А после, получить полный список всех запущенных или нет гостевых машин, которые имеют следующие доменные имена, как показано в дампе 2.2 .

Дамп 2.2

virsh # list --all
 ID   Имя            Состояние
--------------------------------
 8    debiantestin   работает
 -    debian10-uni   выключен
 -    debian9-univ   выключен
...

Такое же, как показано в дампе 2.2, будет наблюдаться, если virsh запустить из под пользователя без ключей и ввода в нем команды connect, что позволило мне выполнить клонирование существующей машины с использованием команды virt-clone. При этом достаточно находится в той директории, например, /home/user/images/, в которой собираетесь хранить образ виртуальной машины. как показано в дампе 2.3

Дамп 2.2

 
/home/user/images/$ virt-clone --original=debian10-uni --name=debian10-uni-vhost2 -f debian10-uni-vhost2-vm.img --mac=52:54:00:8b:70:48 --check mac_in_use=off
...
Клон «debian10-uni-vhost2» успешно создан.

В командной строке, как показано в дампе 2.3, в опции -f указан файл (debian10-uni-vhost2-vm.img) куда будет сохранять резервная копия оригинала домена гостевой ОС (опция --original) под новым именем debian10-uni-vhost2 (опция --name).

Под тем же именем, как в опции, после нормального завершения будет создан файл debian10-uni-vhost2.xml в директории $HOME/.config/libvirt/qemu/ , копию которого рекомендую держать вместе с образом. При этом домен debian10-uni для клонирования в debian10-uni-vhost2.xml должен быть выключен, иначе все закончится с ошибкой.

Соответственно, если вдруг нужно перенести образ ручками на другой центральный узел (гипервизоре), в конфигруации XML атрибуте file элемента source указать абсолютный путь к образу гостевой машины в той директории, где он находится, как в случае с директорией /home/user/vm-images, что показано в листинге 2.4

Листинг 2.4

...
  
    /usr/bin/qemu-system-x86_64
    
      
      
      
...

При этом рекомендую вместе с образом, который помещен в /home/user/vm-images, туда же сделать резервную копию конфигурации XML из директории $HOME/.config/libvirt/qemu/ , как в моем случае это был файл debian10-uni-vhost2.xml и показано в дампе 2.5

Дамп 2.2

/home/user/images/$ cp $HOME/.config/libvirt/qemu/debian10-uni-vhost2.xml .

Как показала практика, в Debian-11(на момент публикации, для версии gnome-boxes 3.38.2) уже не надо было вносить правки в .config/gnome-boxes/sources/QEMU\ Session, чтобы можно было запускать из под gnome-boxes образы с виртуальными машинами.

3. Библиография

3.1 Move Virtual Machine Image to Another Host Using GNOME Boxes

3.2 GNOME BOXES. БЕЗОПАСНОЕ ИСПОЛЬЗОВАНИЕ

3.3 procps_ptree

3.4 HOW TO SHARE A VM WITH GNOME BOXES

3.5 Clone kvm/qemu VM to a different server