Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах, системах ЧПУ и т. п. Файловая система определяет формат содержимого и способ физического хранения и представления информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа через поддержку ACL или даже шифрование файлов.
Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и о том, на каком физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке флеш-памяти или другом) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).
С точки зрения операционной системы (ОС), весь диск представляет собой набор кластеров. Драйверы файловой системы организуют кластеры в файлы и каталоги (чаще всего реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные файловые системы, а также сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.
По предназначению файловые системы можно классифицировать на нижеследующие категории.
- Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2/ext3/ext4 и др. Поскольку доступ к дискам в несколько раз медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например, в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах.
- Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.
- Для оптических носителей — CD и DVD: ISO 9660, HFS, UDF и др.
- Виртуальные файловые системы: AEFS и др.
- Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
- Для флэш-памяти: YAFFS, ExtremeFFS, exFAT, F2FS.
- Немного выпадают из общей классификации специализированные файловые системы: ZFS (собственно файловой системой является только часть ZFS), VMware VMFS (т. н. кластерная файловая система, которая предназначена для хранения других файловых систем) и др.
Основные функции любой файловой системы нацелены на решение следующих задач:
- именование файлов;
- программный интерфейс работы с файлами для приложений;
- отображения логической модели файловой системы на физическую организацию хранилища данных;
- организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
- содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.).
В многопользовательских системах появляется ещё одна задача: защита файлов одного пользователя от несанкционированного доступа других пользователей, а также обеспечение совместной работы с файлами, к примеру, при открытии файла одним из пользователей, для других этот же файл временно будет доступен в режиме «только чтение».
ФС позволяет оперировать не нулями и единицами, а более удобными и понятными объектами — файлами. Ради удобства в работе с файлами используются их символьные идентификаторы — имена. Само содержимое файлов записано в кластеры (clusters) — мельчайшие единицы данных, которыми оперирует файловая система, размер их как правило кратен 512 байтам. 512 байт — размер сектора у старых жёстких дисков, минимальной единицы данных, которая считывалась или записывалась на них (К 2000-м годам типичным размером кластера стал 4096 байт). Для организации информации, кроме имени файла, используются также каталоги (или папки), как некая абстракция, позволяющая группировать файлы по определённому критерию. По своей сути каталог — это файл, содержащий информацию о как бы вложенных в него каталогах и файлах.
Вся информация о файлах хранится в особых областях раздела (тома) — файловых справочниках. Структура этих справочников зависит от типа файловой системы. Справочник файлов позволяет ассоциировать числовые идентификаторы файлов и дополнительную информацию о них (дата изменения, права доступа, имя и т. д.) с непосредственным содержимым файла, хранящимся в другой области раздела (тома).
На жёстких дисках компьютеров под управлением систем семейства Windows используются три типа файловых систем: FAT (FAT16 и FAT32), NTFS и ReFS.