← Весь справочник

mkfs, tune2fs, dumpe2fs

Создать ext4 (в том числе в файле-образе), задать метку, резерв и число inode, посмотреть параметры ФС

Файловую систему создают командой mkfs (для ext4 — mkfs.ext4, она же mke2fs -t ext4), а параметры уже созданной ext2/3/4 смотрят через dumpe2fs и меняют через tune2fs. Всё это работает не только с разделом диска, но и с обычным файлом-образом — так можно потренироваться без настоящего диска. Все утилиты из пакета e2fsprogs.

В песочнице IzzyLab создавать и настраивать ФС в файле-образе можно, а смонтировать образ нельзя (нет права на mount и loop-устройств). Заглянуть внутрь образа без монтирования помогает debugfs.

Синтаксис

mkfs.ext4 [опции] устройство|файл [число_блоков]
tune2fs [опции] устройство|файл
dumpe2fs [-h] устройство|файл
e2label устройство|файл [новая_метка]

Опции mkfs.ext4

ОпцияЧто задаёт
-L меткаметка тома (до 16 символов) — для LABEL= в fstab
-m процентрезерв для root, по умолчанию 5%. Для дисков с данными ставят 1 или 0
-N числосколько inode создать (округляется вверх до кратного числу групп)
-i байтодин inode на столько байт места: меньше значение — больше inode. По умолчанию 16384, а для ФС меньше 512 МиБ (профиль small) — 4096
-I размерразмер одного inode в байтах; по умолчанию 256
-b размерразмер блока: 1024, 2048, 4096
-T типпрофиль из /etc/mke2fs.conf: small, news (много inode), largefile, largefile4
-U uuidзадать UUID вместо случайного
-O функциивключить или (^имя) выключить функции: ^has_journal, ^metadata_csum
-E опциирасширенные: lazy_itable_init=0, root_owner=uid:gid…
-d каталогсразу скопировать в новую ФС содержимое каталога
-Fне спрашивать подтверждения, если на устройстве уже есть ФС
-nничего не создавать, только показать, что получилось бы
-qбез вывода

Другие типы: mkfs.ext2, mkfs.ext3, mkfs.xfs (пакет xfsprogs), mkfs.vfat (dosfstools), mkswap для раздела подкачки. mkfs -t тип вызывает нужную mkfs.тип.

Опции tune2fs

ОпцияЧто меняет
-lпоказать параметры (то же, что dumpe2fs -h)
-L меткаметку тома
-m процент / -r блоковрезерв для root в процентах / в блоках
-u user / -g groupкому, кроме root, доступен резерв
-U uuidUUID: конкретный, random или time
-c числопроверять fsck каждые N монтирований (-1 — отключить)
-i интервалпроверять раз в интервал: 30d, 2w, 6m (m — месяцы); 0 — отключить
-e поведениечто делать при ошибке ФС: continue, remount-ro, panic
-O функциивключить/выключить функции: -O ^has_journal, -j — добавить журнал
-o опцииопции монтирования по умолчанию, записанные в саму ФС (acl, user_xattr)

Число inode tune2fs не меняет — его задают только при создании.

Как читать dumpe2fs -h

ПолеСмысл
Filesystem volume nameметка (<none> — не задана)
Filesystem UUIDUUID для UUID= в fstab
Filesystem featuresвключённые функции: has_journal = ext3/4 с журналом, extent = ext4
Filesystem stateclean или not clean — нужна проверка e2fsck
Errors behaviorреакция на ошибки (-e)
Inode count / Free inodesвсего inode и свободных — лимит на число файлов
Block count / Free blocks / Block sizeразмер ФС: блоки × размер блока
Reserved block countрезерв для root в блоках
Inode sizeразмер inode
Mount count / Maximum mount countмонтирований с последней проверки / порог (-1 — без порога)
Last checked / Check intervalпоследняя проверка / интервал проверок

Без -h dumpe2fs печатает ещё и описание каждой группы блоков — это длинно и нужно редко.

Примеры

# образ на 100 МиБ: файл с «дыркой», место на диске занимается по мере записи
truncate -s 100M disk.img

# ext4 с меткой, 1% резерва и 50 000 inode
mkfs.ext4 -L data -m 1 -N 50000 disk.img

# ключевые параметры
dumpe2fs -h disk.img 2>/dev/null | grep -E 'volume name|Inode count|Reserved block count|Block size'
tune2fs -l disk.img | grep -i uuid

# метка и UUID через blkid; поменять метку
blkid disk.img
e2label disk.img backup
tune2fs -L backup disk.img          # то же самое

# убрать резерв для root на диске с данными
tune2fs -m 0 disk.img

# при ошибке ФС переходить в режим только для чтения
tune2fs -e remount-ro disk.img

# ФС для множества мелких файлов: задать число inode явно
mkfs.ext4 -F -N 100000 disk.img

# создать ФС сразу с содержимым каталога и посмотреть внутрь без монтирования
mkfs.ext4 -F -q -d ./site disk.img
debugfs -R 'ls -l /' disk.img
debugfs -R 'cat /index.html' disk.img

# проверить ФС (только на НЕсмонтированной!); -n — ничего не исправлять
e2fsck -f -n disk.img

# увеличить образ и ФС в нём
truncate -s 200M disk.img
resize2fs disk.img

Подводные камни

  • mkfs уничтожает данные без «корзины». Перепутал /dev/sdb и /dev/sda — потерял систему. Сверься с lsblk -f и blkid перед запуском.
  • Подтверждение спрашивается только в терминале. Если на устройстве уже есть ФС, mkfs.ext4 в интерактивной оболочке спросит «Proceed anyway?», а в скрипте или через пайп молча перезапишет её. -F подавляет вопрос и в терминале.
  • Кончились inode — «No space left on device» при свободном месте. Миллион мелких файлов съедает inode раньше, чем блоки. Проверяй df -i; лечится только пересозданием ФС с -i поменьше или -N побольше.
  • 5% резерва на большом диске с данными — это десятки гигабайт, доступные только root. Поэтому в df Avail меньше, чем Size − Used, а обычный пользователь получает «No space left on device», когда root ещё может писать. Уменьшить — tune2fs -m 1.
  • Метка обрезается до 16 символов с предупреждением «label too long».
  • e2fsck на смонтированной ФС может её испортить. Проверяй отмонтированную или с -n.
  • -I 128 даёт inode без поддержки дат после 2038 года — mkfs об этом предупреждает. Оставляй 256.
  • Маленький образ получает мало inode и журнала: в 10 МиБ по умолчанию помещается всего 2560 файлов.

См. также

mount · df-du · truncate · dd · system-info