Определение файловой системы
Фа́йловая систе́ма (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте или блоке флеш-памяти) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).
С точки зрения операционной системы, весь диск представляет из себя набор кластеров размером от 512 байт и выше. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.
Однако файловая система не обязательно напрямую связана с физическим носителем информации. Существуют виртуальные файловые системы, а также сетевые файловые системы, которые являются лишь способом доступа к файлам, находящимся на удалённом компьютере.
Классификация файловых систем
По предназначению файловые системы можно классифицировать на следующие категории:
· Для носителей с произвольным доступом (например, жёсткий диск): FAT32, HPFS, ext2 и др. Поскольку доступ к дискам в разы медленнее, чем доступ к оперативной памяти, для прироста производительности во многих файловых системах применяется асинхронная запись изменений на диск. Для этого применяется либо журналирование, например в ext3, ReiserFS, JFS, NTFS, XFS, либо механизм soft updates и др. Журналирование широко распространено в Linux, применяется в NTFS. Soft updates — в BSD системах. Reiser4 не применяет журналирование, все операции в ней атомарны.
· Для носителей с последовательным доступом (например, магнитные ленты): QIC и др.
· Для оптических носителей — CD и DVD: ISO9660, ISO9690, HFS, UDF и др.
· Виртуальные файловые системы: AEFS и др.
· Сетевые файловые системы: NFS, CIFS, SSHFS, GmailFS и др.
· Для флэш-памяти: YAFFS, ExtremeFFS.
· Немного выпадают из общей классификации специализированные файловые системы: ZFS (собственно файловой системой является только часть ZFS), VMFS (т.н. кластерная файловая система, которая предназначена для хранения других файловых систем) и др.
Задачи файловой системы
Основные функции любой файловой системы нацелены на решение следующих задач:
· именование файлов;
· программный интерфейс работы с файлами для приложений;
· отображения логической модели файловой системы на физическую организацию хранилища данных;
· организация устойчивости файловой системы к сбоям питания, ошибкам аппаратных и программных средств;
· содержание параметров файла, необходимых для правильного его взаимодействия с другими объектами системы (ядро, приложения и пр.)
В многопользовательских системах появляется еще одна задача: защита файлов одного пользователя от несанкционированного доступа другого пользователя, а также обеспечение совместной работы с файлами, к примеру, при открытии файла одним из пользователей, для других этот же файл временно будет доступен в режиме «только чтение».
Твердотельные носители, такие, как флеш-диски, своим интерфейсом данных похожи на обычные жёсткие диски, но имеют свои проблемы и недостатки. Когда проходит время поиска они нуждаются в особой обработке такими алгоритмами как, Wear leveling и Error detection and correction.
· FAT — исходно дисковая файловая система — теперь часто используется на флеш-дисках. Имеет ограничение на размер файла в 4 гигабайта.
· exFAT — Расширенная версия FAT, используемая для флеш-дисков. Запатентована Microsoft, часто называется как FAT64 — ограничение 264 байт (16 эксабайт).
· FFS2 — Продолжение файловой системы FFS1, Одна из ранних файловых систем для флеш-карт. Разработана и запатентована Microsoft в начале 1990х годов. U.S. Patent 5392427 (англ.)
· TFAT — Транзакционная версия FAT файловой системы.
· JFFS — Оригинальная лог-структурированная Linux файловая система для NOR-флеш-носителей.
· JFFS2 — Продолжение JFFS для NAND- и NOR-флеш-носителей.
· LogFS — Предназначена для замены JFFS2, лучшая расширяемость. Находится на ранней стадии разработки.
· Non-Volatile File System — файловая система для флеш-дисков, разработанная Palm, Inc..
· YAFFS — Лог структурированная файловая система, предназначенная для NAND-флеш, но может использоваться в NOR-флеш-дисках.
exFAT
exFAT (от англ. Extended FAT — «расширенная FAT») — проприетарная файловая система, предназначенная главным образом для флэш-накопителей. Впервые представленная Microsoft для встроенных устройств в Windows Embedded CE 6.0.
Используется в операционных системах от Microsoft в тех случаях, когда использование других поддерживаемых ими файловых систем (FAT и NTFS) нецелесообразно.
Основными преимуществами перед всеми текущими версиями FAT является:
· Теоретический лимит на размер файла 264 байт (16 эксбибайт).
· Максимальный размер кластера увеличен до 225 байт (32 мебибайта).
· Улучшено распределение свободного места за счёт введения бит-карты свободного места, что уменьшает фрагментацию диска.
· Устранён лимит на количество файлов в одной директории.
· Введена поддержка списка прав доступа.
· Введена поддержка транзакций (опциональная возможность, должна поддерживаться устройством).
Поддержка exFAT имеется в Windows XP с Service Pack 2 и 3 с обновлением KB955704, Windows Vista с Service Pack 1, Windows Server 2008, Windows 7.
Технология ReadyBoost в Windows Vista не совместима с устройствами с файловой системой exFAT.
Существует свободный драйвер exFAT в виде патча для ядра Linux, поддерживающий только чтение этой файловой системы.
Лицензионный статус не ясен. Однако известно, что Microsoft успешно запатентовала файловую систему FAT, и в феврале 2009 года подала в суд на компанию TomTom, обвиняя её в их нарушении.
Существует также сторонняя реализация exFAT для Windows XP/ Windows Server 2003, однако она предназначена для непосредственной интеграции в дистрибутив продукта без возможности ручной установки драйвера. Данный порт выполнен на базе драйвера Windows Vista.
В декабре 2009 года Microsoft начала лицензировать файловую систему exFAT для сторонних производителей.
File Allocation Table
FAT (от англ. File Allocation Table — «таблица размещения файлов») — архитектура файловой системы, сейчас широко используемая в картах памяти фотоаппаратов и других устройств.
Разработана Биллом Гейтсом и Марком МакДональдом в 1977 году. Использовалась в качестве основной файловой системы в операционных системах DOS и Microsoft Windows (до версии Windows ME).
Структура FAT определена стандартом ECMA-107.
Структура системы FAT
· загрузочный сектор;
· таблица размещения файлов — собственно FAT (традиционно в двух экземплярах, но вообще-то количество копий указано в загрузочном секторе);
· корневой каталог;
· файлы.
Для хранения файлов всё доступное для них пространство разбивается на кластеры. Таблица размещения файлов содержит ячейки, каждая из которых соответствует определённому кластеру диска. Если кластер принадлежит файлу, то соответствующая ему ячейка содержит номер следующего кластера этого же файла. Если ячейка соответствует последнему кластеру файла, то она содержит значение «FFFF». Таким образом выстраивается цепочка кластеров файла. Неиспользуемые кластеры помечены «0000». «Плохие» кластеры помечены специальным кодом «FFF7».
При удалении файла фактически только делается запись в каталоге, а цепочка кластеров не разрушается и данные не затираются. Это позволяет восстанавливать удалённые файлы, если на их место ещё не было ничего записано.
Максимальный размер кластера, который поддерживается в FAT, составляет 64 Кб. Зная, что максимальное количество кластеров, которое можно адресовать шестнадцатиразрядным указателем равно 65536, можно вычислить какой величины раздел можно отформатировать, применяя тот или иной размер кластера. Если взять размер кластера равным размеру физического кластера (сектора), то получим: 65536 * 512 = 32 Мб. Если взять кластер в 2 раза больше, то можно отформатировать раздел уже до 64 Мб. Ввиду того, что разрядность ФС — величина постоянная, для форматирования дисков различных размеров будут применяться разные размеры кластеров. Например, чтобы отформатировать диск более 1 Гб, нужно применять кластер 16 КБ. Поскольку размер кластера, являющийся максимально допустимым в этой ФС, равен 64 Кб, то можно определить, что максимальный размер раздела, форматируемый под FAT, равен 4 Гб.
|