Открыть сервисСервис

Файловая система — организация данных в накопителях

Файловая система — это метод и набор структур данных, используемых операционной системой для организации, хранения, именования, доступа и управления данными на носителях информации: жёстких дисках, твердотельных накопителях, флеш-памяти, оптических дисках, сетевых ресурсах и других устройствах. Файловая система определяет, каким образом байты данных распределяются по секторам накопителя, как хранятся метаданные (имя файла, размер, дата создания и изменения, права доступа) и как пользователь или программа обращается к файлам через системные вызовы.

Основные понятия

Файловая система оперирует рядом базовых сущностей:

  • Файл — именованная последовательность данных, хранящаяся на носителе и рассматриваемая как единое целое.
  • Каталог (директория) — структура, содержащая ссылки на файлы и другие каталоги, образующая иерархию.
  • Метаданные — сведения о файле, не относящиеся к его содержимому: имя, размер, владелец, права доступа, временные метки.
  • Суперблок — служебная область, хранящая глобальную информацию о файловой системе: её размер, тип, состояние.
  • Инод (inode) — структура данных, описывающая файл: расположение блоков, размер, права, владельца. Используется в файловых системах семейства Unix.
  • Кластер (блок) — наименьшая единица распределения пространства на носителе.

Классификация

Файловые системы классифицируют по нескольким признакам.

По типу носителя:

  • Дисковые — для локальных накопителей (ext4, NTFS, Btrfs, XFS).
  • Сетевые — для удалённых ресурсов (NFS, SMB/CIFS, 9P).
  • Виртуальные — существуют в оперативной памяти (procfs, sysfs, tmpfs).
  • Журналируемые — ведут журнал изменений для восстановления после сбоя (ext3, ext4, NTFS, ReiserFS).

По внутренней структуре:

  • Иерархические — дерево каталогов (большинство современных ФС).
  • Плоские — без вложенности (устаревшие FAT12/FAT16 в упрощённом режиме).
  • Объектные — хранят данные в виде объектов (ZFS, Btrfs с поддержкой снапшотов).

Основные файловые системы

FAT

FAT (File Allocation Table) — одна из старейших файловых систем, разработанная Microsoft в конце 1970-х годов для дисководов floppy-формата. FAT12, FAT16 и FAT32 отличаются разрядностью таблицы распределения и максимальным размером тома. FAT32 поддерживает тома до 2 ТБ (практический предел для записи — 4 ГБ на файл) и обеспечивает высокую совместимость, поэтому продолжает использоваться на флеш-накопителях и в системах встраиваемой электроники. Расширение exFAT, представленное Microsoft в 2006 году, устраняет ограничения FAT32 на размер файла и тома.

NTFS

NTFS (New Technology File System) появилась в 1993 году как основная файловая система Windows NT. Поддерживает журналирование, шифрование (EFS), сжатие, контрольные точки восстановления, дисковые квоты, разрешения доступа на уровне ACL. Максимальный теоретический размер тома — 8 эксабайт, размер файла — 16 эксабайт минус 1 КБ.

ext

ext (extended file system) — семейство файловых систем ядра Linux. ext2 (1993) не имела журналирования, ext3 (2001) добавила журнал, ext4 (2008) поддерживает тома до 1 эксабайта, файлы до 16 ТБ, неограниченное количество файлов, улучшенные аллокацию и журналирование. ext4 долгое время была стандартной файловой системой дистрибутивов Debian, Ubuntu и CentOS.

XFS и Btrfs

XFS — 64-битная журналируемая ФС, разработанная Silicon Graphics в 1993 году, оптимизирована для больших файлов и параллельного ввода-вывода, включена по умолчанию в Red Hat Enterprise Linux 7 и новее.

Btrfs — файловая система, разработанная Oracle в 2007 году, поддерживающая снапшоты, сжатие, контрольные суммы, RAID на уровне ФС, дедупликацию. Активно развивается в сообществе Linux.

ZFS

ZFS — объединение файловой системы и менеджера томов, созданное Sun Microsystems в 2005 году. Использует копирование при записи (copy-on-write), обеспечивает целостность данных через контрольные суммы, поддерживает снапшоты, пул-хранилища, дедупликацию. Порт ZFS на Linux (OpenZFS) распространяется под CDDL-лицензией.

Виртуальные файловые системы

Операционные системы Unix и Linux используют подсистему виртуальных файловых систем (VFS), которая абстрагирует конкретную реализацию ФС за единым интерфейсом системных вызовов. Благодаря VFS программы, работающие с файлами, не зависят от того, хранятся ли данные на ext4, NFS или в оперативной памяти.

Специальные виртуальные ФС предоставляют доступ к служебной информации:

  • procfs (монтируется в /proc) — параметры процессов и ядра.
  • sysfs (монтируется в /sys) — дерево устройств и драйверов.
  • tmpfs — файловое хранилище в оперативной памяти.

Журналирование и надёжность

Журналируемые файловые системы записывают информацию о предстоящих изменениях в специальный журнал до их выполнения. После сбоя система восстанавливает целостность, проигрывая или откатывая незавершённые операции. Это сокращает время проверки диска после аварийного отключения. ZFS и Btrfs используют иной подход — копирование при записи с версионированием, что исключает повреждение согласованных данных.

Русская локализация и кодировки

В ранних версиях Windows поддержка кириллицы в именах файлов реализовывалась через кодовые страницы (CP866, CP1251), что приводило к проблемам при обмене файлами между системами. С появлением Unicode и переходом NTFS на UTF-16 имена файлов стали корректно отображаться в любой локали. В Linux имена файлов хранятся как байтовые последовательности, и для корректной работы с кириллицей используется UTF-8.

История

Первой файловой системой считается система, реализованная в операционной системе Compatible Time-Sharing System (CTSS) в Массачусетском технологическом институте в 1961 году. В 1964 году в проекте Multics появилась иерархическая структура каталогов, ставшая прообразом современных ФС. Файловая система Unix, разработанная в Bell Labs в 1969—1973 годах, заложила концепцию inode и единый подход к файлам, каталогам и устройствам.

Источники:

  • «Операционные системы. Теория и практика» — Э. Таненбаум, Х. Бос
  • «UNIX и Linux: руководство системного администратора» — Э. Немет, Г. Снайдер, Т.Р. Немет, Б. Уэйли
  • Документация проектов ext4, XFS, Btrfs, OpenZFS
  • Microsoft Docs: NTFS, exFAT specification
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru