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

mkfs — создать файловую систему

6 мин Ubuntu 24.04 · e2fsprogs 1.47 · xfsprogs 6.6

Команда mkfs создаёт на разделе пустую файловую систему ext4 или xfs; прежние данные на разделе становятся недоступны.

Шпаргалка

7 команд Версия для печати
  • lsblk -f /dev/vdb что на диске сейчас
  • sudo mkfs.ext4 /dev/vdb1 ext4 на разделе
  • sudo mkfs.ext4 -L data /dev/vdb1 сразу с меткой data
  • sudo mkfs -t ext4 /dev/vdb1 то же через mkfs -t
  • sudo mkfs.xfs -L logs /dev/vdb2 xfs с меткой
  • sudo mkfs.ext4 -n /dev/vdb1 показать параметры, не создавая
  • sudo blkid /dev/vdb1 UUID новой ФС для fstab

Обзор

mkfs (make filesystem) записывает на раздел служебные структуры файловой системы: суперблок с её параметрами, таблицы inode, журнал. После этого раздел можно смонтировать и класть на него файлы. mkfs.ext4, mkfs.xfs — отдельные программы для каждого типа, mkfs -t тип просто вызывает нужную.

Порядок подготовки нового диска: таблица и раздел (fdisk-parted) → файловая система (mkfs) → монтирование (mount).

text
student@ubuntu:~$ sudo mkfs.ext4 -L data /dev/loop0p1
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 130560 4k blocks and 130560 inodes
Filesystem UUID: 4db8b2fe-ff93-4036-b20c-8175523f9825
Superblock backups stored on blocks:
        32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

При создании файловая система получает UUID, а с -L — метку. Оба значения печатает blkid, по ним раздел записывают в /etc/fstab. Повторный mkfs на том же разделе даёт новый UUID, и старая строка fstab перестаёт находить раздел.

Чем отличаются ext4 и xfs, как их проверять и чинить — в статье Файловые системы.

Ключи

10

Ниже ключи mkfs.ext4 (это mke2fs) и mkfs.xfs. Полный список — man mke2fs, man mkfs.xfs.

Ключ Что делает Пример
-L LABEL Метка файловой системы — имя для LABEL= в fstab и lsblk -f. sudo mkfs.ext4 -L data /dev/vdb1
-t TYPE Тип файловой системы для mkfs — ext4, xfs, vfat. sudo mkfs -t ext4 /dev/vdb1
-m PERCENT Сколько процентов места оставить только root; по умолчанию 5. sudo mkfs.ext4 -m 1 /dev/vdb1
-n Показать, что будет создано, ничего не записывая. sudo mkfs.ext4 -n /dev/vdb1
-q Не печатать ход работы — для скриптов. sudo mkfs.ext4 -q /dev/vdb1
-L LABEL Метка xfs, до 12 символов. sudo mkfs.xfs -L logs /dev/vdb2
-F Не переспрашивать, даже если на устройстве уже есть ФС. опасно sudo mkfs.ext4 -F /dev/vdb1
-i BYTES Один inode на столько байт; меньше число — больше inode. sudo mkfs.ext4 -i 4096 /dev/vdb1
-U UUID Задать UUID вместо случайного. sudo mkfs.ext4 -U 3f6c1a2e-9b7d-4c55-8e21-6d0b9a4f7c13 /dev/vdb1
-f Перезаписать существующую файловую систему. опасно sudo mkfs.xfs -f /dev/vdb2

Ничего не найдено. Попробуй запрос короче.

Рецепты

5

Новый раздел под данные

bash
lsblk -f /dev/vdb                       # у vdb1 пустой FSTYPE
sudo mkfs.ext4 -L data /dev/vdb1
sudo mkdir -p /srv/data
sudo mount /dev/vdb1 /srv/data
df -h /srv/data

Найти раздел по метке

bash
sudo blkid -L data             # /dev/vdb1
sudo mount LABEL=data /srv/data

Меньше места под root на большом диске

bash
sudo mkfs.ext4 -m 1 -L backup /dev/vdb1   # резерв 1% вместо 5%

ext4 по умолчанию оставляет 5% места только для root. На диске данных это лишние гигабайты; уже созданной ФС резерв меняет tune2fs -m.

Много мелких файлов

bash
sudo mkfs.ext4 -i 4096 /dev/vdb1   # inode на каждые 4 КиБ

Число inode задаётся при создании. Если файлов миллионы, а inode кончаются раньше места, ФС приходится пересоздавать — см. место на диске.

Файловая система в файле

bash
truncate -s 256M disk.img
mkfs.ext4 -q disk.img              # без sudo: это обычный файл
sudo mount disk.img /mnt           # mount сам подключит loop

Подробнее — в статье Loop-устройство.

Неполадки

6

contains a ext4 file system … Proceed anyway? (y,N)

На разделе уже есть файловая система, и mkfs.ext4 переспрашивает. Ответ y сотрёт её. Если раздел нужен — ответь N и проверь имя через lsblk -f.

/dev/vdb1 is mounted; will not make a filesystem here!

Раздел смонтирован, на нём работают. Если его действительно надо пересоздать — сначала отмонтируй (sudo umount /dev/vdb1) и убери строку из fstab.

appears to contain an existing filesystem (mkfs.xfs)

mkfs.xfs нашёл чужую файловую систему и отказался. Перезапись — ключом -f, когда ты уверен, что раздел не нужен. На смонтированном разделе он отвечает contains a mounted filesystem и печатает справку — сначала umount.

The file /dev/vdb1 does not exist and no size was specified

Раздела нет: опечатка в имени или ядро не перечитало таблицу. Сверь с lsblk, после разметки выполни sudo partprobe /dev/vdb.

После mkfs раздел не монтируется по fstab

mkfs выдал новый UUID, а в fstab остался старый. Возьми новый из sudo blkid /dev/vdb1 и поправь строку — см. mount.

mkfs на весь диск вместо раздела

mkfs.ext4 /dev/vdb (без цифры) создаёт ФС на всём диске поверх таблицы разделов. Так работать можно, но разделы пропадут. Если нужен раздел — сначала fdisk-parted, потом mkfs на /dev/vdb1.

Опасно

2

mkfs стирает раздел без отката

Новая файловая система ложится поверх старой, прежние файлы становятся недоступны сразу. Переспрашивает mkfs.ext4 только в терминале: в скрипте и в конвейере он молча пишет поверх существующей ФС. Перед запуском проверь устройство: lsblk -f покажет его тип, метку и точку монтирования. /dev/vdb1 на разных машинах и после перезагрузки может быть разным разделом.

mkfs, чтобы «починить» раздел

Если раздел не монтируется из-за неверной строки fstab, mkfs не лечит, а стирает данные. Сначала сравни строку fstab с выводом blkid.

См. также

  • fdisk-parted — создать раздел перед mkfs.
  • blkid — UUID, метка и тип новой файловой системы.
  • mount — подключить ФС и записать её в fstab.
  • filesystems — ext4 и xfs, проверка fsck, tune2fs.
  • lsblk — посмотреть диски и их файловые системы.
  • loop-device — потренироваться на файле вместо диска.
Загрузка…