Новинка Виртуальный VDS сервер в Нидерландах от 390р
Выберите продукт

Увеличиваем диск на VDS: growpart, resize2fs и xfs_growfs без простоя

Как увеличить диск на VDS без перезагрузки и простоя сервиса? Разбираем практические сценарии: один раздел на ext4 и XFS, LVM, GPT/MBR, NVMe/virtio. Покажу безопасные последовательности команд с growpart, resize2fs, xfs_growfs и pvresize/lvextend, проверки до и после, нюансы и частые ошибки.
Увеличиваем диск на VDS: growpart, resize2fs и xfs_growfs без простоя

Расширение диска на VDS — задача, которая встречается чаще, чем апгрейд CPU или RAM. Сервисы растут, логи и медиа копятся, а остановить прод-окружение ради увеличения файловой системы обычно нельзя. Хорошая новость: в Linux большинство сценариев расширения можно выполнить онлайн — без перезагрузки и без размонтирования тома. В статье соберу проверенные последовательности команд с пояснениями: growpart для расширения раздела, resize2fs для ext4 и xfs_growfs для XFS, а также pvresize/lvextend для LVM. Если требуется масштабирование инфраструктуры, апгрейд тарифа VDS делается без миграции ОС.

Когда реально обойтись без простоя

Онлайн-расширение диска возможно, если выполнены условия:

  • Файловая система поддерживает онлайн-увеличение: ext4 (через resize2fs) и XFS (через xfs_growfs).
  • Растёт последний раздел на диске (или используется LVM поверх физического тома, который можно расширить).
  • Ядро видит новый размер устройства (рескан устройства выполним без ребута).
  • Нет нестандартных прослоек, требующих отдельного шага (например, LUKS перед LVM).

Снижение риска: сделайте бэкап или снапшот в облаке перед началом. Операции безопасны, но ошибка в номере устройства или форс-перезапись таблицы разделов могут привести к простоям.

Аудит текущей разметки и ФС

Для начала зафиксируйте, как устроен диск: тип устройства, разметка (MBR/GPT), есть ли LVM, какая ФС, какие точки монтирования и UUID. Это поможет выбрать корректную последовательность команд.

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT
lsblk -f
df -hT
sudo fdisk -l
cat /etc/fstab
sudo pvs
sudo vgs
sudo lvs -a -o +devices

Частые ситуации:

  • Один раздел на всём диске (например, /dev/vda1 или /dev/nvme0n1p1) с ext4 или XFS и без LVM.
  • LVM поверх одного раздела (например, /dev/vda2PVVG → один или несколько LV), ФС ext4/XFS на логическом томе.
  • Несколько разделов, где нужный — последний, что упрощает расширение.

FastFox VDS
Облачный VDS-сервер
Виртуальные серверы с быстрым запуском и гибкой конфигурацией от 390₽ / мес
Доступные локации
Россия Нидерланды

Как ОС узнает о новом размере диска

После увеличения диска в панели провайдера (или через API) ядро может не сразу увидеть новый размер. Выполните рескан устройства. Виртуальные диски на KVM/QEMU обычно видны как /dev/vda (virtio) или /dev/sda (SCSI), на NVMe — /dev/nvme0n1.

# Универсально попытаться перечитать таблицу разделов
sudo partprobe
sudo blockdev --rereadpt /dev/vda

# Для NVMe
echo 1 | sudo tee /sys/class/block/nvme0n1/device/rescan

# Для virtio/SCSI можно инициировать хост-скан (с осторожностью, число хостов разнится)
for h in /sys/class/scsi_host/host*; do echo "- - -" | sudo tee $h/scan; done

lsblk -o NAME,SIZE,TYPE

Когда устройство «увеличилось», можно расширять раздел и файловую систему.

Снимок терминала с lsblk и fdisk: схема разделов ext4/XFS на VDS

Сценарий A: один раздел ext4 без LVM

Классика: один-единственный раздел, на нём корневая файловая система ext4. Для онлайн-расширения понадобятся growpart и resize2fs. Пакет с growpart называется cloud-guest-utils (Debian/Ubuntu) или cloud-utils-growpart (RHEL/CentOS/Alma/Rocky).

# Установить growpart (если отсутствует)
# Debian/Ubuntu
sudo apt update
sudo apt install -y cloud-guest-utils
# RHEL/CentOS/Alma/Rocky
sudo yum install -y cloud-utils-growpart

# Проверить текущее состояние
lsblk -f

# Предположим, диск /dev/vda и раздел /dev/vda1 — последний и единственный
sudo growpart /dev/vda 1

# Обновить данные ядра о таблице разделов
sudo partprobe /dev/vda

# Расширить ext4 онлайн (при смонтированном /)
sudo resize2fs /dev/vda1

# Проверить
df -hT
lsblk -f

resize2fs умеет онлайн-расширение ext4, если раздел смонтирован в rw. Если вы увеличиваете не корень, а, например, /var или /home, порядок тот же. Главное — сначала расширить раздел (growpart), затем файловую систему (resize2fs).

Сценарий B: один раздел XFS без LVM

XFS расширяется только онлайн и только в смонтированном состоянии. Используем growpart для раздела и xfs_growfs для ФС.

# Убедитесь, что установлен пакет с xfs_growfs (обычно xfsprogs)
sudo xfs_info /

# Предположим, /dev/nvme0n1p1 — корневой раздел XFS
sudo growpart /dev/nvme0n1 1
sudo partprobe /dev/nvme0n1

# Расширяем ФС на весь доступный размер раздела (указываем точку монтирования)
sudo xfs_growfs /

# Проверяем
df -hT
sudo xfs_info /

Для XFS рекомендуют явно указывать точку монтирования (/path), хотя можно и устройство. Если расширяется не корень, замените / на нужную точку.

Сценарий C: LVM поверх одного раздела

Самый популярный прод-сценарий: диск → раздел → PV → VG → LV → ФС. Здесь цепочка длиннее, но тоже выполняется онлайн.

# Пример: /dev/vda2 — физический том LVM (PV) для VG=vg0, LV=lv_root

# 1) Расширяем раздел
sudo growpart /dev/vda 2
sudo partprobe /dev/vda

# 2) Расширяем физический том LVM
sudo pvresize /dev/vda2

# 3) Увеличиваем логический том (на весь свободный space)
sudo lvextend -l +100%FREE /dev/vg0/lv_root

# 4a) Если ext4 — расширяем ФС
sudo resize2fs /dev/vg0/lv_root

# 4b) Если XFS — расширяем ФС
sudo xfs_growfs /mnt_or_root

# Проверяем
sudo lvs -a -o +seg_size,seg_start_pe
df -hT

Вместо двух шагов 3–4 можно использовать lvextend -r (auto-resize FS), но на проде лучше иметь явный контроль над файловой системой:

# Автоматическое расширение ФС вместе с LV
sudo lvextend -l +100%FREE -r /dev/vg0/lv_root

Если в VG несколько LV, решите заранее, какой из них получит свободное место. Можно распределить точечными значениями, например -L +20G, вместо «всё свободное».

Диаграмма LVM: PV→VG→LV и команды pvresize/lvextend

Сценарий D: несколько разделов, нужный — последний

Если у вас несколько разделов, и расширять нужно именно последний — всё просто: применяйте growpart к нему, затем растите ФС. Если раздел не последний, без переноса данных и сложных манипуляций (например, LVM, pvmove или бэкап → перестройка) онлайн-расширение проблематично. На практике для гибкости рекомендуют мигрировать на схему с LVM, чтобы в будущем масштабировать без танцев с разделами.

GPT vs MBR, имена устройств и номера разделов

Нюансы, которые часто путают:

  • MBR ограничен 2 ТБ на диск. Для больших дисков используйте GPT.
  • У NVMe дисков разделы имеют суффикс p: /dev/nvme0n1p1, /dev/nvme0n1p2.
  • У virtio/SCSI обычно /dev/vda1, /dev/sda1.
  • growpart принимает номер раздела, а не имя устройства: growpart /dev/vda 1, growpart /dev/nvme0n1 1.

Если вы предпочитаете parted, можно использовать resizepart в неинтерактивном режиме. Но growpart прозрачнее и аккуратнее работает с границами разделов в типовых шаблонах облачных образов.

Проверки до/после и телеметрия

Сравните состояние до и после операций:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT
sudo pvs; sudo vgs; sudo lvs -a -o +devices
sudo xfs_info /        # если XFS
sudo dumpe2fs -h /dev/mapper/vg0-lv_root | grep -i 'block count\|block size'  # если ext4

Нагрузочные сервисы (БД, очереди) сохранят доступность, но на период растягивания ФС возможны кратковременные пики I/O. Планируйте окно низкой нагрузки, если к задержкам крайне чувствительны.

Частые ошибки и как их избежать

  • Запуск resize2fs или xfs_growfs без расширения раздела. Сначала growpart, затем расширение ФС.
  • Забыли pvresize в LVM-сценарии. Без этого VG не увидит новые PE, lvextend вернёт нехватку места.
  • Расширение не последнего раздела. Планируйте миграцию в LVM или переразметку с бэкапом.
  • Несоответствие устройства. Путают /dev/vda и /dev/vda1, /dev/nvme0n1 и /dev/nvme0n1p1. Проверяйте lsblk -f.
  • Зашифрованные тома (LUKS) забыли расширить. Порядок иной: раздел → LUKS (cryptsetup resize) → PV → VG → LV → ФС.
  • Нет бэкапа. Даже при онлайн-операциях необходима точка возврата.

Пакеты и команды по дистрибутивам

  • Debian/Ubuntu: cloud-guest-utils для growpart, xfsprogs для XFS, lvm2 для LVM.
  • RHEL/CentOS/Alma/Rocky: cloud-utils-growpart, xfsprogs, lvm2.
# Debian/Ubuntu
sudo apt update
sudo apt install -y cloud-guest-utils xfsprogs lvm2

# RHEL/CentOS/Alma/Rocky
sudo yum install -y cloud-utils-growpart xfsprogs lvm2

Мини-чеклисты команд

ext4 без LVM

lsblk -f
sudo growpart /dev/vda 1
sudo partprobe /dev/vda
sudo resize2fs /dev/vda1
df -hT

XFS без LVM

lsblk -f
sudo growpart /dev/nvme0n1 1
sudo partprobe /dev/nvme0n1
sudo xfs_growfs /
df -hT

LVM (ext4)

lsblk -f; sudo pvs; sudo vgs; sudo lvs
sudo growpart /dev/vda 2
sudo partprobe /dev/vda
sudo pvresize /dev/vda2
sudo lvextend -l +100%FREE /dev/vg0/lv_data
sudo resize2fs /dev/vg0/lv_data

LVM (XFS)

lsblk -f; sudo pvs; sudo vgs; sudo lvs
sudo growpart /dev/vda 2
sudo partprobe /dev/vda
sudo pvresize /dev/vda2
sudo lvextend -L +50G /dev/vg0/lv_logs
sudo xfs_growfs /var/log

Наблюдаемое поведение и безопасность

Операции «resize» обычно быстрые: growpart мгновенный, resize2fs на ext4 работает пропорционально размеру ФС и может занять минуты на очень больших томах; xfs_growfs как правило работает быстро. На загруженных системах планируйте окно, когда дисковая подсистема не забита.

Важно: операции расширения увеличивают доступное пространство, но не исправляют физические проблемы накопителя. Следите за SMART/health метриками, I/O задержками и лимитами хранилища в облаке.

Траблшутинг

  • growpart жалуется на несогласованность таблицы разделов. Проверьте, что раздел — последний, и диск действительно увеличен на уровне гипервизора. Иногда помогает sgdisk -e для восстановления GPT backup header (делайте бэкап перед операцией).
  • resize2fs: Not enough space. Значит, раздел не расширен. Проверьте fdisk -l, lsblk.
  • pvresize: Failed to read PV. Убедитесь, что указываете именно PV-устройство (например, /dev/vda2), а не whole disk.
  • xfs_growfs: new size equal to old size. Раздел не вырос или LV не увеличен (в LVM-сценарии). Проверьте выходные данные lvs.

Полезно к прочтению: тюнинг ext4/XFS на VDS и снапшоты LVM для горячих бэкапов.

Итоги

Онлайн-расширение диска на VDS — рутинная операция: расширяем устройство на стороне гипервизора, убеждаемся, что ядро видит новый размер, увеличиваем последний раздел через growpart, затем расширяем файловую систему — resize2fs для ext4 или xfs_growfs для XFS. В LVM добавляются шаги pvresize и lvextend. При аккуратной подготовке и проверках всё выполняется без простоя и перезагрузки.

Поделиться статьей

Вам будет интересно

Как безопасно выполнить bootstrap MariaDB Galera после полного останова

Как безопасно выполнить bootstrap MariaDB Galera после полного останова

После одновременной остановки всех узлов Galera обычного запуска MariaDB недостаточно. Сначала найдите сервер с последней транзакц ...
CoreDNS в Kubernetes: исправляем CrashLoopBackOff, SERVFAIL и DNS-петлю

CoreDNS в Kubernetes: исправляем CrashLoopBackOff, SERVFAIL и DNS-петлю

Разберём, почему CoreDNS перезапускается или отвечает SERVFAIL, как обнаружить замкнутую пересылку DNS-запросов, проверить доступн ...
Apache Kafka KRaft на VDS: отдельные controller и broker

Apache Kafka KRaft на VDS: отдельные controller и broker

Соберём новый Kafka-кластер без ZooKeeper на шести Linux VDS: три узла controller образуют отказоустойчивый metadata quorum, а три ...