ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Linux-сервер

Расширение диска в Linux с помощью LVM: lvextend, resize2fs, xfs_growfs и growpart

6 шагов 10 мин чтения 989 просмотров 80
Содержание

Если на сервере закончилось место, а система использует LVM (менеджер логических томов), объём можно увеличить без переустановки и, как правило, без простоя. В статье описано расширение диска в Linux с помощью LVM в двух типичных случаях — добавление нового диска в группу томов и увеличение существующего диска, — а также расширение корневого раздела без LVM утилитой growpart. Команды подходят для Debian/Ubuntu и CentOS/Rocky/AlmaLinux и выполняются от root.

Операции затрагивают таблицу разделов и файловую систему. Обычно это безопасно и выполняется «на лету», но заранее сделайте снапшот или резервную копию и выполняйте команды по одной, проверяя вывод.

Шаг 1: Установите утилиты LVM и изучите текущую разметку

Установите lvm2 и пакет с growpart, затем с помощью lsblk, pvs, vgs и lvs определите, какой диск является физическим томом (PV), как называется группа томов (VG) и куда смонтированы логические тома (LV). В примерах используются VG vg0 и LV /dev/vg0/root — подставьте свои имена.

# Debian / Ubuntu
apt update && apt install -y lvm2 cloud-guest-utils

# CentOS / Rocky / AlmaLinux
dnf install -y lvm2 cloud-utils-growpart

# Inspect the current layout
lsblk
pvs
vgs
lvs
df -hT

Шаг 2: Вариант A — добавление нового диска в группу томов LVM

Если подключён второй диск, например /dev/vdc, инициализируйте его как физический том и добавьте в существующую группу. Значение VFree в выводе vgs увеличится — в группе появилось свободное место. Не выполняйте pvcreate на диске с данными.

# Scenario A: a new disk /dev/vdc was added
pvcreate /dev/vdc
vgextend vg0 /dev/vdc
vgs vg0

Шаг 3: Вариант B — расширение раздела после увеличения диска

Если размер существующего диска увеличен (например, с 40 до 100 ГБ), сначала растяните раздел до конца диска через growpart, затем выполните pvresize, чтобы физический том увидел новое место. Обратите внимание на пробел между именем диска и номером раздела.

# Scenario B: the existing disk /dev/vda was enlarged and the PV is partition 2
growpart /dev/vda 2
pvresize /dev/vda2
vgs

Шаг 4: Расширьте логический том командой lvextend

Когда в группе есть свободное место, выделите его нужному тому. -l +100%FREE отдаёт всё оставшееся место, -L +50G — фиксированный объём.

# Give all free space in the VG to the logical volume
lvextend -l +100%FREE /dev/vg0/root

# Or add a fixed amount
lvextend -L +50G /dev/vg0/data

Шаг 5: Увеличьте файловую систему (resize2fs или xfs_growfs)

Чтобы df показал новый размер, нужно расширить и файловую систему. Для ext4 запустите resize2fs с путём к тому, для XFS — xfs_growfs с точкой монтирования. Можно также добавить к lvextend ключ -r, и том с файловой системой расширятся за один шаг.

# ext4
resize2fs /dev/vg0/root

# XFS (pass the mount point)
xfs_growfs /

# Alternative: extend LV and filesystem in one step
lvextend -r -l +100%FREE /dev/vg0/root

df -hT

Шаг 6: Расширение корневого раздела без LVM через growpart

Во многих облачных образах корень — обычный раздел, а не LVM. После увеличения диска достаточно растянуть раздел growpart и затем файловую систему — всё онлайн, без перезагрузки.

# Root partition without LVM, e.g. /dev/vda1 mounted on /
growpart /dev/vda 1
resize2fs /dev/vda1      # ext4
xfs_growfs /             # XFS
df -hT /

Частые вопросы

growpart выводит NOCHANGE. Что это значит?

За разделом нет свободного места: либо новый размер диска ещё не применился, либо раздел уже максимальный. Проверьте размер диска в lsblk, при необходимости перезагрузите сервер и повторите.

Можно ли уменьшить XFS?

Нет, XFS только увеличивается. Для уменьшения придётся сделать резервную копию, пересоздать файловую систему и восстановить данные. ext4 можно уменьшить только в отмонтированном состоянии, и это рискованно.

Сразу после корневого раздела находится swap-раздел и мешает расширению.

Нужно отключить и удалить swap-раздел, расширить корень, а затем перейти на swap-файл или пересоздать swap в свободной области. Это сложная операция — при необходимости создайте тикет, и мы поможем.

Если проблема не решилась, создайте тикет — техническая поддержка IMIDC работает круглосуточно 24/7. Укажите IP-адрес сервера, операционную систему, выполненные команды и приложите скриншот ошибки: так инженер разберётся быстрее.

Помог ли вам данный ответ?

Похожие руководства