Поиск по сайту:

Как увеличить размер диска виртуальной машины KVM


KVM — это технология виртуализации, интегрированная в ядро Linux. Вы можете создавать виртуальные машины и взаимодействовать с KVM с помощью таких инструментов, как virsh, virt-manager и GNOME Boxes.

Нехватка места на диске — одна из наиболее распространенных проблем с гостевыми ВМ. Возможно, вы начали с преднамеренно маленького диска при тестировании новой виртуальной машины. Со временем вы накапливаете файлы, пока виртуальный диск почти не заполнится. Вот как можно изменить размер диска на месте без необходимости копировать файлы на отдельный диск большего размера.

Выключите вашу виртуальную машину

Начните с выключения вашей виртуальной машины. Вы можете завершить работу в гостевой операционной системе, используя элементы управления в пользовательском интерфейсе управления или введя команду virsh shutdown:

$ sudo virsh list
 Id   Name          State
------------------------------
 -    ubuntu22.04   running

$ sudo virsh shutdown ubuntu22.04
Domain ubuntu22.04 is being shutdown

Подождите, пока виртуальная машина не выключится. Он исчезнет из вывода virsh list после завершения работы. Вы можете просмотреть сведения о неактивных виртуальных машинах, добавив флаг --all:

$ sudo virsh list --all
 Id   Name          State
------------------------------
 -    ubuntu22.04   shut off

Найдите местоположение диска

Затем вам нужно указать путь, по которому сохранен диск вашей виртуальной машины. Каждая виртуальная машина получает файл образа диска, в котором хранится полное содержимое ее файловой системы. Можно использовать несколько форматов, включая QCOW2, VDI, VMDK и VHDX.

Большинство виртуальных машин, созданных в современной среде KVM, будут иметь образ диска QCOW2, хранящийся в каталоге /var/lib/libvirt/images. Имя файла будет соответствовать имени виртуальной машины, которое отображается в выводе команды virsh list.

Вы можете проверить путь к диску виртуальной машины, запустив virsh domblklist:

$ sudo virsh domblklist ubuntu22.04
 Target   Source
-----------------------------------------------------
 sdb      /var/lib/libvirt/images/ubuntu22.04.qcow2

Это подтверждает, что файл для изменения размера для этой виртуальной машины — /var/lib/libvirt/images/ubuntu22.04.qcow2.

Удалить снимки ВМ

Вы не можете изменить размер образов дисков, для которых сохранены снимки. Перед изменением размера вам придется удалить снимки. Если вам нужно сохранить моментальные снимки, сначала клонируйте виртуальную машину и используйте копию для доступа к состояниям моментальных снимков. Затем вы можете удалить моментальные снимки исходной виртуальной машины и продолжить операцию изменения размера.

Команда virsh snapshot-list покажет, есть ли у вашей ВМ снимки:

$ virsh snapshot-list ubuntu22.04
 Name         Creation Time               State
---------------------------------------------------
 13-09-2022   2022-09-13 22:36:41 +0100   shutoff

Удалите их с помощью команды snapshot-delete. Моментальный снимок для удаления идентифицируется с помощью синтаксиса .

$ virsh snapshot-delete ubuntu22.04 13-09-2022

Изменение размера диска

Команду qemu-img теперь можно использовать для изменения размера диска. Его аргументами являются путь к файлу образа диска и объем дополнительной емкости, которую необходимо добавить на диск.

$ sudo qemu-img resize /var/lib/libvirt/images/ubuntu22.04.qcow2 +16G

+16G означает, что диск станет на 16 ГБ больше, чем его текущий размер. Вы также можете использовать другие стандартные суффиксы, такие как M для мегабайтов и T для терабайтов. Отсутствие нотации + указывает QEMU сделать диск определенного размера, например 1T, чтобы обеспечить емкость 1 ТБ.

Процесс изменения размера должен занять всего несколько секунд. Это не обязательно окажет немедленное влияние на общее использование дискового пространства вашего хоста в зависимости от используемого формата изображения.

Расширение разделов диска

Затем загрузите виртуальную машину и используйте утилиту управления дисками гостевой операционной системы, чтобы расширить таблицу разделов диска на вновь выделенное свободное пространство. Без этого шага ваша новая емкость не будет доступна для операционной системы.

Команда Linux resize2fs автоматически увеличивает назначенный раздел до максимального размера, разрешенного любым доступным свободным пространством:

$ sudo resize2fs /dev/sda

Найдите нужное целевое устройство (/dev/sda в приведенной выше команде), запустив df -h и найдя файловую систему, смонтированную в /:

$ df -h
Filesystem        Size  Used Avail Use% Mounted on
/dev/sda          32G   17G  15G   53%  /

Чтобы изменить размер раздела графически, вы можете использовать GParted или GNOME Disks в гостевой системе Linux или Управление дисками для компьютера с Windows.

Вот виртуальная машина Ubuntu 22.04, размер диска которой был изменен на 16 ГБ в приведенном выше примере. После запуска гостевой системы и открытия GParted 16 ГБ свободного места видны как нераспределенная область в конце диска.

Пространство используется, если щелкнуть правой кнопкой мыши существующий системный раздел, выбрать «Изменить размер/переместить» в меню GParted и в конце увеличить раздел до свободного места. После применения операции полезная емкость раздела, как и ожидалось, составляет 48 ГБ.

Уменьшение размера диска

Образы дисков могут быть уменьшены, если вашей виртуальной машине выделено больше памяти, чем ей нужно. Это потенциально опасная операция. Сделайте резервную копию вашего диска перед началом изменения размера, чтобы вы могли восстановить ситуацию, если данные будут удалены:

$ sudo cp /var/lib/libvirt/images/ubuntu22.04.qcow2 ubuntu22.04.qcow2.bak

Затем вы должны настроить таблицу разделов внутри виртуальной машины, чтобы на диске оставалось нераспределенное свободное пространство. Например, когда вы изменяете размер диска с 32 ГБ до 20 ГБ, вы должны убедиться, что в конце таблицы разделов есть не менее 12 ГБ свободного места. Если вы забудете об этом шаге, изменение размера приведет к без разбору удалению данных с конца диска, повреждению таблицы разделов и невозможности загрузки вашей виртуальной машины.

Этот компьютер с Windows 10 имеет диск объемом 40 ГБ, из которых только 32 ГБ отображаются на разделы. 8 ГБ нераспределенного пространства в конце диска означают, что вы можете безопасно уменьшить размер диска до 8 ГБ.

После того, как вы подготовили свои разделы, вы можете использовать qemu-img resize для уменьшения размера. Поддержка этой операции должна каждый раз включаться вручную путем включения флага --shrink в вашу команду. Это позволяет указать целевой размер меньше текущей емкости диска. Вы также можете использовать синтаксис -8G для уменьшения размера на заданную величину.

$ qemu-img resize --shrink /var/lib/libvirt/images/win10.qcow2 -8G

После перезагрузки гостя Windows подтверждает, что 8 ГБ свободного места удалены с конца диска.

Краткое содержание

Размер образов дисков, используемых виртуальными машинами KVM, можно изменить с помощью команд virsh и qemu-img. Изменение размера диска надежно и должно завершиться за считанные секунды, но это не работает, когда виртуальные машины хранят моментальные снимки. Всегда полезно сделать резервную копию образа диска перед началом работы.

Некоторые графические интерфейсы KVM, такие как GNOME Boxes, включают поддержку изменения размеров, что позволяет увеличивать диск без использования терминала. Как бы вы ни применяли изменение размера, вы должны впоследствии загрузить гостевую виртуальную машину и настроить таблицу разделов, чтобы использовать пространство. Это позволяет операционной системе использовать увеличенную емкость диска.