Правильное увеличение размера диска в виртуальной машине
Не претендуя на полноту, все же считаю, что это может пригодиться системным администраторам.
Увеличение размера диска в виртуальной машине происходило при следующих вводных: формат файла виртуалки qcow2, виртуальная машина использует lvm и ext4, root partition находится в extended partition. Действо обычно происходит ночью, когда нагрузка минимальна и даунтайм не сильно давит на нервы. Хотя при работе с highload-проектами адреналина всё равно выделяется достаточно, чтобы 10 раз подумать, перед тем, как что-либо делать. Поэтому перед началом процесса, лучше отключить систему оповещения по СМС, чтобы не пугать коллег сообщениями типа «Server down» среди ночи.
1. Выключить виртуальную машину
Я сделал это через GUI, нажав на красную кнопку power в virt-manager. Если нет virt-manager, это можно сделать дав команду shutdown в командной строке виртуальной машины.
2. На гипервизоре увеличиваем размер файла (в моем случае на 200 гигабайт)
qemu-img resize /path/to/vm-disk.qcow2 +200G
3. Цепляем диск к другой (сервисной) виртуальной машине через управляющую машину с virt-manager, альтернативный вариант — загрузиться с CD с поддержкой lvm.
Cooтветственно, при загрузке с LiveCD, vdb поменяется на vda
4. Запускаем сервисную машину (на ней тоже должен быть lvm) через virt-manager.
5. Далее на сервисной (или LVM liveCD) машине:
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vdb: 1288GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 1000GB 1000GB extended 5 257MB 1000GB 1000GB logical lvm
увеличим extended partition, если этого не сделать получим Error: Can’t have overlapping partitions. ubuntu parted -gparted
(parted) resizepart 2 End? [1000GB]? 1288Gb
(parted) resizepart 5 End? [1000GB]? 1288Gb (parted) q
root@vm-service:/etc# lvextend /dev/vm-db-0-vg/root -l +100%FREE lvextend /dev/vm-db-0-vg/root -l +100%FREE File descriptor 7 (pipe:[7918]) leaked on lvextend invocation. Parent PID 1378: bash (на это можно не обращать внимания) Extending logical volume root to 1.12 TiB Logical volume root successfully resized root@vm-service:/etc# resize2fs /dev/vm-db-0-vg/root
The filesystem on /dev/vm-db-0-vg/root is now 231278592 blocks long.
fsck -f /dev/mapper/vm--db--0--vg-root
диск готов
6. выключаем сервисную машину, отключаем от нее диск в virt-manager
из командной строки, не используя GUI для управления виртуальными машинам можно сделать это при помощи virsh, использование которого хорошо описано здесь: управление виртуальными машинами из командной строки
7. Запускаем сервер
Увеличение с минимальным даунтаймом, почти на лету, проверено на lvm2/ext4 можно сделать так:
1. Увеличение размера файла на 200 гигабайт выполняется на гипервизоре
qemu-img resize /path/to/vm-disk.qcow2 +200G
(parted) print Model: Virtio Block Device (virtblk) Disk /dev/vda: 1288GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 1000GB 1000GB extended 5 257MB 1000GB 1000GB logical lvm
(parted) resizepart 2 End? [1000GB]? 1288Gb
(parted) resizepart 5 End? [1000GB]? 1288Gb (parted) q
root@vm-db-0:/etc# lvextend /dev/vm-db-0-vg/root -l +100%FREE lvextend /dev/vm-db-0-vg/root -l +100%FREE File descriptor 7 (pipe:[7918]) leaked on lvextend invocation. Parent PID 1378: bash Extending logical volume root to 1.12 TiB Logical volume root successfully resized root@vm-db-0:/etc# resize2fs /dev/vm-db-0-vg/root
В этом случае проверять и исправлять файловую систему нельзя, fsck -f /dev/mapper/vm—db—0—vg-root убьёт файловую систему
Проверить, что получилось:
Увеличить размер раздела диска в Ubuntu
21.02.2023
itpro
Linux, Ubuntu
комментария 3
Если вы используете виртуальные машины с Ubuntu Linux, скорее всего рано или поздно вы столкнетесь с необходимостью расширения места на виртуальном диске. Установщик Ubuntu по умолчанию предлагает использовать логические LVM тома для развертывания ОС, поэтому мы рассмотрим расширение диска на примере именно LVM.
В первую очередь нужно увеличить размер виртуального диска со стороны вашей системы виртуализации:
После того, как вы расширили диск в ВМ, нужно расширить его в гостевой ОС (в этом примере это Ubuntu 22.04 LTS). Чтобы Ubuntu увидела добавленное место, выполните принудительный рескан дисков с помощью команды:
Для управления разделами используйте утилиту cfdisk:
В данном примере видно, что на диске /dev/sda есть свободное место размером 1 Гб. Выберите раздел, который нужно расширить (/dev/sda3 в этом примере) и выберите в меню Resize.
Чтобы сохранить изменения в разделах диска, выберите в меню Write.
После того, как вы увеличили физический раздел, нужно увеличить размер логического раздела Ubuntu. Проверьте, что у вас используется используются тома LVM:
- Physical Volume (PV) — ваши физические диски /dev/sda , /dev/sdb , и т.д.
- Volume Group (VG) — группы томов, в которые объединены физически диски. Например ubuntu-vg = /dev/sda + /dev/sdb . Также VG можно состоять всего из одного диска.
- Logical Volume (LV) — логический раздел в группе томов. Например, ubuntu-vg/root , ubuntu-vg/home , и т.д.
Проверьте свободное место в группе томов LVM с помощью:
Для расширения раздела LVM нужно сначала увеличить PV (Physical Volume):
Теперь можно увеличить логический том. В этом примере мы расширим том за счет всего доступного пространства:
$ sudo lvextend -l +100%FREE /dev/mapper/ubuntu—vg-ubuntu—lv
Logical volume ubuntu-vg/ubuntu-lv successfully resized
Осталось расширить файловую систему. Для ext2, ext3 и ext4 выполните:
$ sudo resize2fs /dev/mapper/ubuntu—vg-ubuntu—lv
Проверьте свободное место в Linux с помощью команды:
Итак, мы успешно расширили LVM том в Ubuntu.
$ sudo parted
print free
resizepart n
Предыдущая статья Следующая статья
Установка и настройка прокси сервера Squid в Linux
Мониторинг срока регистрации (освобождения) домена в Zabbix
Настройка Wi-Fi точки доступа на Linux
Управление конфигурацией Windows через Ansible