Что такое файловая система? Какие файловые системы вы знаете? <!-- grade: junior -->
Файловая система — это способ организации, хранения и доступа к данным на накопителе, определяющий, как данные и метаданные (имя, размер, дата, права) размещаются на диске и как к ним осуществляется доступ.
Аналогия: файловая система — это система полок и папок в библиотеке. Без неё книги (данные) лежали бы одной кучей. Файловая система определяет, как книги расставлены, как составлен каталог (индекс) и как найти нужную книгу по названию.
Основные понятия
- Файл — именованная последовательность байтов.
- Каталог (директория) — специальный файл, содержащий список файлов и подкаталогов.
- Путь — адрес файла в иерархии каталогов (
/home/user/file.txtилиC:\Users\file.txt). - Inode (index node) — структура данных в Unix-подобных ФС, хранящая метаданные файла (размер, владелец, права, указатели на блоки данных). Имя файла хранится в каталоге, а не в inode.
Популярные файловые системы
| ФС | ОС | Макс. размер файла | Особенности |
|---|---|---|---|
| ext4 | Linux | 16 ТБ | Стандартная ФС для Linux. Журналирование, extents, обратная совместимость с ext3 |
| NTFS | Windows | 16 ЭБ | Стандартная ФС для Windows. ACL, журналирование, шифрование (EFS), сжатие |
| FAT32 | Кроссплатформенная | 4 ГБ | Простая, совместима со всеми ОС. Ограничение 4 ГБ на файл. Используется для USB-флешек |
| exFAT | Кроссплатформенная | 16 ЭБ | «FAT32 без ограничений». Для SD-карт и флешек |
| XFS | Linux | 8 ЭБ | Высокая производительность для больших файлов. Используется в RHEL/CentOS |
| ZFS | Linux/FreeBSD | 16 ЭБ | Проверка целостности данных (checksums), снапшоты, встроенный RAID |
| APFS | macOS | 8 ЭБ | Оптимизирована для SSD, снапшоты, шифрование |
Журналирование (Journaling)
Перед изменением данных журналируемая файловая система записывает намерение в журнал (лог транзакций). Если произошёл сбой (отключение питания), ФС может восстановить целостность по журналу, вместо того чтобы проверять весь диск.
| ФС | Журналирование |
|---|---|
| ext4, NTFS, XFS | Да |
| FAT32 | Нет |
| ZFS | Транзакционная модель (COW) |
Inode в ext4
- Каждый файл и каталог имеет inode.
- Inode содержит: размер, владелец (UID/GID), права (rwxrwxrwx), временные метки (ctime, mtime, atime), указатели на блоки данных.
- Имя файла -> номер inode (эта связь хранится в каталоге).
- Один файл может иметь несколько имён (hard links), указывающих на один inode.
- Количество inode фиксировано при создании ФС — можно исчерпать inode, даже если на диске остаётся место (много мелких файлов).
Значение для Java-разработчика
java.nio.file.Path,Files,FileSystem— работа с файлами в Java (NIO.2, начиная с Java 7).Files.getFileStore()— информация о файловой системе.- Ограничение FAT32 на 4 ГБ важно при записи больших файлов на USB.
- В Linux
java.nio.file.attribute.PosixFilePermissionsпозволяет работать с правами доступа (rwx).
Вывод
Файловая система организует данные на накопителе в иерархию файлов и каталогов. ext4 (Linux) и NTFS (Windows) — стандартные ФС для серверов. Журналирование защищает от повреждений при сбоях. Для Java-разработчика важно использовать NIO.2 API (Path, Files) и понимать ограничения конкретных ФС.
На собеседовании: junior-вопрос. Назовите 3-4 файловые системы и их применение. Ключевые моменты: ext4 — Linux, NTFS — Windows, FAT32 — кроссплатформенная с ограничением 4 ГБ. Если расскажете про inode и журналирование — это покажет более глубокое понимание.