Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

Прошу прощения за рекламу на сайте. Я постарался сделать это максимально ненавязчиво и по минимуму. При чтении заинтересовавших вас статей она не будет вам мешать.
И если есть возможность поставить мой сайт в исключения у блокировщика рекламы, я буду очень признателен вам.

Как добавить существующую виртуальную машину KVM в только что установленный KVM/QEMU

Как добавить существующую виртуальную машину KVM в только что установленный KVM/QEMU

 

 

 

Если у вас есть готовая виртуальная машина (ВМ) KVM — например, образ диска в формате qcow2 и XML-файл с описанием ВМ — и вы только что установили KVM/QEMU на Linux, эта статья поможет вам правильно добавить и запустить эту ВМ через libvirt. Предполагается, что установка KVM и libvirt уже выполнена, и вы работаете от имени обычного пользователя, который имеет права на выполнение `sudo` для административных задач.


Что нам понадобится

  • Образ диска виртуальной машины (например, `vm-image.qcow2`)
  • XML-файл с описанием ВМ (например, `vm.xml`)
  • Доступ к терминалу с возможностью выполнять `sudo`
  • Установленные пакеты: `qemu-kvm`, `libvirt-daemon`, `libvirt-clients`, `virt-manager` (графический менеджер опционально)

Шаг 1. Подготовка файлов

Копирование образа диска

Обычно образы дисков хранятся в `/var/lib/libvirt/images/`. Для этого нужно права администратора.

sudo cp /путь/к/vm-image.qcow2 /var/lib/libvirt/images/
sudo chown libvirt-qemu:kvm /var/lib/libvirt/images/vm-image.qcow2
sudo chmod 640 /var/lib/libvirt/images/vm-image.qcow2
  • `sudo` — требуется, так как `/var/lib/libvirt/images/` — системная директория.
  • Меняем владельца на `libvirt-qemu:kvm`, чтобы процесс libvirt имел доступ.

Если вы хотите хранить образы в другом месте, убедитесь, что права доступа позволяют libvirt читать и писать файлы.

Помещение XML-файла

XML-файлы виртуальных машин обычно хранятся в `/etc/libvirt/qemu/`, доступ к которой также требует прав администратора.

sudo cp /путь/к/vm.xml /etc/libvirt/qemu/

Шаг 2. Проверка и корректировка XML

Откройте XML-файл для редактирования (можно с помощью `nano` или `vim`):

sudo nano /etc/libvirt/qemu/vm.xml

Убедитесь, что в разделе `` путь к файлу образа совпадает с реальным расположением, например:

<source file='/var/lib/libvirt/images/vm-image.qcow2'/>

Если вы храните образ в другом месте, исправьте путь.

Проверьте другие параметры, например, имя ВМ (``), UUID (при необходимости можно сгенерировать новый), настройки сети и т.д.


Шаг 3. Импорт (определение) виртуальной машины в libvirt

Теперь, когда файлы на месте, нужно зарегистрировать ВМ в libvirt.

Выполните от имени обычного пользователя с правами `sudo`:

sudo virsh define /etc/libvirt/qemu/vm.xml

Если вы хотите, чтобы обычный пользователь мог управлять ВМ через `virsh` без `sudo`, нужно добавить его в группу `libvirt`:

sudo usermod -aG libvirt $(whoami)

После этого выйдите из сессии и войдите заново, чтобы обновились группы.


Шаг 4. Запуск виртуальной машины

Теперь можно запустить ВМ:

virsh start vm-name

где `vm-name` — имя, указанное в XML в теге ``.

Если команда выдаёт ошибку о недостатке прав, попробуйте с `sudo`:

sudo virsh start vm-name

Шаг 5. Проверка состояния виртуальных машин

Чтобы увидеть список всех ВМ (запущенных и выключенных), выполните:

virsh list --all

Дополнительно: графический менеджер

Если вы предпочитаете графический интерфейс, установите `virt-manager`:

sudo apt install virt-manager   # для Debian/Ubuntu
sudo dnf install virt-manager   # для Fedora

Запускайте его от имени обычного пользователя:

virt-manager

Он автоматически подключится к локальному демону libvirt и покажет список виртуальных машин.


Частые проблемы и советы

  • Права доступа: libvirt/qemu должен иметь доступ к файлам образа и XML. Если ВМ не запускается, проверьте владельца и права.
  • SELinux/AppArmor: если включены, они могут блокировать доступ. Временно отключите или настройте правила.
  • Логи: если ВМ не запускается, смотрите логи `/var/log/libvirt/qemu/vm-name.log` и системный журнал (`journalctl -xe`).
  • Обновление групп: после добавления пользователя в группу `libvirt` обязательно перезайдите в систему.

Резюме команд

ДействиеКомандаОт имени
Копирование образа`sudo cp ... /var/lib/libvirt/images/`root (через sudo)
Изменение прав образа`sudo chown libvirt-qemu:kvm ...`root (через sudo)
Копирование XML-файла`sudo cp ... /etc/libvirt/qemu/`root (через sudo)
Редактирование XML`sudo nano /etc/libvirt/qemu/vm.xml`root (через sudo)
Определение ВМ в libvirt`sudo virsh define /etc/libvirt/qemu/vm.xml`root (через sudo)
Добавление пользователя в группу`sudo usermod -aG libvirt $(whoami)`root (через sudo)
Запуск ВМ`virsh start vm-name`обычный пользователь (если в группе libvirt) или с sudo
Просмотр списка ВМ`virsh list --all`обычный пользователь

 

23 июня 2025, 18:01    Александр Linux 0    141 0

 

 

 

 



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

    Вы должны авторизоваться, чтобы оставлять комментарии.