Файловая система
Файловая система — это порядок, определяющий способ организации, хранения и именования данных на носителях информации (жёстких дисках, твердотельных накопителях, оптических дисках, флеш-памяти и других запоминающих устройствах). Она обеспечивает интерфейс между операционной системой и физическим устройством хранения, абстрагируя сложность низкоуровневых операций чтения и записи и предоставляя пользователю и приложениям логическую структуру в виде иерархии файлов и каталогов (папок). Файловая система определяет такие параметры, как максимальный размер файла, длина имени файла, допустимые символы в имени, а также методы доступа к данным и управления правами.
История
Ранние системы
Первые компьютеры не имели файловых систем в современном понимании. Данные записывались на перфокарты, перфоленты или магнитные ленты последовательно, и доступ к ним был линейным. С появлением магнитных барабанов и дисков возникла необходимость в произвольном доступе к данным. В 1960-х годах компания IBM разработала для мейнфреймов систему IBSYS, которая поддерживала иерархическую структуру каталогов.
Развитие в 1970-1980-х годах
Ключевым этапом стало создание в 1977 году компанией Microsoft FAT (File Allocation Table) для операционной системы 86-DOS. FAT использовала таблицу размещения файлов для отслеживания кластеров на диске. Версия FAT12 поддерживала 8.3-формат имён (8 символов имени, точка, 3 символа расширения). В 1980-х годах с ростом объёмов дисков появились FAT16 и FAT32. В 1984 году компания Apple представила HFS (Hierarchical File System) для Macintosh, а в 1987 году Microsoft — HPFS (High Performance File System) для OS/2.
Современные системы
В 1993 году с выходом Windows NT 3.1 была представлена NTFS (New Technology File System), ставшая стандартом для семейства Windows. В мире Unix и Linux доминирующей стала ext2 (1993), затем ext3 (2001) с поддержкой журналирования и ext4 (2008). Для компакт-дисков был разработан стандарт ISO 9660 (1988), а для DVD — UDF (Universal Disk Format, 1995). В 2010-х годах для твердотельных накопителей и больших массивов данных появились ZFS (Sun Microsystems, 2005), Btrfs (Oracle, 2009) и APFS (Apple, 2017).
Классификация
По назначению
- Для жёстких дисков и SSD: NTFS, ext4, APFS, FAT32, exFAT.
- Для оптических дисков: ISO 9660, UDF.
- Для флеш-накопителей и карт памяти: FAT32, exFAT (поддержка файлов более 4 ГБ).
- Сетевые и распределённые: NFS (Network File System), SMB/CIFS, Ceph, GlusterFS.
- Виртуальные и псевдо-файловые системы: procfs (информация о процессах в Linux), sysfs, tmpfs (в оперативной памяти).
По способу хранения метаданных
- Журналируемые: ext3, ext4, NTFS, APFS. Ведут журнал (лог) изменений, что повышает устойчивость к сбоям.
- Нежурналируемые: FAT32, ext2. При внезапном отключении питания возможна потеря данных или повреждение структуры.
- С контролем целостности: ZFS, Btrfs. Используют контрольные суммы для всех данных и метаданных.
По типу адресации
- Табличные: FAT (использует таблицу размещения файлов).
- На основе индексных дескрипторов (inode): ext2/3/4, UFS (Unix File System). Каждый файл описывается индексным дескриптором, содержащим его атрибуты и указатели на блоки данных.
- B-деревья: NTFS (использует мастер-файловую таблицу MFT), Btrfs, ReiserFS.
Устройство и принципы работы
Основные компоненты
Любая файловая система состоит из нескольких логических частей:
- Загрузочная запись (boot sector): содержит информацию о структуре тома и код загрузчика (для системных дисков).
- Метаданные: описывают структуру каталогов, имена файлов, права доступа, временные метки (создания, изменения, доступа), размеры и расположение данных на диске.
- Область данных: собственно содержимое файлов, хранящееся в блоках (кластерах) фиксированного или переменного размера.
- Таблицы размещения: в FAT — таблица FAT, в NTFS — мастер-файловая таблица (MFT), в ext — таблица индексных дескрипторов.
Процесс чтения и записи
При записи файла операционная система обращается к файловой системе, которая:
- Находит свободные блоки (кластеры) на диске.
- Создаёт запись в каталоге (имя файла, ссылка на индексный дескриптор или запись в MFT).
- Записывает данные в выделенные блоки.
- Обновляет метаданные (размер, временные метки, журнал).
При чтении система находит запись в каталоге, по ней определяет расположение блоков и считывает их последовательно или произвольно.
Фрагментация
По мере записи и удаления файлов свободное пространство разбивается на фрагменты. Файлы, записанные в несмежные блоки, называются фрагментированными. Это снижает скорость последовательного чтения. Для борьбы с фрагментацией используются дефрагментация (для HDD) и TRIM-команды (для SSD, которые оптимизируют запись на уровне контроллера). Современные файловые системы (ext4, Btrfs, APFS) включают встроенные механизмы снижения фрагментации.
Основные характеристики и сравнение
| Файловая система | Макс. размер файла | Макс. размер тома | Журналирование | Поддержка прав доступа | Операционные системы |
|---|---|---|---|---|---|
| FAT32 | 4 ГБ | 2 ТБ (теоретически до 8 ТБ) | Нет | Нет | Все (Windows, macOS, Linux, Android) |
| exFAT | 16 ЭБ (эксабайт) | 64 ЗБ (зеттабайт) | Нет | Нет | Windows, macOS, Linux (с драйверами) |
| NTFS | 16 ЭБ | 256 ТБ (Windows), 8 ПБ (теоретически) | Да | Да (ACL) | Windows, macOS (только чтение), Linux (через ntfs-3g) |
| ext4 | 16 ТБ | 1 ЭБ | Да | Да (POSIX) | Linux, macOS (через ext4fuse), Windows (через драйверы) |
| APFS | 8 ЭБ | 9 ЗБ | Да | Да (POSIX) | macOS, iOS, iPadOS |
| ZFS | 16 ЭБ | 256 ЗБ | Да | Да | FreeBSD, Linux, Solaris |
| Btrfs | 16 ЭБ | 16 ЭБ | Да | Да | Linux |
Применение
В персональных компьютерах и серверах
- Windows: NTFS — основная системная файловая система, обеспечивающая шифрование (EFS), сжатие, дисковые квоты и теневые копии. Для внешних накопителей часто используется exFAT или FAT32.
- Linux: ext4 — стандартная файловая система для корневых разделов и домашних каталогов. Btrfs и ZFS применяются на серверах и NAS (сетевых хранилищах) благодаря поддержке снимков (snapshots), сжатия и RAID-подобных функций.
- macOS: APFS — системная файловая система с 2017 года, заменившая HFS+. Поддерживает шифрование, клонирование файлов и пространственное сжатие.
В мобильных устройствах
- Android: использует ext4 для системного раздела и внутренней памяти, FAT32 или exFAT для карт памяти microSD.
- iOS/iPadOS: APFS — единственная файловая система для внутреннего хранилища, обеспечивающая шифрование и безопасное удаление данных.
В оптических носителях
- CD/DVD: ISO 9660 (стандарт для дисков с данными), UDF (для DVD-Video и Blu-ray).
- Blu-ray: UDF версии 2.5 и выше.
Во встраиваемых системах и IoT
Для устройств с ограниченными ресурсами (микроконтроллеры, роутеры) применяются лёгкие файловые системы: YAFFS (Yet Another Flash File System), JFFS2 (Journaling Flash File System), LittleFS и SPIFFS. Они оптимизированы для работы с NAND- и NOR-флеш-памятью, минимизируют износ ячеек и не требуют большого объёма RAM.
Критика и ограничения
- Фрагментация: FAT32 и NTFS подвержены значительной фрагментации при активной записи/удалении. ext4 и Btrfs справляются с ней лучше, но не идеально.
- Сложность восстановления: При повреждении метаданных (например, сбой MFT в NTFS) восстановление данных может быть затруднено без специализированного ПО.
- Ограничения FAT32: невозможность хранить файлы размером более 4 ГБ и отсутствие поддержки прав доступа делают её непригодной для современных операционных систем.
- Проблемы с большими томами: FAT32 и exFAT не имеют журнала, что повышает риск потери данных при внезапном отключении питания.
- Совместимость: NTFS ограниченно поддерживается в macOS (только чтение) и Android. ext4 не поддерживается в Windows нативно.
Интересные факты
- Название FAT (File Allocation Table) происходит от ключевой структуры — таблицы размещения файлов, которая хранится в начале раздела и содержит записи о каждом кластере.
- NTFS использует мастер-файловую таблицу (MFT), которая сама является файлом. При повреждении MFT том может стать недоступным.
- Файловая система ZFS была разработана компанией Sun Microsystems для операционной системы Solaris и позже портирована на Linux и FreeBSD. Она объединяет функции файловой системы и менеджера томов.
- Btrfs (B-tree File System) изначально разрабатывалась как замена ext4 для Linux, но до сих пор не стала стандартной из-за сложности и неполной стабильности некоторых функций.
- APFS поддерживает клонирование файлов: при копировании файла в пределах одного тома данные физически не дублируются, пока один из копий не будет изменён (технология copy-on-write).
Источники
- Таненбаум Э., Бос Х. «Современные операционные системы» (4-е издание). — СПб.: Питер, 2015.
- Silberschatz A., Galvin P. B., Gagne G. «Operating System Concepts» (10th edition). — Wiley, 2018.
- Документация Microsoft по файловым системам Windows (NTFS, FAT, exFAT).
- Документация Linux Kernel (ext4, Btrfs, ZFS).
- Спецификация APFS от Apple Inc.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →