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 uuid | UUID: конкретный, 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 UUID | UUID для UUID= в fstab |
Filesystem features | включённые функции: has_journal = ext3/4 с журналом, extent = ext4 |
Filesystem state | clean или 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. Поэтому в
dfAvailменьше, чем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