Найти в Дзене
Записки сисадмина

Qemu-KVM. Расширение диска на виртуальной машине.

Бывает такое, что пользователь плачет: письма не доходят, почтовый клиент не обновляется, файлы не сохраняются, да и вообще беда какая-то. Ты смотришь на его систему и видишь полностью красную полоску под иконкой единственного жесткого диска. Неприятно? Да. Решаемо? В 99% случаев - да, можно почистить кучу ненужных файлов. А бывает, что ты заходишь на свою виртуалку и видишь, что рутовый каталог забит на 100%, а файлов лишних нет, все нужно. Неприятно? Конечно! Решаемо? Дайте 5 минут, у меня же все на LVM. /dev/mapper/vgubuntu-root - это и есть тот самый LVM том, который смонтирован в нашу корневую директорию. /dev/vda - это единственный наш виртуальный диск. В данный момент его размер - 25Гб. qemu-img resize {имя файла образа} +{количество в гигабайтах}G Видим, что образ был изменен, значит пора включать обратно нашу виртуалку. Видим, что наш диск увеличился на 20Гб, однако команда df -h выдаст нам все тот же результат, что и выше. Это означает то, что на нашем диске не все пространст

Бывает такое, что пользователь плачет: письма не доходят, почтовый клиент не обновляется, файлы не сохраняются, да и вообще беда какая-то. Ты смотришь на его систему и видишь полностью красную полоску под иконкой единственного жесткого диска. Неприятно? Да. Решаемо? В 99% случаев - да, можно почистить кучу ненужных файлов.

А бывает, что ты заходишь на свою виртуалку и видишь, что рутовый каталог забит на 100%, а файлов лишних нет, все нужно. Неприятно? Конечно! Решаемо? Дайте 5 минут, у меня же все на LVM.

  • Заходим на нашу виртуалку и выводим информацию о разделах:

/dev/mapper/vgubuntu-root - это и есть тот самый LVM том, который смонтирован в нашу корневую директорию.

  • С помощью команды fdisk -l получаем информацию о наших дисках
-2

/dev/vda - это единственный наш виртуальный диск. В данный момент его размер - 25Гб.

  • Выключаем нашу виртуалку, заранее проверив, где находится ее образ
-3
  • На хост машине заходим в папку /var/lib/libvirt/images/ и прописываем команду:
qemu-img resize {имя файла образа} +{количество в гигабайтах}G
-4

Видим, что образ был изменен, значит пора включать обратно нашу виртуалку.

  • На виртуальной машине снова выполняем fdisk -l
-5

Видим, что наш диск увеличился на 20Гб, однако команда df -h выдаст нам все тот же результат, что и выше. Это означает то, что на нашем диске не все пространство размечено.

На скриншоте видно, что последний сектор последнего раздела имеет номер 51372032, когда у самого диска всего 94371840 секторов.

  • Создаем новый раздел на диске:
-6

Последовательно вводим:

fdisk /dev/vda
n -> enter -> enter -> enter

Это создаст нам новый раздел на диске, который примет следующий порядковый номер, начнется со следующего неразмеченного сектора и закончится последним сектором на диске.

Раздел создается по умолчанию с файловой системой "Linux filesystem". Нас это не устраивает, меняем на LVM:

t -> номер созданного раздела -> lvm

Важно: если у вас виртуальная машина со свежей ОС, тип раздела нужно указывать "lvm". На старых ОС нужно было указывать код "8e".

Для применения изменений в утилите fdisk нажимаем "w".

  • Перезагружаем нашу виртуальную машину и начинаем последовательно выполнять команды:

Добавляем дескриптор группы томов на наш новый раздел:

pvcreate /dev/vda4
-7

Добавляем наш раздел в группу томов:

vgextend vgubuntu /dev/vda4
-8

Проверяем, что размер группы vgubuntu увеличился и там теперь 20Гб неиспользованного пространства:

vgs
-9

Выводим информацию о наших логических разделах и ищем нужный:

lvdisplay
-10

Выводим информацию о группах логических томов и ищем строку Free PE / Size, как выделено на скриншоте:

vgdisplay
-11

Наконец у нас есть все необходимые вводные с последних двух скриншотов, и мы знаем, какой размер к какому логическому разделу мы должны добавить:

lvextend -l +5119 /dev/vgubuntu/root
-12

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

resize2fs /dev/vgubuntu/root
-13

Готово, можем проверять, что наше дисковое пространство изменилось и файловая система это приняла:

-14