№66 Файловые системы ОС. Основные функции и требования к файловым
системам.
Файловая система (англ. file system) — регламент, определяющий
способ организации, хранения и именования данных на носителях
информации. Она определяет формат физического хранения информации,
которую принято группировать в виде файлов. Конкретная файловая система
определяет размер имени файла (папки), максимальный возможный размер
файла и раздела, набор атрибутов файла. Некоторые файловые системы
предоставляют сервисные возможности, например, разграничение доступа
или шифрование файлов.
Файловая система связывает носитель информации с одной стороны и API
для доступа к файлам — с другой. Когда прикладная программа обращается
к файлу, она не имеет никакого представления о том, каким образом
расположена информация в конкретном файле, так же, как и на каком
физическом типе носителя (CD, жёстком диске, магнитной ленте, блоке
флеш-памяти или другом) он записан. Всё, что знает программа — это имя
файла, его размер и атрибуты. Эти данные она получает от драйвера
файловой системы. Именно файловая система устанавливает, где и как
будет записан файл на физическом носителе (например, жёстком диске).
С точки зрения операционной системы (ОС), весь диск представляет собой
набор кластеров размером от 512 байт и выше. Драйверы файловой системы
организуют кластеры в файлы и каталоги (реально являющиеся файлами,
содержащими список файлов в этом каталоге). Эти же драйверы
отслеживают, какие из кластеров в настоящее время используются, какие
свободны, какие помечены как неисправные.
Однако файловая система не обязательно напрямую связана с физическим
носителем информации. Существуют виртуальные файловые системы, а также
сетевые файловые системы, которые являются лишь способом доступа к
файлам, находящимся на удалённом компьютере.
Иерархия каталогов
Практически всегда файлы на дисках объединяются в каталоги.
В простейшем случае все файлы на данном диске хранятся в одном
каталоге. Такая одноуровневая схема использовалась в CP/M и в первой
версии MS-DOS 1.0. Иерархическая файловая система со вложенными друг в
друга каталогами впервые появилась в Multics, затем в UNIX.
Wiki.txt
Tornado.jpg
Notepad.exe
(Одноуровневая файловая система)
Каталоги на разных дисках могут образовывать несколько отдельных
деревьев, как в DOS/Windows, или же объединяться в одно дерево, общее
для всех дисков, как в UNIX-подобных системах.[Прим. 1]
C:
\Program files
\CDEx
\CDEx.exe
\CDEx.hlp
\mppenc.exe
\Мои документы
\Wiki.txt
\Tornado.jpg
D:
\Music
\ABBA
\1974 Waterloo
\1976 Arrival
\Money, Money, Money.ogg
\1977 The Album
(Иерархическая файловая система Windows/DOS)
В UNIX существует только один корневой каталог, а все остальные файлы и
каталоги вложены в него. Чтобы получить доступ к файлам и каталогам на
каком-нибудь диске, необходимо примонтировать этот диск командой mount.
Например, чтобы открыть файлы на CD, нужно, говоря простым языком,
сказать операционной системе: «возьми файловую систему на этом
компакт-диске и покажи её в каталоге /mnt/cdrom». Все файлы и каталоги,
находящиеся на CD, появятся в этом каталоге /mnt/cdrom, который
называется точкой монтирования (англ. mount point).[Прим. 2] В
большинстве UNIX-подобных систем съёмные диски (дискеты и CD),
флеш-накопители и другие внешние устройства хранения данных монтируют в
каталог /mnt, /mount или /media. Unix и UNIX-подобные операционные
системы также позволяет автоматически монтировать диски при загрузке
операционной системы.
/usr
/bin
/arch
/ls
/raw
/lib
/libhistory.so.5.2
/libgpm.so.1
/home
/lost+found
/host.sh
/guest
/Pictures
/example.png
/Video
/matrix.avi
/news
/lost_ship.mpeg
(Иерархическая файловая система в Unix и UNIX-подобных операционных системах)
Обратите внимание на использование слешей в файловых системах Windows,
UNIX и UNIX-подобных операционных системах (В Windows используется
обратный слеш «\», а в UNIX и UNIX-подобных операционных системах
простой слеш «/»)
Кроме того, следует отметить, что вышеописанная система позволяет
монтировать не только файловые системы физических устройств, но и
отдельные каталоги (параметр --bind) или, например, образ ISO (опция
loop). Такие надстройки, как FUSE, позволяют также монтировать,
например, целый каталог на FTP и ещё очень большое количество различных
ресурсов.
Ещё более сложная структура применяется в NTFS и HFS. В этих файловых
системах каждый файл представляет собой набор атрибутов. Атрибутами
считаются не только традиционные только для чтения, системный, но и имя
файла, размер и даже содержимое. Таким образом, для NTFS и HFS то, что
хранится в файле, — это всего лишь один из его атрибутов.
Если следовать этой логике, один файл может содержать несколько
вариантов содержимого. Таким образом, в одном файле можно хранить
несколько версий одного документа, а также дополнительные данные
(значок файла, связанная с файлом программа). Такая организация типична
для HFS на Macintosh.
Классификация файловых систем
По предназначению файловые системы можно классифицировать на нижеследующие категории.
Для носителей с произвольным доступом (например, жёсткий диск): FAT32,
HPFS, ext2 и др. Поскольку доступ к дискам в разы медленнее, чем доступ
к оперативной памяти, для прироста производительности во многих
файловых системах применяется асинхронная запись изменений на диск. Для
этого применяется либо журналирование, например в ext3, ReiserFS, JFS,
NTFS, XFS, либо механизм soft updates и др. Журналирование широко
распространено в Linux, применяется в NTFS. Soft updates — в BSD
системах.
Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.
Для оптических носителей — CD и DVD: ISO9660, ISO9690, HFS, UDF и др.
Виртуальные файловые системы: AEFS и др.
Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
Для флэш-памяти: YAFFS, ExtremeFFS.
Немного выпадают из общей классификации специализированные файловые
системы: ZFS (собственно файловой системой является только часть ZFS),
VMFS (т.н. кластерная файловая система, которая предназначена для
хранения других файловых систем) и др.
Задачи файловой системы
Основные функции любой файловой системы нацелены на решение следующих задач:
именование файлов;
программный интерфейс работы с файлами для приложений;
отображения логической модели файловой системы на физическую организацию хранилища данных;
организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
содержание параметров файла, необходимых для правильного его
взаимодействия с другими объектами системы (ядро, приложения и пр.).
В многопользовательских системах появляется еще одна задача: защита
файлов одного пользователя от несанкционированного доступа другого
пользователя, а также обеспечение совместной работы с файлами, к
примеру, при открытии файла одним из пользователей, для других этот же
файл временно будет доступен в режиме «только чтение».