Создание новой виртуальной машины Proxmox с использованием существующего диска
При развертывании виртуальной машины в веб-интерфейсе Proxmox мы можем только создать новый диск, но не можем подключить имеющийся. Для решения нашей задачи необходимо работать в командной строке Linux shell. Рассмотрим процесс по шагам.
Подготовка к работе
Создание виртуальной машины без диска
Добавление имеющегося диска к новой машине
Настройка и запуск виртуальной машины
Дополнительные материалы
Предварительные действия
Прежде чем начать процесс создания новой виртуальной машины, мы должны скопировать существующий виртуальный диск на сервер Proxmox.
Мы не будем подробно рассматривать данный процесс. Это можно сделать с помощью утилит scp, rsync, winscp и других.
Предполагается, что на сервере Proxmox уже есть виртуальный диск. Так условимся:
- Идентификатор создаваемой машины будет 112.
- Хранилище виртуальных машин в Proxmox будет zfs_data.
- Диск, который у нас уже есть будет называться vm-old-disk-X.qcow2, где X — номер диска.
Приступим.
Создание новой виртуальной машины
Подключимся к хосту Proxmox по SSH (или можно зайти в shell из веб-интерфейса). Посмотрим список виртуальных машин:
qm list
Смотрим, какие есть идентификаторы и определяем для себя незанятый. Как договорились выше, это будет 112. Для удобства, создадим переменную VM_ID со значением данного номера:
VM_ID=112
* в моих примерах мы будем работать с виртуальной машиной с идентификатором 112.
Создаем виртуальную машину:
qm create ${VM_ID} --memory 4096 --sockets 2 --cores 4 --cpu cputype=host -ostype win11 --onboot yes --name server --acpi yes --kvm yes --bios ovmf --machine q35 --agent enabled=1 --scsihw virtio-scsi-pci -net0 virtio,bridge=vmbr0
* важно отметить, что для создания виртуальной машины мы обязаны передать идентификатор, который будет ей присвоен. Мы это делаем в нашей переменной VM_ID.
Обратите внимание на набор опций создания виртуальной машины. Это лично мой пример. Вам же стоит изучить команду и, исходя из потребностей, создать свою виртуальную машину (в идеале, она должна быть с тем же набором параметром, что старая виртуальная машина). Мне показалось удобным руководство на странице сайта docs.altlinux.org.
Импорт диска
Вышеописанная команда создать виртуальную машину без диска. Нам нужно импортировать имеющийся диск в созданную машину. Но для начала, смотрим список хранилищ:
pvesm status
Система покажет список устройств хранения, нам нужно определиться с тем, где мы хотим разместить диск виртуальной машины. В нашем примере, это zfs_data.
Нам осталось только выполнить импорт диска. Переходим в каталог, куда мы заранее скопировали виртуальный диск и вводим команду:
qm importdisk ${VM_ID} ./vm-old-disk-1.qcow2 zfs_data --format qcow2
* где:
- ${VM_ID} — переменная с идентификатором виртуальной машины, к которой будет подключен новый диск.
- vm-old-disk-1.qcow2 — имя нашего старого диска.
- zfs_data — хранилище, на котором будет размещен диск нашей новой виртуальной машины.
- format — формат диска.
После ввода команды система начнет копирование старого диска с конвертацией и созданием нового, который уже будет подключен к виртуальной машине. В зависимости от его объема, процесс может занять много времени. В итоге, мы должны получить что-то на подобие:
Successfully imported disk as 'unused0:zfs_data:vm-112-disk-0'
Обратите внимание, что теперь наш диск называется vm-112-disk-0.
Также обратите внимание на unused0 — это означает, что диск был подключен к виртуальной машине, но находится в неактивном состоянии. Чтобы это исправить, вводим команду:
qm set ${VM_ID} --scsi0 zfs_data:vm-${VM_ID}-disk-0
Мы подключили новый диск к контроллеру scsi0.
Готово. Если у нас несколько дисков, которые нам нужно подключить к виртуальной машине, повторяем для них те же действия, например:
qm importdisk ${VM_ID} ./vm-old-disk-2.qcow2 zfs_data --format qcow2
qm set ${VM_ID} --scsi1 zfs_data:vm-${VM_ID}-disk-1
Если посмотреть на виртуальную машину в веб-интерфейсе, мы должны увидеть что-то на подобие:
Запуск виртуальной машины
Чтобы виртуальная машина начала загружать операционную систему, необходимо в опциях указать порядок загрузки, например:
qm set ${VM_ID} --boot order=scsi0
* в данном примере мы хотим, чтобы загрузка передавалась устройству scsi0 (в нашем примере это первый импортированный диск).
Теперь можно запустить виртуальную машину. Если мы все сделали правильно, то установленная ранее система должна загрузиться.
Старые диски, которые мы предварительно загрузили на гипервизор можно удалить:
rm -f ./vm-old-disk-1.qcow2
Читайте также
Другая полезная информация по виртуализации:
1. Конвертирование виртуального диска Proxmox в диск VMware.
2. Перенос виртуальной машины с гипервизора VMware (ESX) на Proxmox.