Как изменить размер увеличить виртуального диска KVM с легкостью

Вы когда-нибудь сталкивались с дилеммой нехватки места на диске виртуальной машины KVM? Что ж, вы не одиноки! Будь то установка нового программного обеспечения, размещение большего количества данных или просто предоставление виртуальной машине пространства для оптимальной работы, увеличение размера виртуального диска KVM – задача, с которой мы все сталкиваемся в какой-то момент.

Типы виртуальных дисков KVM

В мире KVM (Kernel-based Virtual Machine) в основном используются два типа дисковых файлов – qcow2 и raw, причем qcow2 является наиболее распространенным.

  • qcow2: Считайте qcow2 швейцарским армейским ножом для дисковых файлов. Он гибкий и поддерживает такие функции, как моментальные снимки (захват состояния виртуальной машины в определенный момент времени), сжатие (для экономии места) и шифрование (для обеспечения безопасности данных). Это формат файлов, созданный для максимального удобства, балансирующий между производительностью и возможностями.
  • raw: Необработанный тип диска – это простой, без излишеств вариант. Это как чистый холст, обеспечивающий высокую производительность и простоту. raw файлы – это, по сути, неформатированные блоки, к которым виртуальная машина может получить прямой доступ. Им не хватает расширенных возможностей qcow2, но их простота и скорость непревзойденны для выполнения конкретных задач.

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

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

Для начала посмотрим, как выглядит ситуация с нашей виртуальной машиной KVM, диск которой мы хотим расширить.

Наш 20Гб диск почти исчерпал 98% емкости, как видно на скришоте.

Шаг 1: Идентификация виртуального диска

Сначала нам нужно определить файл виртуального диска KVM, размер которого хотим изменить. Сначала давайте составим список всех виртуальных машин с помощью команды virsh:

sudo virsh list --all

Виртуальная машина KVM, на которой мы будем расширять диск, называется «ubuntu» (в терминологии KVM имя виртуальной машины обозначается термином domain) и в настоящее время выключена. Но если бы она была включена, нам пришлось бы сначала выключить ее, потому что мы не можем изменить размер диска, пока она работает. Чтобы отключить его, просто выполните:

sudo virsh shutdown <vm_name>

В нашем случае это будет:

sudo virsh shutdown ubuntu

После определения точного имени виртуальной машины следующим шагом будет нахождение абсолютного пути к виртуальному диску, который соответствует отдельному физическому файлу. Для этого выполним следующую команду:

sudo virsh domblklist ubuntu

Вывод команды выше показывает, что полный путь к виртуальному диску виртуальной машины ubuntu – это /data/kvm/ubuntu22.04.

Далее мы можем получить более подробную информацию о виртуальном диске, например, его текущий размер, выполнив команду qemu-img info, указав полный путь к диску виртуальной машины:

sudo qemu-img info /data/kvm/ubuntu22.04

Как вы видите, полученная информация подтверждает, что текущий размер диска составляет 20 ГБ.

Шаг 2: Проверка наличия моментальных снимков

Перед тем как приступить к работе, необходимо убедиться, что на нашей виртуальной машине нет моментальных снимков. Это связано с тем, что KVM не разрешает изменять размер диска при наличии моментальных снимков. Чтобы проверить, есть ли снимки для конкретной виртуальной машины, выполните следующую команду:

sudo virsh snapshot-list ubuntu

В нашем случае для этой виртуальной машины не было создано никаких снимков. Однако если таковые имеются, их следует удалить командой:

sudo virsh snapshot-delete <vm_name> <snapshot_name>

Шаг 3: Изменение размера виртуального диска KVM

Теперь мы готовы изменить размер файла виртуального диска KVM с помощью команды qemu-img. Например, чтобы увеличить размер виртуального диска ubuntu на 10Гб, мы используем:

sudo qemu-img resize /data/kvm/ubuntu22.04 +10G

Перепроверив размер файла нашего виртуального диска, мы обнаружим, что он был успешно увеличен на 10 ГБ, с 20 ГБ до 30 ГБ.

sudo qemu-img info /data/kvm/ubuntu22.04

Однако заметили ли вы что-то очень важное на изображении выше? Виртуальный размер увеличился до 30 Гбайт, однако размер корневого диска все еще колеблется в районе 20 Гбайт.

Если вы войдете в свою виртуальную машину, то заметите, что размер корневой файловой системы по-прежнему составляет 20 Гбайт. В то же время, когда мы используем lsblk для списка блочных устройств, он отображает обновленный размер 30 ГБ.

Когда вы используете команду qemu-img resize, вы расширяете дисковый файл, в котором хранятся все данные, делая его способным вместить больше материала. Это похоже на покупку большего рюкзака для школы. Однако если рюкзак больше, это не значит, что в него автоматически поместится больше тетрадей или учебников.

Аналогично, файловая система внутри виртуальной машины – организационная структура, определяющая порядок хранения данных, – не будет автоматически растягиваться, чтобы заполнить новое пространство. Она все еще использует прежние настройки.

Чтобы использовать это дополнительное пространство, вам нужно сказать файловой системе расшириться и занять место в более крупном контейнере. В противном случае новый объем не будет доступен операционной системе Linux на вашей виртуальной машине KVM.

Изменение размера раздела и файловой системы

Важно понимать, что изменение размера раздела файловой системы – это двухэтапный процесс:

  1. Удаление и воссоздание таблицы разделов с новым размером
  2. Поглощение нового размера из ОС

Если первый этап является общим для всех случаев, то второй этап строго специфичен для вашей файловой системы. Ниже мы рассмотрим, как это сделать с тремя наиболее широко используемыми в Linux типами файловых систем – ext4, XFS и Btrfs.

Войдите в виртуальную машину KVM, размер диска которой будет изменен. Чтобы узнать, какая файловая система используется, введите следующую команду:

df -Th

В колонке Тип указано, что файловая система для раздела /dev/vda3, размер которого мы планируем изменить – ext4. Эта файловая система является наиболее широко используемой в экосистеме Linux.

Следующие команды следует выполнять с осторожностью. Мы будем использовать инструмент fdisk для изменения размера раздела диска.

sudo fdisk /dev/vda

Нажмите p и нажмите Enter, чтобы просмотреть схему раздела диска. Для нас разделом, который будет увеличен на 10 ГБ благодаря команде qemu-img resize, является корневой / раздел, обозначенный как /dev/vda3.

Нажмите d и нажмите Enter. Затем вам будет предложено выбрать раздел для удаления. Мы выбрали 3, так как этот номер по порядку соответствует нашему разделу /dev/vda3.

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

Чтобы создать раздел диска, нажмите n, а затем подтвердите нажатием Enter. Когда появится запрос на номер раздела, введите тот, который вы ранее удалили, то есть 3. В следующих запросах Первый сектор и Последний сектор просто нажмите Enter, чтобы принять значения по умолчанию. На вопрос о том, нужно ли удалить подпись текущего раздела, ответьте n.

Вы получите уведомление о том, что новый раздел успешно создан. Теперь его размер составляет 30 Гб, включая дополнительные 10 Гб, добавленные командой qemu-img resize.

Введите w и подтвердите Enter, чтобы сохранить изменения и выйти из программы fdisk.

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

Последний штрих зависит от используемой файловой системы.

ext4

Чтобы дать указание операционной системе принять измененное расположение разделов, необходимо использовать команду resize2fs, после которой указывается полный путь к соответствующему разделу. Это специально разработанный инструмент, работающий с файловыми системами ext2, ext3 или ext4.

sudo resize2fs /dev/vda3

Перезапустите виртуальную машину. Затем проверьте доступное дисковое пространство.

df -h

Вы будете рады обнаружить следующее:

Миссия выполнена! Вы успешно увеличили размер диска виртуальной машины KVM еще на 10 Гбайт.

XFS

Для дистрибутивов Linux, основанных на файловой системе XFS, таких как Red Hat Enterprise Linux, AlmaLinux, Rocky Linux и т. д., чтобы использовать дополнительное дисковое пространство, необходимо выполнить следующую команду:

sudo xfs_growfs -d <partition_mount_point>

Однако для выполнения вышеуказанной команды требуется больше, чем просто выполнить команду, поскольку эти дистрибутивы используют скрытое управление логическими томами (LVM). Поэтому сначала необходимо изменить размер тома LVM. Вот как это сделать.

Прежде всего, убедитесь, что вы выполнили часть fdisk и добавили нужное дисковое пространство в таблицу разделов диска, прежде чем приступать к следующим действиям с LVM.

Вот наша виртуальная машина KVM перед манипуляциями с LVM.

Найдите имя физического тома LVM.

sudo pvdisplay

После того как вы узнали его имя, в нашем случае /dev/vda2, измените его размер.

sudo pvresize /dev/vda2

Если мы проверим еще раз, то увидим, что наш том LVM теперь включает 10 ГБ, добавленные командой qemu-img resize.

Определите путь тома LVM, размер которого вы собираетесь изменить. В нашем случае это корневой раздел, смонтированный по адресу /dev/rl_rocky/root. Мы будем использовать это имя в качестве параметра в следующей команде.

Добавьте неиспользуемое пространство в логический том, который теперь увеличился с 17 ГБ до 27 ГБ.

sudo lvextend -l +100%FREE /dev/rl_rocky/root

Размер корневой / файловой системы:

sudo xfs_growfs -d /

Перезагрузите виртуальную машину KVM. При проверке вы заметите, что дисковое пространство успешно заняло дополнительные 10 ГБ.

Btrfs

Btrfs – одна из «большой тройки» самых популярных файловых систем в Linux, на которую делают ставку такие дистрибутивы, как Fedora и openSUSE.

Мы исходим из предположения, что вы уже выполнили шаги qemu-img resize и fdisk. Ниже приведено состояние нашей системы Fedora до вмешательства.

Как видно на изображении выше, операционная система в настоящее время занимает 20 ГБ дискового пространства, в то время как реальный диск KVM имеет емкость 30 ГБ. Чтобы использовать доступные 10 ГБ, мы можем легко расширить файловую систему Btrfs с помощью следующей команды, указав в качестве последнего параметра путь монтирования, который в нашем случае является корневой файловой системой.

sudo btrfs filesystem resize max /

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

Заключение

Изменение размера виртуального диска виртуальной машины KVM – это простой процесс, который может значительно повысить гибкость и масштабируемость виртуальных сред. Следуя описанным выше шагам, вы сможете обеспечить своим виртуальным машинам пространство для роста ваших требований.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Вдохновлен linuxiac.com

Похожие статьи

Комментарии (0)