Импорт существующего диска qcow2 или VMDK в Proxmox VE
Пошаговый импорт существующего виртуального диска qcow2, raw или VMDK в Proxmox VE с созданием VM, подключением диска и проверкой загрузки.
Готовую виртуальную машину из другого гипервизора можно перенести в Proxmox VE через импорт её виртуального диска.
На практике чаще всего встречаются форматы:
qcow2
raw
vmdk
В этой инструкции рассматривается только импорт существующего диска в заранее созданную VM и первый запуск гостевой системы.
Подходит для: Proxmox VE 8 и 9
Уровень сложности: средний
Время выполнения: зависит от размера диска и скорости хранилища
Требуемый доступ: root-доступ к узлу Proxmox VE
Что будет рассмотрено
После выполнения инструкции можно будет:
- проверить исходный виртуальный диск;
- передать файл на узел Proxmox VE;
- создать пустую VM;
- импортировать диск через
qm importdisk; - подключить его как
scsi0,sata0илиvirtio0; - настроить порядок загрузки;
- проверить BIOS или UEFI;
- устранить типичные проблемы первого запуска.
Поддерживаемые исходные форматы
Для импорта обычно используют:
qcow2
raw
vmdk
Примеры файлов:
server.qcow2
server.raw
server.vmdk
Формат целевого тома зависит от выбранного storage backend.
Например:
- LVM-thin обычно хранит raw volume;
- ZFS использует zvol;
- directory storage может хранить qcow2 или raw;
- Ceph RBD использует собственный блочный backend.
Подготовка исходной виртуальной машины
До экспорта из старого гипервизора рекомендуется:
- корректно выключить гостевую ОС;
- удалить активные снапшоты;
- завершить незаконченные операции;
- проверить файловую систему;
- сохранить параметры CPU, RAM и сети;
- зафиксировать BIOS или UEFI;
- проверить схему дисковых контроллеров;
- создать резервную копию.
Не копируйте активный виртуальный диск работающей VM без согласованного snapshot-механизма.
Проверка файла на узле Proxmox VE
Скопируйте диск в отдельный временный каталог.
Пример:
mkdir -p /var/lib/vz/import
Проверьте файл:
ls -lh /var/lib/vz/import/
Определите формат:
qemu-img info /var/lib/vz/import/server.qcow2
Пример вывода:
file format: qcow2
virtual size: 64 GiB
disk size: 18 GiB
Проверка целостности qcow2
Для qcow2:
qemu-img check /var/lib/vz/import/server.qcow2
Ожидаемый результат не должен содержать неисправленных ошибок.
Для больших дисков проверка может занять продолжительное время.
Проверка VMDK
qemu-img info /var/lib/vz/import/server.vmdk
VMDK может состоять из:
- небольшого descriptor-файла;
- одного или нескольких data-файлов.
Копируйте все связанные файлы, если VMDK не является монолитным.
Копирование через SCP
С другого Linux-хоста:
scp server.qcow2 root@PROXMOX_IP:/var/lib/vz/import/
Для большого файла удобнее использовать rsync:
rsync -avh --progress server.qcow2 root@PROXMOX_IP:/var/lib/vz/import/
Проверка контрольной суммы
На исходной системе:
sha256sum server.qcow2
На Proxmox VE:
sha256sum /var/lib/vz/import/server.qcow2
Контрольные суммы должны совпадать.
Проверка свободного места
Покажите хранилища:
pvesm status
Проверьте целевой storage.
Для LVM-thin:
lvs -a -o+data_percent,metadata_percent
Для ZFS:
zpool list
zfs list
Для directory storage:
df -h
Учитывайте виртуальный размер диска, а не только фактический размер qcow2-файла.
Выбор VM ID
Покажите следующий свободный ID:
pvesh get /cluster/nextid
В примерах используется:
VM ID: 120
Создание пустой VM через веб-интерфейс
Нажмите:
Create VM
Укажите:
- Node;
- VM ID;
- Name;
- Do not use any media;
- подходящий BIOS;
- подходящий Machine type;
- CPU;
- RAM;
- сеть.
На вкладке диска можно создать временный диск, а затем удалить его до импорта.
Проще и точнее создать VM через CLI.
Создание пустой VM через CLI
Пример:
qm create 120 --name imported-server --memory 4096 --cores 4 --cpu x86-64-v2-AES --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --ostype l26
Проверьте:
qm config 120
Выбор BIOS или UEFI
Если исходная VM использовала legacy BIOS:
qm set 120 --bios seabios
Если использовала UEFI:
qm set 120 --bios ovmf
Для UEFI добавьте EFI-диск:
qm set 120 --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
Замените storage на подходящий.
Неверный выбор BIOS или UEFI — одна из основных причин, по которой импортированная VM не загружается.
Импорт диска
Базовая команда:
qm importdisk VM_ID SOURCE_DISK TARGET_STORAGE
Пример qcow2:
qm importdisk 120 /var/lib/vz/import/server.qcow2 local-lvm
Пример VMDK:
qm importdisk 120 /var/lib/vz/import/server.vmdk local-lvm
Дождитесь завершения операции.
Проверка после импорта
qm config 120
Импортированный том обычно появится как:
unused0
Пример:
unused0: local-lvm:vm-120-disk-0
Подключение импортированного диска как SCSI
qm set 120 --scsi0 local-lvm:vm-120-disk-0
Используйте фактическое имя тома из qm config.
Проверьте:
qm config 120 |
grep -E '^(scsi0|unused)'
Настройка порядка загрузки
qm set 120 --boot order=scsi0
Проверьте:
qm config 120 |
grep '^boot'
Когда использовать SATA
Старая гостевая ОС может не иметь VirtIO-драйверов.
В таком случае временно подключите диск как SATA:
qm set 120 --sata0 local-lvm:vm-120-disk-0
Установите порядок загрузки:
qm set 120 --boot order=sata0
После установки VirtIO-драйверов диск можно перевести на SCSI.
Когда использовать VirtIO Block
Вариант:
qm set 120 --virtio0 local-lvm:vm-120-disk-0
Для современных Linux-гостей обычно предпочтительнее:
VirtIO SCSI single + scsi0
Проверка итоговой конфигурации
qm config 120
Основные параметры могут выглядеть так:
bios: seabios
boot: order=scsi0
cores: 4
memory: 4096
name: imported-server
net0: virtio=...,bridge=vmbr0
scsi0: local-lvm:vm-120-disk-0
scsihw: virtio-scsi-single
Первый запуск без сети
Чтобы избежать конфликта IP с исходной VM, перед первым запуском временно отключите сеть.
В веб-интерфейсе:
VM → Hardware → Network Device → Edit → Disconnect
Через CLI сначала посмотрите полную строку:
qm config 120 |
grep '^net0'
Затем добавьте:
link_down=1
Не теряйте MAC-адрес и остальные параметры интерфейса.
Запуск VM
qm start 120
Проверьте:
qm status 120
Откройте консоль в веб-интерфейсе.
Если VM не загружается
Проверьте:
- BIOS или UEFI;
- Boot Order;
- тип дискового контроллера;
- наличие EFI-диска;
- схему разделов;
- драйверы VirtIO;
- целостность исходного диска.
Ошибка No bootable device
Проверьте:
qm config 120 |
grep -E '^(bios|boot|scsi|sata|virtio|efidisk)'
Попробуйте:
- изменить SeaBIOS на OVMF;
- изменить OVMF на SeaBIOS;
- подключить диск как SATA;
- проверить EFI System Partition;
- проверить загрузчик внутри гостя.
Проверка разметки через rescue ISO
Если VM не загружается, подключите установочный или rescue ISO.
Проверьте диски внутри rescue-среды:
lsblk -f
Проверьте GPT:
sudo fdisk -l
Проверьте EFI-раздел:
sudo parted -l
Восстановление GRUB для legacy BIOS
Общий порядок из rescue-среды:
sudo mount /dev/sdXN /mnt
При необходимости подключите отдельные разделы /boot.
Затем:
sudo grub-install --boot-directory=/mnt/boot /dev/sdX
Команды зависят от фактической разметки.
Не выполняйте восстановление загрузчика без понимания структуры диска.
Восстановление UEFI-загрузки
Для UEFI требуется:
- EFI System Partition;
- OVMF;
- подключённый EFI-диск Proxmox;
- корректная запись загрузчика.
В rescue-среде проверьте:
lsblk -f
EFI-раздел обычно имеет FAT32.
Импорт Windows VM
Для Windows до миграции рекомендуется установить VirtIO-драйверы в исходной системе.
Если драйверов нет, подключите системный диск как SATA.
Дополнительно подключите VirtIO ISO и установите драйверы внутри Windows.
После этого можно перевести диск на SCSI.
Смена сетевого адаптера
Если исходная система не содержит VirtIO network driver, временно используйте:
Intel E1000
После установки VirtIO-драйвера переключите на:
VirtIO
Для Linux VirtIO обычно поддерживается штатно.
Проверка Linux после загрузки
Внутри гостевой ОС:
lsblk
df -hT
Проверьте ошибки:
journalctl -b -p err --no-pager
Проверьте failed units:
systemctl --failed
Проверка сетевой конфигурации
Имя интерфейса может измениться.
Проверьте:
ip -br link
ip -br addr
Например, вместо старого:
ens160
может появиться:
ens18
Обновите Netplan или другую сетевую конфигурацию.
Изменение hostname и IP
До подключения сети измените:
- hostname;
- статический IP;
- DNS;
- gateway;
- machine-id при необходимости;
- идентификаторы monitoring agent;
- backup agent;
- application node ID.
Это предотвращает конфликт с исходной VM.
Установка QEMU Guest Agent
В Ubuntu или Debian:
sudo apt update
sudo apt install -y qemu-guest-agent
Включите:
sudo systemctl enable --now qemu-guest-agent
На узле:
qm set 120 --agent enabled=1
Проверка:
qm agent 120 ping
Подключение сети после проверки
После изменения IP подключите интерфейс обратно.
Проверьте внутри VM:
ip addr
ip route
Проверьте связь:
ping -c 3 GATEWAY_IP
Проверьте DNS:
getent hosts example.com
Проверка приложения
Проверьте:
- системные сервисы;
- базу данных;
- mount point;
- лицензии;
- сетевые зависимости;
- cron;
- systemd timers;
- monitoring;
- backup.
Импорт диска переносит содержимое VM, но не гарантирует совместимость всех виртуальных устройств.
Конвертация диска заранее
При необходимости формат можно преобразовать до импорта.
VMDK в qcow2:
qemu-img convert -p -f vmdk -O qcow2 source.vmdk converted.qcow2
qcow2 в raw:
qemu-img convert -p -f qcow2 -O raw source.qcow2 converted.raw
Проверьте результат:
qemu-img info converted.qcow2
Обычно qm importdisk умеет выполнить необходимое преобразование автоматически.
Удаление временного файла
Удаляйте исходный файл только после:
- успешного импорта;
- загрузки VM;
- проверки файловой системы;
- проверки приложения;
- создания новой резервной копии.
Удаление:
rm -f /var/lib/vz/import/server.qcow2
Перед выполнением дважды проверьте путь.
Создание backup после миграции
После успешной проверки:
vzdump 120 --storage BACKUP_STORAGE --mode snapshot --compress zstd
Дождитесь:
TASK OK
Это создаст первую резервную копию VM уже в формате Proxmox VE.
Типичные проблемы
qm importdisk сообщает, что файл не найден
Проверьте:
ls -lh /var/lib/vz/import/
Используйте абсолютный путь.
Недостаточно места
Проверьте:
pvesm status
df -h
Учитывайте виртуальный размер исходного диска.
Импортированный диск остался unused0
Это нормально.
Подключите его как:
qm set VM_ID --scsi0 STORAGE_ID:VOLUME_NAME
VM не видит диск
Проверьте контроллер и boot order.
Для старой ОС попробуйте SATA.
Windows показывает BSOD после смены контроллера
Вероятно, отсутствует VirtIO-драйвер.
Верните SATA, загрузите Windows, установите VirtIO-драйверы и повторите переключение.
Linux загружается, но нет сети
Проверьте новое имя интерфейса:
ip -br link
Исправьте Netplan или другой сетевой конфиг.
UEFI VM не загружается
Проверьте:
bios: ovmf;- наличие
efidisk0; - EFI System Partition;
- Boot Order;
- Secure Boot keys.
VM загружается, но сервисы не работают
Проверьте:
systemctl --failed
journalctl -b -p err --no-pager
Также проверьте пути дисков, сетевые интерфейсы и mount point.
Безопасный порядок импорта
- Корректно выключить исходную VM.
- Проверить исходный диск.
- Скопировать его на Proxmox VE.
- Сверить SHA-256.
- Проверить целевой storage.
- Создать пустую VM.
- Выбрать правильный BIOS или UEFI.
- Импортировать диск.
- Подключить его к VM.
- Настроить boot order.
- Первый раз запустить без сети.
- Изменить уникальные параметры.
- Проверить приложение.
- Подключить сеть.
- Создать новый backup.
Быстрый набор команд
Проверить диск:
qemu-img info /var/lib/vz/import/server.qcow2
Создать VM:
qm create 120 --name imported-server --memory 4096 --cores 4 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single
Импортировать:
qm importdisk 120 /var/lib/vz/import/server.qcow2 local-lvm
Подключить:
qm set 120 --scsi0 local-lvm:vm-120-disk-0
Настроить загрузку:
qm set 120 --boot order=scsi0
Итог
После выполнения инструкции:
- исходный qcow2, raw или VMDK проверен;
- создана пустая VM;
- виртуальный диск импортирован;
- диск подключён и добавлен в Boot Order;
- проверены BIOS и UEFI;
- выполнен первый запуск без сетевого конфликта;
- проверены гостевая ОС и приложение;
- создан новый backup в Proxmox VE.
Импорт считается завершённым только после успешной загрузки, проверки данных и создания резервной копии новой VM.