Вики / Хранилище и ФС
qemu-img (образы дисков ВМ)
Создание и обслуживание дисков qcow2 — overlay, конвертация, изменение размера.
qemu-img управляет образами дисков виртуальных машин (kvm-libvirt). Самый частый
формат — qcow2: тонкое выделение (растёт по мере записи), снимки, overlay-цепочки.
qemu-img info disk.qcow2 # формат, virtual/actual size, backing-файл
qemu-img info --backing-chain vm.qcow2 # вся цепочка overlay → backing
qemu-img create -f qcow2 disk.qcow2 20G # создать пустой 20 ГБ qcow2
qemu-img check disk.qcow2 # проверить целостность образа
# overlay поверх «золотого» образа (быстрый клон, только дельта пишется в overlay)
qemu-img create -f qcow2 -F qcow2 -b golden.qcow2 vm1.qcow2
# конвертация форматов
qemu-img convert -O qcow2 disk.raw disk.qcow2 # raw → qcow2
qemu-img convert -O raw disk.qcow2 disk.raw # qcow2 → raw
qemu-img convert -c -O qcow2 src.qcow2 small.qcow2 # -c: сжать при конвертации
# изменение размера (потом растянуть ФС внутри — см. filesystems)
qemu-img resize disk.qcow2 +10G
# «сплющить» overlay в самостоятельный образ (вшить backing)
qemu-img convert -O qcow2 vm1.qcow2 vm1-flat.qcow2
# или перецепить overlay на другой backing:
qemu-img rebase -b new-base.qcow2 vm1.qcow2
qemu-img rebase -u -b "" vm1.qcow2 # безопасно «отвязать» (unsafe) — осторожно
qemu-img snapshot -l disk.qcow2 # список внутренних снимков
qemu-img snapshot -c snap1 disk.qcow2 # создать (ВМ должна быть выключена!)
qemu-img snapshot -a snap1 disk.qcow2 # откатиться к снимку
qemu-img snapshot -d snap1 disk.qcow2 # удалить
Для живых ВМ снимки делают через virsh snapshot-* (см. kvm-libvirt), не
qemu-img по работающему образу.
Образ занимает больше, чем должен
qcow2 не ужимается сам после удаления данных внутри. Сожми: qemu-img convert -O qcow2
disk.qcow2 small.qcow2 (перезапись убирает «дыры»; -c для сжатия).
Backing file has changed / overlay сломался
overlay жёстко привязан к backing-образу. Нельзя менять/удалять/двигать backing, пока
есть overlay. Смотри цепочку: qemu-img info --backing-chain; перецепить — rebase.
Расширил диск, а места в ВМ не прибавилось
qemu-img resize меняет только контейнер. Внутри гостя растяни раздел и ФС
(filesystems / lvm).
Нельзя менять смонтированный/используемый образ
Образ запущенной ВМ не трогай qemu-img'ом — повредишь. Сначала выключи ВМ
(virsh shutdown, см. kvm-libvirt).
Образ «битый» после сбоя
qemu-img check disk.qcow2 (и -r all попытаться починить). Без бэкапа рискованно.
qemu-img info --backing-chain disk.qcow2
qemu-img create -f qcow2 disk.qcow2 20G
qemu-img create -f qcow2 -F qcow2 -b golden.qcow2 overlay.qcow2 # overlay
qemu-img convert -O qcow2 src dst # конвертация/сжатие (-c)
qemu-img resize disk.qcow2 +10G # + растянуть ФС в госте
qemu-img snapshot -l/-c/-a/-d disk.qcow2 # снимки (на выключенной ВМ)
См. также
- KVM и libvirt (virsh) — Службы и systemd
- LVM (логические тома) — Хранилище и ФС
- Файловые системы (ext4, xfs, fsck) — Хранилище и ФС