Как увеличить размер диска виртуальной машины KVM
- TryHarder
- 12-янв-2023, 16:30
KVM - это технология виртуализации, интегрированная в ядро Linux. Вы можете создавать виртуальные машины и взаимодействовать с KVM с помощью таких инструментов, как virsh, virt-manager и GNOME Boxes.
Нехватка места на диске является одной из наиболее распространенных проблем с гостевой виртуальной машиной. Возможно, вы начали с намеренно маленького диска во время тестирования новой виртуальной машины. Со временем вы накапливаете файлы до тех пор, пока виртуальный диск не будет почти заполнен. Вот как изменить размер вашего диска на месте, без необходимости копировать файлы на отдельный диск большего размера.
Начните с завершения работы вашей виртуальной машины. Завершение работы можно выполнить в гостевой операционной системе, используя элементы управления в пользовательском интерфейсе управления или выполнив команду virsh shutdown
:
список $ sudo virsh Идентификатор Имя Состояние ------------------------------ - запущенный ubuntu22.04 $ sudo virsh завершение работы ubuntu22.04 Завершается работа домена ubuntu22.04
Подождите, пока виртуальная машина не выключится. Он исчезнет с virsh list
вывода после завершения работы. Вы можете просмотреть подробную информацию о неактивных виртуальных машинах, добавив --all
флаг:
Список $ sudo virsh --все Идентификатор Имя Состояние ------------------------------ - ubuntu22.04 отключен
Далее вам нужно определить путь, по которому сохраняется диск вашей виртуальной машины. Каждая виртуальная машина получает файл образа диска, в котором хранится полное содержимое ее файловой системы. Можно использовать несколько форматов, включая QCOW2, VDI, VMDK и VHDX.
Большинство виртуальных машин, созданных в современной среде KVM, будут иметь образ диска QCOW2, хранящийся внутри /var/lib/libvirt/images
каталога. Имя файла будет совпадать с именем виртуальной машины, которое отображается в virsh list
выходных данных команды.
Вы можете проверить путь к диску виртуальной машины, выполнивvirsh domblklist
:
$ sudo virsh domblklist ubuntu22.04 Целевой источник ----------------------------------------------------- sdb /var/lib/libvirt/images/ubuntu22.04.qcow2
Это подтверждает, что файл, размер которого нужно изменить для этой виртуальной /var/lib/libvirt/images/ubuntu22.04.qcow2
машины.
Вы не можете изменять размер образов дисков, на которых хранятся моментальные снимки. Вам придется удалить снимки, прежде чем выполнять изменение размера. Если вам нужно сохранить моментальные снимки, сначала клонируйте виртуальную машину и используйте копию для доступа к состояниям моментальных снимков. Затем вы можете удалить снимки с исходной виртуальной машины и продолжить операцию изменения размера.
virsh snapshot-list
Команда покажет, есть ли у вашей виртуальной машины какие-либо моментальные снимки:
$ virsh snapshot-список ubuntu22.04 Время создания имени Состояние --------------------------------------------------- 13-09-2022 2022-09-13 22:36:41 +0100 отключение
Удалите их с snapshot-delete
помощью команды. Моментальный снимок, который нужно удалить, определяется с помощью <vm-name> <snapshot-name>
синтаксиса.
снимок $ virsh-удалить 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 ТБ.
Процесс изменения размера должен занять всего несколько секунд. Это не обязательно окажет немедленное влияние на общее использование диска вашего хоста в зависимости от используемого формата изображения.
Затем загрузите виртуальную машину и используйте утилиту управления дисками гостевой операционной системы, чтобы расширить таблицу разделов диска на вновь выделенное свободное пространство. Без этого шага ваша новая емкость не будет доступна для операционной системы.
resize2fs
Команда Linux автоматически увеличит выделенный раздел до максимального размера, допустимого любым доступным свободным пространством:
$ sudo resize2fs /dev/sda
Найдите нужное целевое устройство (/dev/sda
в приведенной выше команде), запустив df -h
и выполнив поиск файловой системы, к которой она подключена/
:
$ df -h Используемый размер файловой системы Доступно Использование% Смонтировано на / dev/ sda 32G 17G 15G 53% /
Чтобы изменить размер раздела графически, вы можете использовать GParted или GNOME Диски в гостевой системе Linux или Disk Management для компьютера с 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, включают поддержку изменения размера, что позволяет увеличивать диск без использования терминала. Как бы вы ни применяли изменение размера, после этого вы должны загрузить гостевую виртуальную машину и настроить таблицу разделов так, чтобы использовать это пространство. Это позволяет операционной системе использовать увеличенную емкость диска.