Работа с KVM дискови изображения с NBD

Доста често има нужда да се погледне или коригира нещо в образа на диска на KVM виртуална машина, без да се стартира самата виртуална машина. Има няколко начина за монтиране на диск с изображение на виртуална машина.

Най-простият е използването на механизма NBD (Network Block Device) – протокол за работа с блоково устройство в мрежа. Пакетът за виртуализация на KVM вече включва qemu-nbd (или както се нарича още kvm-nbd), който позволява използването на протокола NBD за споделяне на дисково изображение по мрежата. В системи, подобни на Debian, qemu-nbd е в комплект с qemu-utils.

В Ubuntu (и повечето други системи, подобни на Linux), драйверът за мрежово блокиращо устройство трябва да се зареди ръчно:

qemu-nbd ще използва драйвера nbd за създаване на блокови устройства и извършване на I/O върху тях. Сега можете да монтирате изображението на диска:

Тук вместо nbd0 може да има nbd1, nbd2, тоест всяко свободно блоково устройство. Ако устройството вече е заето, тогава се генерира грешка, нещо като:

При успешно свързване qemu-nbd прекратява и оставя демона да работи, което ви позволява да изпълнявате с /dev/nbd0 стандартния набор от функции, присъщи на всяко блоково устройство: монтиране, fdisk, fsck и т.н.

Преди да монтирате, трябва да погледнете дяловете на блоковото устройство nsd0:

Сега можете да монтирате и работите с nbd0p1 като с нормално монтиран диск:

След приключване на работата с образа на KVM диска, демонтирайте го:

Ако възникне неясна грешка при опит за свързване:

означава, че nbd драйверът не е зареден. След всички манипулации можете да разтоварите nbd:

ВАЖНО! Не можете да извършвате всички тези действия, докато виртуалната машина работи. Данните в него ще бъдат безвъзвратно загубени.

Файлът с изображение на виртуалната машина може да бъде всеки формат, поддържан от QEMU: raw, qcow2, qed, vdi, vmdk, vpc и др.