...

воскресенье, 15 марта 2015 г.

[Из песочницы] Правильное увеличение размера диска в виртуальной машине

Не претендуя на полноту, все же считаю, что это может пригодиться системным администраторам.

Увеличение размера диска в виртуальной машине происходило при следующих вводных: формат файла виртуалки 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 /dev/vdb



получим размер диска:


(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




увеличим logical root partition


(parted) resizepart 5
End? [1000GB]? 1288Gb
(parted) q




теперь нужно увеличить размер физического диска в lvm


pvresize /dev/vdb5




увеличиваем размер логического диска в lvm


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




В выводе resize2fs должно быть такое:

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



2. Перезагрузка виртуальной машины

3. На виртуальной машине

parted /dev/vda



Посмотрим размер физического диска и всех логических разделов

(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




увеличим extended partition


(parted) resizepart 2
End? [1000GB]? 1288Gb




увеличим logical root partition


(parted) resizepart 5
End? [1000GB]? 1288Gb
(parted) q




теперь нужно увеличить размер физического диска в lvm


pvresize /dev/vda5




увеличиваем размер логического диска в lvm


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 убьёт файловую систему

Проверить, что получилось:


df -h


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий