Файловые системы
Способ организации данных на диске: как файлы раскладываются по блокам, где хранятся их имена, права и метаданные.
Что такое файловая система
Файловая система (ФС) — правила, по которым операционная система размещает данные на диске и находит их обратно. Физически накопитель — это просто пронумерованные блоки по 4 КБ. Файловая система превращает их в дерево папок и файлов: ведёт учёт, какие блоки заняты, какие свободны, кому принадлежит файл и кто имеет право его читать.
Аналогия: диск — склад с пронумерованными ячейками, файловая система — журнал учёта. Отформатировать диск означает завести новый пустой журнал; старые коробки на складе физически ещё лежат, но найти их штатными средствами уже нельзя. Отсюда и то, что удалённые файлы часто удаётся восстановить.
Что такое inode
inode (index node, индексный дескриптор) — запись с метаданными одного файла. В ней лежит всё, кроме двух вещей:
| Есть в inode | Нет в inode |
|---|---|
| тип файла и права доступа | имя файла |
| владелец (UID) и группа (GID) | само содержимое |
| размер | |
| временные метки (mtime, ctime, atime) | |
| счётчик жёстких ссылок | |
| указатели на блоки с данными |
Имя файла хранится не в inode, а в каталоге — каталог это просто таблица «имя → номер inode». Из этого следует всё остальное: жёсткие ссылки — несколько имён на один inode; переименование файла не трогает данные; а rm уменьшает счётчик ссылок и освобождает блоки, только когда он дошёл до нуля и файл никем не открыт.
Практическое следствие, которое однажды всех кусает:
df -h # Use% 45% — места вагон
df -i # IUse% 100% — а inode кончились
No space left on device при свободном месте означает, что исчерпаны inode. В ext4 их количество фиксируется при форматировании, и миллион мелких файлов сессий или кеша съедает их раньше, чем гигабайты. Лечится чисткой мелочи или переносом на XFS, где inode выделяются динамически.
Какие бывают файловые системы
| ФС | Где по умолчанию | Стоит знать |
|---|---|---|
| ext4 | Debian, Ubuntu | рабочая лошадка, журналируемая, предсказуемая |
| XFS | RHEL, AlmaLinux, Rocky | хороша на больших файлах и параллельной записи, inode динамические |
| Btrfs | openSUSE, Fedora | снапшоты, сжатие, контрольные суммы прямо в ФС |
| ZFS | FreeBSD, ставится в Linux | снапшоты, RAID и проверка целостности в одном, любит RAM |
| NTFS | Windows | основная ФС Windows, в Linux читается и пишется |
| exFAT | флешки, карты памяти | понимают все ОС, но без прав доступа и журнала |
| FAT32 | старые флешки, UEFI-разделы | файл больше 4 ГБ записать невозможно |
Журналирование (есть в ext4, XFS, NTFS) — запись намерений перед самой операцией. При отключении питания система по журналу понимает, что осталось незавершённым, и не остаётся с рассыпавшимся деревом каталогов.
Для сервера выбор обычно тривиален: берите то, что дистрибутив предлагает по умолчанию — ext4 или XFS. Btrfs и ZFS осмысленны, когда нужны их снапшоты и контрольные суммы.
Работа с ФС на сервере
lsblk -f # диски, разделы, их ФС и UUID
df -h && df -i # место и inode
du -sh /var/log/* | sort -rh | head # кто съел место
mkfs.ext4 /dev/sdb1 # создать ФС (данные на разделе умрут)
mount /dev/sdb1 /mnt/data # примонтировать
tune2fs -m 1 /dev/sdb1 # снизить резерв под root с 5% до 1%
Чтобы диск подключался после перезагрузки, его прописывают в /etc/fstab — обязательно по UUID из lsblk -f, а не по /dev/sdb1: буквы устройств могут поменяться местами при следующей загрузке, и сервер уйдёт в аварийный режим.
В облаке и контейнерах
Диск облачного сервера — обычно сетевой том, а не физический SSD в шасси. Файловая система на нём та же, но производительность ограничена не диском, а квотой по IOPS. Файловая система живёт и в persistent volume контейнеров — а вот объектное хранилище файловой системой не является: там нет ни папок, ни inode, только плоский набор объектов по ключу.
Связанные термины
- SSD и HDD — носители, поверх которых лежит ФС
- RAID — объединение дисков под файловой системой
- Linux — где встречаются ext4 и XFS
- Утилиты Linux — chmod, du, df и работа с правами
- object storage — хранение без файловой системы
- Резервное копирование — то, чем снапшоты ФС не заменяются
Готовы запустить GPU-задачу?
Запустить GPU-сервер