resize2fs / xfs_growfs — рост файловой системы
Расширить ext4/xfs после роста тома — растёт онлайн, сжимает только ext4 и офлайн.
Шпаргалка
6 команд Версия для печати-
sudo lvextend -L +10G /dev/labvg/dataсначала вырос том (см. lvm) -
sudo resize2fs /dev/labvg/dataext4: занять всё свободное место в томе -
sudo resize2fs /dev/labvg/data 20Gext4: до конкретного размера -
sudo xfs_growfs -d /dataxfs: точка монтирования, не устройство! -
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 |
Ничего не найдено. Попробуй запрос короче.
Рецепты
3xfs: xfs_growfs
Обе команды одним шагом
Неполадки
4xfs_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).
Опасно
2XFS нельзя уменьшить — только вырастить
У 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, поиск крупных файлов.
Есть неточность? Сообщить об ошибке в статье