Увеличение корневого раздела xfs без перезагрузки сервера (без LVM)

Очень часто при использовании виртуализации корневой раздел на машинах делают небольшим и в какой-то момент место на нем заканчивается, а подчистить уже ничего нельзя. Если бы использовался LVM (Logical Volume Manager), то расширение раздела не представляло бы проблем, но когда для корневого раздела не используется LVM, то его расширение без остановки сервера многим видится проблемным. На самом деле никаких проблем с расширением корневого раздела без перезагрузки нет.

Ниже читайте как можно быстро расширить корневой раздел с xfs (или ext4) без остановки сервера.

Исходные данные: Виртуальный сервер (гипервизор VMware) с ОС Oracle Linux 7 и корневым разделом с файловой системой xfs без LVM
Задача: Расширить корневой раздел сервера без перезагрузки и остановки работы сервисов.

Последовательность действий будет такая:

1. Увеличиваем виртуальный диск на котором располагается корневой раздел в VMware.

Думаю здесь нет ничего сложного. Заходим в VMware vSphere или если vSphere не используется, то просто в Web-интерфейс VMware, выбираем нашу VM и увеличиваем раздел на 10 Гигабайт.

Изначально системный диск у меня был размером 8 Гигабайт.

2. Расширение раздела и файловой системы в самой VM.

Нам нужно увеличить корневой раздел на диске vda, посмотрим какие разделы там есть (lsblk) и куда они примонтированы (mount):

# lsblk /dev/vda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0   18G  0 disk
├─vda2 252:2    0  7.5G  0 part /
└─vda1 252:1    0  500M  0 part /boot

[code language="bash"]
# mount | grep vda
/dev/vda2 on / type xfs (rw,relatime,attr2,inode64,noquota)
/dev/vda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)

Мы видим, что корневой раздел является вторым — vda2, имеет размер 7.5G (Гигабайт). Так же мы видим, что весь диск vda имеет размер 18G, то есть действия в п.1 прошли успешно, до этого vda был размером 8G (Гигабайт).

Посмотрим размер разделов и сколько там свободного места:

# df -h /dev/vda{1,2}
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       497M  199M  299M  40% /boot
/dev/vda2       7.6G  6.6G  986M  88% /

На корневом разделе свободно всего 986M (Мегабайт), а сам раздел имеет размер 7.5G (Гигабайт)

Для увеличения раздела нам понадобится утилита growpart, по умолчанию она не устанавливается. Установим ее.

Для Oracle (RedHat) Linux выполните:

yum -y install cloud-utils-growpart

Для Ubuntu (Debian) Linux выполните:

apt-get -y install cloud-guest-utils

Синтаксис утилиты growpart простой:

growpart <device> <partition>

Мы знаем, что у нас корневой раздел расположен на устройстве /dev/vda, а номер партиции — 2, увеличиваем раздел:

# growpart /dev/vda 2
CHANGED: partition=2 start=1026048 old: size=15751168 end=16777216 new: size=36722655 end=37748703

Теперь можно расширить файловую систему xfs на все пространство увеличенного раздела с помощью утилиты xfs_growfs. Если бы ФС корневого раздела была ext4, то мы бы воспользовались утилитой resize2fs.

# xfs_growfs / -d
meta-data=/dev/vda2              isize=256    agcount=4, agsize=492224 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0 rmapbt=0
         =                       reflink=0
data     =                       bsize=4096   blocks=1968896, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 1968896 to 4590331

По выводу «data blocks changed from XXX to YYY» мы можем констатировать, что расширение ФС прошло, проверим размер корневого раздела:

# lsblk /dev/vda
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda    252:0    0   18G  0 disk
├─vda2 252:2    0 17.5G  0 part /
└─vda1 252:1    0  500M  0 part /boot
# df -h /dev/vda{1,2}
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       497M  199M  299M  40% /boot
/dev/vda2        18G  6.6G   11G  38% /

Мы видим, что раздел vda2 стал размером 17.5G (Гигабайт), а свободного места на корневом разделе xfs стало 11G (Гигабайт).

Все успешно!

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


Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

2 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Ерванд
Ерванд
3 лет назад

Я такую задачу решаю с помощью утилиты parted:
resizepart 2 -1s
где 2 — номер раздела /dev/vda2, а -1s первый с конца сектор.

Евгений
Евгений
3 лет назад
Ответить на  Ерванд

Здравствуйте, да, действительно при помощи parted тоже удобно делать, сам проверял. Но автору статьи спасибо за еще один сопосб.

2
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x