Достаточно
часто возникает необходимость изменить размер диска виртуальной машины –
ну не рассчитали при создании образа диска. Тут есть два способа:
Изменение производится одной командой
disk_size – числа, на который увеличивается или уменьшается (тогда – вместо +) размер диска;
G – единица измерения – гигабайт. Можно изменить размер диска на disk_size мегабайт – тогда M.
В результате работы этой команды в конце диска образа виртуальной машины KVM появляется disk_size гигабайт (или мегабайт) свободного, нараспределенного дискового пространства. Можно загрузить виртуальную машину и создать дополнительный раздел при помощи fdisk или parted, можно увеличить размер разделов при помощи parted.
В принципе все это можно сделать и на хосте, подключив диск при помощи NBD, с помощью тех-же fdisk или parted.
- создать новый образ диска, отформатировать его и подключить к виртуальной машине с помощью команд virsh attach-disk или qemu attach-disk
- изменить размер диска непосредственно в образе виртуальной машины.
Изменение производится одной командой
sudo qemu-img resize /path/to/disk +disk_sizeG
где /path/to/disk – путь до образа диска;disk_size – числа, на который увеличивается или уменьшается (тогда – вместо +) размер диска;
G – единица измерения – гигабайт. Можно изменить размер диска на disk_size мегабайт – тогда M.
В результате работы этой команды в конце диска образа виртуальной машины KVM появляется disk_size гигабайт (или мегабайт) свободного, нараспределенного дискового пространства. Можно загрузить виртуальную машину и создать дополнительный раздел при помощи fdisk или parted, можно увеличить размер разделов при помощи parted.
В принципе все это можно сделать и на хосте, подключив диск при помощи NBD, с помощью тех-же fdisk или parted.
parted /dev/nbd0
Таким образом можно изменять размер дисков в формате qcow2 и raw
(можно еще и в qcow, но этот формат практически не используется).
Достаточно
часто возникает необходимость посмотреть или подправить что нибудь в
образе диска виртуальной машины KVM, не запуская саму виртуальную
машину. Существует несколько способов подмонтировать диск образа
виртуальной машины.
Самый простейший – использовать механизм NBD (Network Block Device) – протокол работы с блочным устройством по сети. В состав пакета виртуализации KVM уже входит qemu-nbd (или, как еще называют kvm-nbd), который позволяет используя протокол NBD расшаривать образ диска по сети. В Debian-подобных системах qemu-nbd входит в состав
В Ubuntu (да и в большинстве других Linux-подобных системах) драйвер Network Block Device должен быть загружен вручную:
При успешном подключении qemu-nbd завершается и осталяет работать
демон, который позволяет осуществлять с /dev/nbd0 стандартный набор
функций присущих любому блочному устройству: mount, fdisk, fsck и так
далее.
Перед монтированием нужно посмотреть разделы на блочном устройстве nsd0:
значит не загружен драйвер nbd. После всех манипуляций можно выгрузить nbd:
ВАЖНО!!! Нельзя проводить все эти действия при запущенной виртуальной машине!!! Данные на ней будут безвозвратно потеряны!!!
Файл образа виртуальной машины может быть любого формата, поддерживаемого QEMU: raw, qcow2, qed, vdi, vmdk, vpc, и т.д.
Самый простейший – использовать механизм NBD (Network Block Device) – протокол работы с блочным устройством по сети. В состав пакета виртуализации KVM уже входит qemu-nbd (или, как еще называют kvm-nbd), который позволяет используя протокол NBD расшаривать образ диска по сети. В Debian-подобных системах qemu-nbd входит в состав
qemu-utils
.В Ubuntu (да и в большинстве других Linux-подобных системах) драйвер Network Block Device должен быть загружен вручную:
$ sudo modprobe nbd
qemu-nbd будет использовать драйвер nbd для создания блочных
устройств и осуществления ввода/вывода при работе с ними. Теперь можно
приконнектить образ диска:sudo qemu-nbd -c /dev/nbd0 path/to/image/file
Здесь вместо nbd0 может быть и nbd1, nbd2, то-есть любое свободное
блочное устройство. Если устройство уже занято, то выдается ошибка,
что-то типа:/build/qemu-Ee59aw/qemu-2.0.0+dfsg/nbd.c:nbd_init():L504: Failed to set NBD socket
/build/qemu-Ee59aw/qemu-2.0.0+dfsg/nbd.c:nbd_receive_request():L638: read failed
Перед монтированием нужно посмотреть разделы на блочном устройстве nsd0:
$ sudo fdisk -l /dev/nbd0
Диск /dev/nbd0: 8589 МБ, 8589934592 байт
255 головок, 63 секторов/треков, 1044 цилиндров, всего 16777216 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x0004c910
Устр-во Загр Начало Конец Блоки Id Система
/dev/nbd0p1 * 2048 15960063 7979008 83 Linux
/dev/nbd0p2 15962110 16775167 406529 5 Расширенный
/dev/nbd0p5 15962112 16775167 406528 82 Linux своп / Solaris
Теперь можно монтировать и работать с nbd0p1 как с обычным примонтированным диском:$ sudo mount /dev/nbd0p1 /mnt/qemu-img
Проверяем:$ dir /mnt/qemu-img
bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
После завершения работы с образом диска KVM отмонтируем его:sudo umount /dev/nbd0p1
и отконнектимся:sudo qemu-nbd -d /dev/nbd0
Если при попытке коннекта выдается невразумительная ошибка:Failed to open /dev/nbd0: No such file or directory/build/qemu-Ee59aw/qemu-2.0.0+dfsg/nbd.c:nbd_receive_request():L638: read failed
значит не загружен драйвер nbd. После всех манипуляций можно выгрузить nbd:
$ sudo modprobe -r nbd
ВАЖНО!!! Нельзя проводить все эти действия при запущенной виртуальной машине!!! Данные на ней будут безвозвратно потеряны!!!
Файл образа виртуальной машины может быть любого формата, поддерживаемого QEMU: raw, qcow2, qed, vdi, vmdk, vpc, и т.д.
Комментариев нет:
Отправить комментарий