Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Файловая система.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
361 Кб
Скачать
☆

Классификация файловых систем

По предназначению файловые системы можно классифицировать на нижеследующие категории.

  • Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в несколько раз медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах.

  • Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.

  • Для оптических носителей — CD и DVD: ISO9660, HFS, UDF и др.

  • Виртуальные файловые системы: AEFS и др.

  • Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.

  • Для флэш-памяти: YAFFS, ExtremeFFS, exFAT.

  • Немного выпадают из общей классификации специализированные файловые системы: ZFS (собственно файловой системой является только часть ZFS), VMFS (т. н. кластерная файловая система, которая предназначена для хранения других файловых систем) и др.

Задачи файловой системы

Основные функции любой файловой системы нацелены на решение следующих задач:

  • именование файлов;

  • программный интерфейс работы с файлами для приложений;

  • отображения логической модели файловой системы на физическую организацию хранилища данных;

  • организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;

  • содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.).

В многопользовательских системах появляется ещё одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами, к примеру, при открытии файла одним из пользователей, для других этот же файл временно будет доступен в режиме «только чтение».

Filesystem in Userspace (FUSE) («Файловая система в пользовательском пространстве») — это модуль для ядер UNIX-подобных операционных систем, с открытым исходным кодом и относящийся к свободному программному обеспечению. Модуль распространяется под лицензиями GNU GPL и GNU LGPL. Он позволяет пользователям без привилегий создавать их собственные файловые системы, не переписывая код ядра. Это достигается за счёт запуска кода файловой системы в пространстве пользователя, в то время как модуль FUSE только предоставляет мост для актуальных интерфейсов ядра. FUSE была официально включена в главное дерево кода Linux в версии 2.6.14.

FUSE особенно полезна для написания виртуальных файловых систем. В отличие от традиционных файловых систем, которые по существу сохраняют информацию для восстановления данных с диска, виртуальные файловые системы не хранят данные непосредственно. Они действуют как представление, трансляция существующей файловой системы или устройства хранения. В принципе, любой ресурс, доступный для использования FUSE, может быть экспортирован в файловую систему.

Сама система FUSE была частью проекта A Virtual Filesystem (AVFS), но потом AVFS выделился в собственный проект на SourceForge.net.

FUSE также доступна для систем FreeBSD, NetBSD (как PUFFS), OpenSolaris, Mac OS X, Minix 3.2[2], AmigaOS.

Общая модель файловой системы

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

Рис.1. Общая модель файловой системы

Задачей символьного уровня является определение по символьному имени файла его уникального имени. В файловых системах, в которых каждый файл может иметь только одно символьное имя (например, MS-DOS), этот уровень отсутствует, так как символьное имя, присвоенное файлу пользователем, является одновременно уникальным и может быть использовано операционной системой. В других файловых системах, в которых один и тот же файл может иметь несколько символьных имен, на данном уровне просматривается цепочка каталогов для определения уникального имени файла. В файловой системе UNIX, например, уникальным именем является номер индексного дескриптора файла (i-node).

На следующем, базовом уровне по уникальному имени файла определяются его характеристики: права доступа, адрес, размер и другие. Как уже было сказано, характеристики файла могут входить в состав каталога или храниться в отдельных таблицах. При открытии файла его характеристики перемещаются с диска в оперативную память, чтобы уменьшить среднее время доступа к файлу. В некоторых файловых системах (например, HPFS) при открытии файла вместе с его характеристиками в оперативную память перемещаются несколько первых блоков файла, содержащих данные.

Следующим этапом реализации запроса к файлу является проверка прав доступа к нему. Для этого сравниваются полномочия пользователя или процесса, выдавших запрос, со списком разрешенных видов доступа к данному файлу. Если запрашиваемый вид доступа разрешен, то выполнение запроса продолжается, если нет, то выдается сообщение о нарушении прав доступа.

На логическом уровне определяются координаты запрашиваемой логической записи в файле, то есть требуется определить, на каком расстоянии (в байтах) от начала файла находится требуемая логическая запись. При этом абстрагируются от физического расположения файла, он представляется в виде непрерывной последовательности байт. Алгоритм работы данного уровня зависит от логической организации файла. Например, если файл организован как последовательность логических записей фиксированной длины l, то n-ая логическая запись имеет смещение l((n-1) байт. Для определения координат логической записи в файле с индексно-последовательной организацией выполняется чтение таблицы индексов (ключей), в которой непосредственно указывается адрес логической записи.

Список файловых систем

Некоторые старые системы поддерживали только одну файловую систему, которая была включена в состав операционной системы и не имела какого-то определённого названия. Такие файловые системы могут отсутствовать в данном списке.

Дисковые файловые системы

Дисковые файловые системы обычно являются поток-ориентированными. Файлы в поток-ориентированных файловых системах представляются последовательностью битов, часто предоставляющие такие функции, как чтение, запись, изменение данных и произвольный доступ.

Файловые системы для флеш-дисков / твердотельных носителей

Твердотельные носители, такие, как флеш-диски, своим интерфейсом данных похожи на обычные жёсткие диски, но имеют свои проблемы и недостатки. Хотя практически сводится к нулю время поиска данных, они нуждаются в особой обработке такими алгоритмами как, Wear leveling и Error detection and correction.

  • FAT — исходно дисковая файловая система — теперь часто используется на флеш-дисках. Имеет ограничение на размер файла в 4 гигабайта.

    • exFAT — Расширенная версия FAT, используемая для флеш-дисков. Запатентована Microsoft, часто называется как FAT64 — ограничение 264 байт (16 эксабайт).

    • TFAT — Транзакционная версия FAT файловой системы.

  • FFS2 — Продолжение файловой системы FFS1, Одна из ранних файловых систем для флеш-карт. Разработана и запатентована Microsoft в начале 1990х годов. U.S. Patent 5 392 427

  • JFFS — Оригинальная лог-структурированная Linux файловая система для NOR-флеш-носителей.

    • JFFS2 — Продолжение JFFS для NAND- и NOR-флеш-носителей.

  • LogFS — Предназначена для замены JFFS2, лучшая расширяемость. Находится на ранней стадии разработки.

  • Non-Volatile File System — файловая система для флеш-дисков, разработанная Palm, Inc..

  • YAFFS — Лог структурированная файловая система, предназначенная для NAND-флеш, но может использоваться в NOR-флеш-дисках.