На одном из наших виртуальных серверов с установленной ОС CentOS 5.7, стало заканчиваться место на диске, и встал вопрос о расширении дискового пространства.
Панель управления виртуальным сервером SolusVM позволяет изменять в сторону увеличения дисковое пространство, отведённое под виртуальную машину. В том числе, это без проблем работает на технологии виртуализации KVM, на которой у нас построены виртуальные машины. Однако, ОС CentOS не может автоматически расширить файловую систему до нового размера отведённого дискового пространства. Переустанавливать систему крайне не хотелось, потому что это обернулось бы значительным простоем сервера. К счастью, нашёлся способ расширить диск и без переустановки системы.
Этот способ подразумевает, что диск вашего виртуального сервера отформатирован в LVM. Кстати, такой тип разделов инсталлятор CentOS предлагает по умолчанию при установке системы.
Сделав бэкап всех данных (обязательная операция!), я принялся за работу. В панели управления SolusVM увеличил объём выделенного дискового пространства с 60 до 140 ГиБ, затем перезагрузил VDS из панели, чтобы изменения вступили в силу. После этого видим, что устройство hda увеличилось до 150 ГБ:
# fdisk -l Disk /dev/hda: 150.3 GB, 150323855360 bytes 255 heads, 63 sectors/track, 18275 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 7832 62806117+ 8e Linux LVM
Однако, свободного места больше не стало:
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 58785924 45142212 10609396 81% / /dev/hda1 101086 37741 58126 40% /boot tmpfs 1556236 0 1556236 0% /dev/shm /usr/tmpDSK 495844 84942 385302 19% /tmp
Очевидно, у нас появилась свободная неразмеченная область. Создадим логический диск hda3 с таким же типом раздела Linux LVM, как и на диске hda2.
# fdisk /dev/hda
В оболочке fdisk вводим следующие команды:
n — создаём новый раздел;
p — обозначаем его как primary;
так как у нас было 2 логических раздела, то на вопрос Partition number (1-4) отвечаем 3;
t — укажем тип раздела;
опять тот же вопрос Partition number (1-4), конечно же отвечаем 3;
вводим 8e — это код типа раздела, соответствующий Linux LVM;
убедимся, что всё сделано верно, вводим p — показать таблицу разделов:
Disk /dev/hda: 150.3 GB, 150323855360 bytes 255 heads, 63 sectors/track, 18275 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 7832 62806117+ 8e Linux LVM /dev/hda3 7833 18275 83883397+ 8e Linux LVM
видим, что добавился раздел hda3, вводим w — сохранение изменений.
Здесь мы получим предупреждение о том, что изменения в данный момент невозможны, но всё будет ОК после перезагрузки.
выходим из оболочки fdisk, нажав Ctrl+Z, и перезагружаем виртуальный сервер.
После перезагрузки идём дальше. Создаём физический том hda3:
# pvcreate /dev/hda3 Physical volume "/dev/hda3" successfully created
Расширяем группу томов на освободившееся место. Используем наше имя группы томов VolGroup00, которое мы подсмотрели ранее, командой df:
# vgextend /dev/VolGroup00 /dev/hda3 Volume group "VolGroup00" successfully extended
Расширяем логический том. Для его имени также используем данные команды df:
# lvextend -l+100%FREE /dev/VolGroup00/LogVol00 Extending logical volume LogVol00 to 137.84 GB Logical volume LogVol00 successfully resized
Активируем:
# vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup00" using metadata type lvm2 # vgchange -ay 2 logical volume(s) in volume group "VolGroup00" now active
И, наконец, расширяем файловую систему:
# resize2fs /dev/VolGroup00/LogVol00 resize2fs 1.39 (29-May-2006) Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required Performing an on-line resize of /dev/VolGroup00/LogVol00 to 36134912 (4k) blocks. The filesystem on /dev/VolGroup00/LogVol00 is now 36134912 blocks long.
Это займёт некоторое время, зависящее от размера добавленного места.
После завершения операции видим, что свободное место в файловой системе действительно появилось:
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 140012336 44868028 87918352 34% / /dev/hda1 101086 37741 58126 40% /boot tmpfs 1556236 0 1556236 0% /dev/shm /usr/tmpDSK 495844 84980 385264 19% /tmp
Готово! Я ещё раз перезагружал виртуальный сервер, с тем чтобы убедиться, что всё работает нормально, но видимо это можно было и не делать. Таким образом, с помощью такой методики можно увеличить размер диска без переустановки операционной системы, сведя время недоступности сервера к минимуму — ко времени, требующемуся для 2-3 перезагрузок VDS.
Обсуждение закрыто.