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

Файловые системы: ext4, xfs, fsck

6 мин Ubuntu 24.04

Файловые системы: создание через mkfs, метки и UUID, проверка fsck, выбор между ext4 и xfs.

Шпаргалка

5 команд Версия для печати
  • lsblk -f ; blkid ; df -Th обзор ФС
  • sudo mkfs.ext4 -L data /dev/sdX1 создать (сотрёт!)
  • sudo tune2fs -m 1 /dev/sdX1 уменьшить резерв root до 1%
  • sudo umount /dev/sdX1 && sudo fsck -fy /dev/sdX1 проверка ext (отмонтированной!)
  • sudo xfs_repair /dev/sdX1 проверка xfs

Обзор

Файловая система организует данные на разделе/томе. Самые частые:

  • ext4 — универсальная, можно уменьшать, проверяется fsck/e2fsck;
  • xfs — хорошо масштабируется, только растёт (уменьшить нельзя), чинится xfs_repair.

Связка: блочное устройство → ФС (mkfs) → монтирование (mount) → файлы.

bash
lsblk -f                          # устройства + тип ФС + UUID + точка монтирования
blkid                             # UUID и тип каждого раздела
df -Th                            # смонтированные ФС с типом и местом

Рецепты

3

Создание и метки

bash
sudo mkfs.ext4 /dev/sdb1          # создать ext4 (СОТРЁТ данные!)
sudo mkfs.ext4 -L data /dev/sdb1  # сразу с меткой
sudo mkfs.xfs /dev/sdb1           # создать xfs
sudo mkfs.xfs -f /dev/sdb1        # перезаписать существующую ФС
sudo e2label /dev/sdb1 data       # метка тома (ext)
sudo xfs_admin -L data /dev/sdb1  # метка тома (xfs)
sudo blkid /dev/sdb1              # узнать UUID (для fstab)

Монтировать в /etc/fstab лучше по UUID (имена /dev/sdX «плавают»).

Тюнинг и инфо (ext4)

bash
sudo tune2fs -l /dev/sdb1         # все параметры ФС (UUID, счётчик монтирований, фичи)
sudo tune2fs -m 1 /dev/sdb1       # зарезервировано для root: 5%→1% (вернуть место на больших дисках)
sudo tune2fs -L newlabel /dev/sdb1
sudo tune2fs -U random /dev/sdb1  # сменить UUID (после клонирования диска — иначе дубликат!)
sudo dumpe2fs -h /dev/sdb1        # суперблок кратко
xfs_info /mnt/xfs                 # параметры смонтированной xfs

Проверка (fsck)

bash
sudo umount /dev/sdb1             # ФС должна быть ОТМОНТИРОВАНА!
sudo fsck -f /dev/sdb1            # принудительно проверить ext (-f)
sudo fsck -y /dev/sdb1            # автоответ «да» на исправления
sudo e2fsck -fy /dev/sdb1         # то же напрямую для ext
sudo xfs_repair /dev/sdb1         # для xfs (fsck.xfs ничего не делает!)
sudo xfs_repair -n /dev/sdb1      # dry-run (только проверить, не чинить)

Никогда не запускай fsck на смонтированной ФС — повредишь данные. Корень проверяют из live/recovery или автопроверкой при загрузке (fsck.mode=force в параметрах ядра, либо tune2fs -c). Подробнее — в «Опасно».

Неполадки

5

Ошибка ext4, ФС ушла в read-only

ext4 нашла повреждение и записала в журнал ядра EXT4-fs error (см. dmesg). Что дальше, задаёт поведение при ошибке в суперблоке:

bash
sudo dumpe2fs -h /dev/sdb1 | grep -i 'errors behavior'
sudo tune2fs -e remount-ro /dev/sdb1     # continue | remount-ro | panic

Новая ФС от mkfs.ext4 получает Continue: ошибка записана, работа идёт дальше. Корень Ubuntu смонтирован с errors=remount-ro (/etc/fstab). С remount-ro ядро обрывает журнал (Aborting journal) и пишет Remounting filesystem read-only. На ядре 6.8 Ubuntu 24.04 это выглядит так:

  • findmnt по-прежнему показывает rw, а запись отвечает Input/output error;
  • mount -o remount,rw возвращает 0, но запись не возвращается;
  • mount -o remount,ro — cannot mount /dev/loop0 read-only, код 32.

Чинит только проверка на отмонтированной ФС:

bash
sudo umount /mnt/data
sudo dumpe2fs -h /dev/sdb1 | grep -iE 'state|error count'
sudo e2fsck -fy /dev/sdb1; echo $?       # 1 — ошибки исправлены
sudo mount /mnt/data

До проверки dumpe2fs показывает Filesystem state: clean with errors и FS Error count: 1, после — clean. e2fsck на смонтированной ФС отказывается: is mounted. и Cannot continue, aborting., код 8. Повторяющиеся ошибки на настоящем диске — признак его износа: проверь SMART (smartctl -a).

Не могу уменьшить xfs

xfs не уменьшается в принципе. Уменьшать умеет только ext4 (resize2fs на меньший размер, при отмонтированной ФС), иначе — пересоздавать и копировать.

«Structure needs cleaning» (xfs)

Повреждение: отмонтируй и xfs_repair. Если не монтируется — xfs_repair -L сбросит журнал (крайняя мера, риск потери последних записей).

На большом диске «не хватает места» при свободном

5% зарезервировано для root по умолчанию. На диске данных верни: tune2fs -m 1.

После клонирования два раздела с одним UUID

Смени один: tune2fs -U random (ext) / xfs_admin -U generate (xfs).

Опасно

3

mkfs стирает раздел без возможности восстановления

sudo mkfs.ext4 /dev/sdX1 (и любой другой mkfs.*) создаёт новую файловую систему поверх содержимого раздела — все прежние данные становятся недоступны сразу, штатного отката нет. Перед запуском проверяй устройство дважды (lsblk -f, blkid): /dev/sdb1 на одной машине и /dev/sdb1 на другой (или после переподключения диска) могут быть совершенно разными разделами.

fsck/xfs_repair на смонтированной ФС

Проверка и исправление ФС, пока она смонтирована и с ней работают процессы, может повредить данные — fsck видит несогласованное состояние структур, которое ядро ещё не записало на диск, и «чинит» то, что было верным. Всегда umount перед fsck; корневую ФС проверяют из live-окружения/recovery или автопроверкой при следующей загрузке.

xfs_repair -L (сброс журнала)

Крайняя мера, когда xfs не монтируется даже для обычного ремонта. Сбрасывает журнал транзакций — последние незаписанные на диск изменения теряются. Пробуй xfs_repair без -L в первую очередь.

Термины

3
файловая система filesystem
Способ организации файлов, каталогов, метаданных и выделенного пространства на хранилище. Ещё встречается в: mkfs, blkid, dmesg, Capabilities: права root по частям и ещё 22
блок файловой системы filesystem block
Единица распределения пространства файловой системой; размер определяется её форматом и параметрами.
блочное устройство block device
Устройство, предоставляющее доступ к адресуемым блокам хранилища; может содержать файловую систему. Ещё встречается в: file, Loop-устройство, lsblk, resize2fs / xfs_growfs

См. также

  • mkfs — создать файловую систему: ключи, метка, что стирается.
  • blkid — UUID, метка и тип ФС для fstab.
  • fdisk-parted — разметить диск перед mkfs.
  • mount — Подключение файловых систем, постоянное монтирование через /etc/fstab, UUID.
  • lvm — PV → VG → LV; гибкое управление дисками, расширение и снапшоты.
  • disk-usage — Куда делось место и inode — df, du, поиск крупных файлов, ловушки.
Загрузка…