Працюємо з образами дисків KVM за допомогою NBD

Досить часто виникає необхідність подивитися або підправити щось в образі диска віртуальної машини KVM, не запускаючи саму віртуальну машину. Існує кілька способів підмонтувати диски образу віртуальної машини.

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

У Ubuntu (та й у більшості інших Linux-подібних системах) драйвер Network Block Device повинен бути завантажений вручну:

qemu-nbd буде використовувати драйвер nbd для створення блокових пристроїв та здійснення вводу/виводу під час роботи з ними. Тепер можна приконнекти образ диска:

Тут замість nbd0 може бути і nbd1, nbd2, тобто будь-який вільний блоковий пристрій. Якщо пристрій вже зайнятий, видається помилка, щось типу:

При успішному підключенні qemu-nbd завершується і залишає працювати демон, який дозволяє здійснювати з /dev/nbd0 стандартний набір функцій, властивих будь-якому блоковому пристрою: mount, fdisk, fsck і так далі.

Перед монтажем потрібно переглянути розділи на блоковому пристрої nsd0:

Тепер можна монтувати та працювати з nbd0p1 як зі звичайним примонтованим диском:

Після завершення роботи з образом диска KVM змонтуємо його:

Якщо під час спроби коннекта видається незрозуміла помилка:

значить не завантажено драйвер nbd. Після всіх маніпуляцій можна вивантажити nbd:

ВАЖЛИВО. Не можна проводити всі ці дії при запущеній віртуальній машині. Дані на ній будуть безповоротно втрачені.

Файл образу віртуальної машини може бути будь-якого формату QEMU: raw, qcow2, qed, vdi, vmdk, vpc, і т.д.