LinuxRuLinux без лишней теории
Файловые системы

Tune2fs: как посмотреть и изменить параметры файловой системы ext4

Редакция LinuxRu6 мин чтенияСоветы

Tune2fs в Linux меняет параметры файловой системы ext2, ext3 и ext4 без форматирования: sudo tune2fs -l показывает суперблок, -m задаёт резерв для root, -L и -U меняют метку и UUID. Заодно через неё проще всего узнать дату установки системы. Ниже таблица опций, примеры и разбор ошибок.

Tune2fs: как посмотреть и изменить параметры файловой системы ext4
Содержание
  1. Что это
  2. Просмотр параметров
  3. Дата установки
  4. Таблица опций
  5. Резерв для root
  6. Проверки fsck
  7. Метка и UUID
  8. Ошибки
  9. Частые вопросы

Что умеет tune2fs и с какими ФС работает

tune2fs входит в пакет e2fsprogs и меняет параметры уже созданной файловой системы ext2, ext3 или ext4 без переформатирования: метку, UUID, резерв места для root, правила проверки, набор функций. Пакет стоит практически в любом дистрибутиве по умолчанию, ставить ничего не нужно. Если вдруг утилиты нет:

# Debian, Ubuntu
sudo apt install e2fsprogs
# Fedora
sudo dnf install e2fsprogs
# Arch
sudo pacman -S e2fsprogs

Главное ограничение: на Btrfs, XFS и других системах tune2fs бесполезна. Fedora и openSUSE по умолчанию ставятся на Btrfs, так что сначала проверьте, что у вас за ФС:

findmnt -no SOURCE,FSTYPE /
lsblk -f

Если в столбце FSTYPE стоит ext4, читаем дальше. Если btrfs или xfs, нужные вам команды находятся в btrfs и xfs_admin. Как выбрать файловую систему при установке, мы разбирали в статье про разметку диска.

Просмотр параметров: tune2fs -l

Ключ -l печатает содержимое суперблока. Ничего не меняет, поэтому с него стоит начинать знакомство с любым разделом.

sudo tune2fs -l /dev/sda2
# только нужные строки
sudo tune2fs -l /dev/sda2 | grep -Ei 'volume name|uuid|reserved block count|mount count|check interval|features'

В выводе ищите строки Filesystem volume name (метка), Filesystem UUID, Reserved block count, Maximum mount count и Filesystem features. Если в Maximum mount count стоит -1, проверка по числу монтирований отключена. Для ext4, созданной современным mkfs, это нормальное состояние.

То же самое, плюс сведения о группах блоков, показывает dumpe2fs. Чтобы не утонуть в выводе, используйте ключ -h, он ограничится заголовком:

sudo dumpe2fs -h /dev/sda2

Как узнать дату установки Linux

Это самый популярный повод вспомнить о tune2fs. Время создания корневой файловой системы практически совпадает с датой установки дистрибутива, ведь установщик форматирует раздел в самом начале. Команда работает с правами root:

sudo tune2fs -l $(findmnt -no SOURCE /) | grep -i created

В старой версии статьи мы получали имя устройства через df / | tail -1 | cut -f1 -d' '. Вариант с findmnt короче и корректно работает с устройствами вида /dev/mapper/... при шифровании LUKS.

Вывод tune2fs с датой создания файловой системы в строке Filesystem created
Строка Filesystem created показывает, когда раздел был отформатирован

Второй способ не требует root: смотрим самый старый каталог в корне.

ls --time-style=long-iso -clt / | tail -n 1 | awk '{ print $6, $7 }'
Вывод ls с датой и временем самого старого каталога в корне файловой системы
Дата самого старого каталога в корне

Метод с ls менее точный: ключ -c сортирует по времени изменения метаданных, и после правки прав на каталог дата сдвинется. Для систем на Btrfs и других ФС есть альтернативы:

# время рождения корня, если ФС его хранит
stat -c %w /
# Btrfs: строка Creation time
sudo btrfs subvolume show /
# Fedora: когда поставлен базовый пакет
rpm -qi basesystem | grep -i 'install date'
# Arch: первая запись журнала pacman
head -n 1 /var/log/pacman.log

Основные опции tune2fs

Полный список есть в man tune2fs, но в работе используется около десятка ключей.

ОпцияЧто делаетПример
-lпоказать суперблокtune2fs -l /dev/sdb1
-Lзадать метку тома (до 16 символов)tune2fs -L data /dev/sdb1
-Uсменить UUID: значение, random, time или cleartune2fs -U random /dev/sdb1
-mрезерв для root в процентахtune2fs -m 1 /dev/sdb1
-rрезерв в блокахtune2fs -r 25000 /dev/sdb1
-cпроверка после N монтирований, 0 или -1 отключаетtune2fs -c 30 /dev/sdb1
-iинтервал проверки в днях (d), неделях (w), месяцах (m)tune2fs -i 1m /dev/sdb1
-eреакция на ошибку: continue, remount-ro, panictune2fs -e remount-ro /dev/sdb1
-Oвключить или выключить функцию ФС (^ выключает)tune2fs -O ^has_journal /dev/sdb1
-oопции монтирования по умолчанию в суперблокеtune2fs -o acl /dev/sdb1

Все команды из таблицы, кроме -l, запускаются через sudo.

Резерв 5% для root: когда его уменьшать

По умолчанию ext4 оставляет 5% блоков только для root. На системном разделе это полезно: даже при забитом диске службы и администратор смогут записать журналы и починить ситуацию. Но на диске с фильмами или резервными копиями на 4 ТБ этот резерв съедает около 200 ГБ впустую.

# для диска с данными хватит 1%
sudo tune2fs -m 1 /dev/sdb1
# для чистого архива можно и ноль
sudo tune2fs -m 0 /dev/sdb1

Изменение вступает в силу сразу, отмонтировать раздел не нужно. Результат видно в df -h или в более наглядной утилите duf.

Корневой раздел оставляйте с резервом 2-5%. Если место заканчивается, чистите кэш пакетов, журналы и старые ядра, а не обнуляйте запас для root. Иначе однажды система не сможет даже записать файл блокировки и зависнет на загрузке.

Проверка по числу монтирований и по времени

Раньше ext2 и ext3 проверялись fsck каждые 20-30 монтирований, и загрузка внезапно затягивалась на несколько минут. Для ext4 такая проверка отключена по умолчанию: журнал и контрольные суммы метаданных делают её почти ненужной. На сервере или на старом диске плановую проверку иногда возвращают:

# проверять раз в 30 монтирований или раз в месяц
sudo tune2fs -c 30 -i 1m /dev/sda2
# выключить обе проверки
sudo tune2fs -c 0 -i 0 /dev/sda2
# запросить проверку при следующей загрузке (при лимите 30)
sudo tune2fs -c 30 /dev/sda2
sudo tune2fs -C 31 /dev/sda2

Последняя пара команд задаёт лимит и выставляет счётчик монтирований выше него, и при следующей загрузке systemd-fsck проверит раздел. Чтобы при ошибках файловая система не продолжала писать и не портила данные дальше, задайте sudo tune2fs -e remount-ro /dev/sda2: при сбое раздел перемонтируется только для чтения.

Метка тома и UUID

Метка помогает узнать диск в менеджере файлов и в lsblk -f. Её можно менять на смонтированном разделе:

sudo tune2fs -L backup /dev/sdb1

UUID меняют реже, обычно после клонирования диска, когда у двух разделов оказывается одинаковый идентификатор и система путается при монтировании. Делать это надёжнее на отмонтированном разделе. Если включена функция metadata_csum, tune2fs перепишет контрольные суммы всех метаданных, и прерывать процесс нельзя.

sudo umount /dev/sdb1
sudo e2fsck -f /dev/sdb1
sudo tune2fs -U random /dev/sdb1
sudo blkid /dev/sdb1

После смены UUID обязательно исправьте /etc/fstab, если раздел монтируется по UUID. Для корневого раздела придётся ещё обновить конфигурацию загрузчика (update-grub в Debian и Ubuntu, grub2-mkconfig в Fedora), иначе система не загрузится.

Частые ошибки tune2fs

  • Bad magic number in super-block. Вы указали устройство без ext-системы: Btrfs, XFS или весь диск вместо раздела, например /dev/sda вместо /dev/sda2. Проверьте через lsblk -f.
  • Permission denied. Забыт sudo. Даже чтение суперблока требует прав root.
  • Команда отказывается работать на смонтированной ФС. Некоторые операции, например смена размера inode через -I или часть функций -O, требуют отмонтированного раздела и предварительной проверки e2fsck -f. Для корня загрузитесь с Live USB.
  • Раздел внутри LUKS или LVM. tune2fs работает с открытым устройством, например /dev/mapper/vg-root, а не с зашифрованным разделом.

Если раздел совсем перестал монтироваться, tune2fs не поможет: сначала sudo e2fsck -f на отмонтированном устройстве. Перед экспериментами с функциями файловой системы сделайте копию данных. Подробное описание каждой опции есть на странице man tune2fs, а основы работы с терминалом собраны в статье об основных командах Linux. Для форматирования нового раздела в ext4 пригодится инструкция по форматированию дисков.

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

Работает ли tune2fs с Btrfs или XFS?

Нет, только с ext2, ext3 и ext4. Для Btrfs используют команду btrfs, для XFS утилиту xfs_admin.

Как узнать дату установки Linux?

Выполните sudo tune2fs -l $(findmnt -no SOURCE /) | grep -i created. Строка Filesystem created покажет время форматирования корня, оно совпадает с установкой.

Можно ли менять параметры на смонтированном разделе?

Метку, резерв и правила проверки можно. Смену UUID с metadata_csum, размера inode и части функций делайте на отмонтированном разделе.

Сколько оставить резерва для root?

На системном разделе 2-5%, на диске с данными 1% или даже 0.

Что будет, если сменить UUID корня?

Система не загрузится, пока вы не исправите /etc/fstab и не обновите конфиг GRUB.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.