Как изменить местоположение хранения виртуальных машин в программе qemu-kvm?

Как можно перенести папку с образами виртуальных машин на другой физический диск, учитывая ограничения по месту на диске и невозможность создания новых виртуальных машин из-за нехватки места? После монтирования диска в /mnt, каким образом можно переместить папку images со всеми файлами формата qcow2 на новый диск?
  • 18 февраля 2024 г. 6:58
Ответы на вопрос 2
Для изменения местоположения хранения виртуальных машин в программе QEMU-KVM, можно воспользоваться опцией -drive в командной строке при запуске виртуальной машины. Например:

```
qemu-kvm -drive file=/path/to/new/location/image.qcow2,format=qcow2
```

Для перемещения папки с образами виртуальных машин на другой физический диск, следует выполнить следующие шаги:

1. Создайте новую папку на другом физическом диске, например /mnt/new_location.

2. Смонтируйте новый диск в папку /mnt.

3. Скопируйте содержимое папки images (с образами виртуальных машин) на новый диск с помощью команды cp:

```
cp -r /path/to/old_location/images /mnt/new_location
```

4. После копирования убедитесь, что все файлы формата qcow2 были успешно скопированы.

5. Далее, можно удалить старую папку images или оставить ее как резервную копию.

6. Для того чтобы QEMU-KVM начал использовать новый путь к образам виртуальных машин, обновите пути к образам в файле конфигурации виртуальных машин.

После выполнения данных шагов, виртуальные машины должны корректно работать с образами, находящимися на новом физическом диске.
Алгоритм движух такой будет: 
# Удаляешь pool default
sudo virsh pool-undefine default


## Чтобы в дальнейшем при создании/старте ВМ не было ошибки Permission denied (отказано в доступе) к созданному ниже каталогу и подпапки в нём libvirt/images, устанавливаем правильные ACL-права доступа для пользователя libvirt-qemu, например, в Домашнем каталоге (или в другом...):
sudo setfacl -m u:libvirt-qemu:rx /home/user/

вместо user ваше имя Пользователя

## Создание где-либо папки (каталога) libvirt и подпапки images (название любое):
mkdir -p /home/user/libvirt/images


## Создание pool-а с именем default в созданном выше где-либо папки (каталога) libvirt и подпапки images:
virsh pool-define-as --name default --type dir --target /home/user/libvirt/images


## Запуск созданного pool-а default:
virsh pool-start default


## Помещение созданного pool-а default в автозагрузку, чтобы после перезагрузки системы от стартовал вместе с ней:
virsh pool-autostart default


И усё...

Я обычно создаю ВМ тоже через консоль, например так:
virt-install --virt-type=kvm --name ubuntu --ram=2048 --vcpus=2 --cpu host --hvm --disk path=/home/user/libvirt/images/ubuntu,size=5,format=raw --cdrom /home/user/Загрузки/mini.iso --osinfo detect=on,require=off --graphics spice --boot uefi --destroy-on-exit &
Похожие вопросы