С чего начать Первые шаги трек · 15 ступеней
Linux Labs

resize2fs / xfs_growfs — рост файловой системы

4 мин e2fsprogs · xfsprogs

Расширить ext4/xfs после роста тома — растёт онлайн, сжимает только ext4 и офлайн.

Шпаргалка

6 команд Версия для печати
  • sudo lvextend -L +10G /dev/labvg/data сначала вырос том (см. lvm)
  • sudo resize2fs /dev/labvg/data ext4: занять всё свободное место в томе
  • sudo resize2fs /dev/labvg/data 20G ext4: до конкретного размера
  • sudo xfs_growfs -d /data xfs: точка монтирования, не устройство!
  • sudo lvextend -r -L +10G /dev/labvg/data том + ФС одной командой
  • df -h /data проверить результат

Обзор

После lvextend (или роста раздела в облаке) свободного места в блочном устройстве стало больше, но файловая система на нём — ещё нет, пока её не расширили отдельной командой:

  • ext4/ext3/ext2 → resize2fs, растёт онлайн (на смонтированной ФС).
  • xfs → xfs_growfs, тоже онлайн, но принимает точку монтирования, а не имя устройства.

lvextend -r делает оба шага одной командой (см. lvm) — но полезно знать их по отдельности: так же растёт диск в облаке или ФС без LVM.

Ключи

6

Ниже — основные ключи resize2fs и xfs_growfs; полный список — в man resize2fs/man xfs_growfs.

Ключ Что делает Пример
-d SIZE Расширить секцию данных (единственное, что реально уменьшить у XFS нельзя). xfs_growfs -d /data
-p Показывать прогресс операции. resize2fs -p /dev/labvg/data
SIZE SIZE Целевой размер (K/M/G/T); без аргумента — вырасти на весь раздел/LV. resize2fs /dev/labvg/data 20G
-n Только показать текущие параметры ФС, ничего не менять. xfs_growfs -n /data
-M Сжать ФС до минимально возможного размера (перед уменьшением тома). опасно resize2fs -M /dev/labvg/data
-f Принудительно выполнить, даже если ФС не размонтирована как положено. опасно resize2fs -f /dev/labvg/data

Ничего не найдено. Попробуй запрос короче.

Рецепты

3

ext4: resize2fs

bash
sudo lvextend -L +10G /dev/labvg/data
sudo resize2fs /dev/labvg/data              # без размера — занять всё свободное
df -h /data

xfs: xfs_growfs

bash
sudo lvextend -L +10G /dev/labvg/data
sudo xfs_growfs -d /data                    # точка монтирования, не /dev/labvg/data!
df -h /data

Обе команды одним шагом

bash
sudo lvextend -r -L +10G /dev/labvg/data    # растянуть том и сразу resize2fs/xfs_growfs

Неполадки

4

xfs_growfs: «specified file is not on device»

Передал имя устройства (/dev/labvg/data) вместо точки монтирования. xfs_growfs берёт путь монтирования (/data), в отличие от resize2fs.

После lvextend df -h не показал новый размер

Том вырос, а файловая система — ещё нет: забыт отдельный шаг resize2fs/ xfs_growfs (или -r у lvextend).

resize2fs: «New size smaller than minimum»

Целевой размер меньше, чем занимают данные на ФС. Узнать минимум: sudo resize2fs -P /dev/labvg/data (в блоках ФС).

Расширение зависло или ругается на место

Свободное место нужно на уровне тома группы, а не только лог. тома: sudo vgs (свободно в VG) и sudo lvs — если в VG пусто, сначала vgextend/добавь диск (см. lvm).

Опасно

2

XFS нельзя уменьшить — только вырастить

У xfs_growfs нет обратной операции: сжать XFS штатными средствами невозможно вообще. Если нужно уменьшить раздел с XFS — только создать новую ФС меньшего размера и перенести данные (бэкап, mkfs.xfs, восстановление).

Уменьшение ext4 — офлайн и с запасом

resize2fs умеет уменьшать ext4, но только на отмонтированной ФС и до уменьшения самого тома (lvreduce), не после — иначе обрежет живые данные. Перед этим обязателен e2fsck -f (см. filesystems) и бэкап: ошибка в расчёте размера необратимо повреждает файловую систему.

См. также

  • lvm — PV → VG → LV; гибкое управление дисками, расширение и снапшоты.
  • mount — Монтирование и fstab — точки монтирования, UUID, bind и tmpfs.
  • disk-usage — Куда делось место и inode — df, du, поиск крупных файлов.
Загрузка…