С чего начать Первые шаги трек · 15 ступеней
Linux Labs

qemu-img — образы дисков виртуальных машин

5 мин QEMU

Создание и обслуживание дисков qcow2 — overlay, конвертация, изменение размера.

Шпаргалка

6 команд Версия для печати
  • 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 снимки (на выключенной ВМ)

Обзор

qemu-img управляет образами дисков виртуальных машин (kvm-libvirt). Самый частый формат — qcow2: тонкое выделение (растёт по мере записи), снимки, overlay-цепочки.

bash
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         # проверить целостность образа

Ключи

8

-f/-F задают формат исходного и backing-образа — почти всегда qcow2; несовпадение формата с реальным содержимым файла портит образ незаметно, до первого чтения нужного блока. -O — формат образа назначения при конвертации, его легко перепутать с -f (формат источника). -b привязывает overlay к backing-файлу при создании; менять эту привязку потом — уже rebase.

Ключ Что делает Пример
-f fmt Формат исходного образа — обычно qcow2 или raw. qemu-img create -f qcow2 disk.qcow2 20G
-O --output-format fmt Формат образа назначения при конвертации. qemu-img convert -O qcow2 disk.raw disk.qcow2
-b file Backing-файл — базовый образ для overlay. qemu-img create -f qcow2 -b golden.qcow2 vm1.qcow2
-F fmt Формат backing-файла — нужен вместе с -b, если он отличается от формата по умолчанию. qemu-img create -f qcow2 -F qcow2 -b golden.qcow2 vm1.qcow2
-c Сжать данные при конвертации. qemu-img convert -c -O qcow2 src.qcow2 small.qcow2
--backing-chain Показать всю цепочку overlay → backing вместо одного файла. qemu-img info --backing-chain vm.qcow2
-u rebase: небезопасный режим — сменить backing-ссылку без проверки данных. опасно qemu-img rebase -u -b "" vm1.qcow2
-p Показывать индикатор прогресса длительной операции. qemu-img convert -p -O qcow2 src dst

Ничего не найдено. Попробуй запрос короче.

Рецепты

2

Overlay и конвертация

bash
# 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) — осторожно

Снимки (internal)

bash
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 по работающему образу.

Неполадки

5

Образ занимает больше, чем должен

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 над диском работающей ВМ: гипервизор и qemu-img пишут в файл независимо, и результат — повреждённый образ. Сначала выключи ВМ (virsh shutdown, см. kvm-libvirt).

qemu-img rebase -u меняет привязку overlay к backing-файлу, не трогая данные и не проверяя совместимость — это операция для случаев, когда ты точно знаешь, что новый backing содержит те же данные. Ошибочный rebase -u делает оверлей нечитаемым без явной ошибки в момент выполнения команды. qemu-img convert перезаписывает файл назначения целиком без запроса подтверждения.

См. также

  • kvm-libvirt — Виртуальные машины на Linux — управление через virsh, сети и хранилища, консоль.
  • lvm — PV → VG → LV; гибкое управление дисками, расширение и снапшоты.
  • filesystems — Создание ФС, метки и UUID, проверка fsck, типы ext4/xfs.
Загрузка…