Информационные технологии

Надежность файловых систем

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

Помимо очевидных решений, например, своевременное дублирование информации (backup), файловые системы современных операционных систем содержат специальные средства для поддержки собственной совместимости. Надежность напрямую зависит от структуры файловой системы на диске. В работе рассмотрены файловые системы Ext2fs, Ext3fs, Fat32 и NTFS.

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

Анализируя структуру файловой системы ext2fs, можно сказать, что надежность в ней обеспечивается за счет использования группы блоков, так как все важные управляющие структуры повторяются в каждой группе блоков. И если файловая система будет испорчена, она всегда сможет восстановиться из копии.

Ext3fs – не более чем журналируемая надстройка над классической ext2fs. И переход от ext2fs к ext3fs может быть осуществлен простым добавлением файла журнала. Работа файла журналирования – записывать состояние системных метаданных во время процесса совершения транзакций. Любая современная файловая система основана на таком понятии, как транзакция – действие, совершаемое целиком и корректно или не совершаемое вообще. То есть фактически журнал в такой файловой системе – просто список производимых операций. В случае системного сбоя файловая система будет восстановлена к непротиворечивому состоянию путем повторного запуска журнала и отката к предыдущему состоянию.

Структура файловой системы FAT32: загрузочный сектор, основная копия FAT, резервная копия FAT, корневой каталог, область данных. Таблица FAT содержит критически важную информацию о расположении каталогов и файлов. Надежность в файловой системе FAT32 обеспечивается за счет создания резервной копии файловой таблицы (FAT). Если основная таблица будет повреждена, файловая система будет восстановлена из резервной копии.

Структура NTFS: загрузочный блок, главная файловая таблица (MFT), копия MFT. В NTFS файл целиком размещается в записи таблицы MFT, если это позволяет сделать его размер. В том же случае, когда размер файла больше размера записи MFT, в запись помещаются только некоторые атрибуты файла, а остальная часть файла размещается в отдельном отрезке тома (или нескольких отрезках). Том – это логический раздел.

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

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

Критерием надежности файловой системы является устойчивость структуры. В данной работе рассмотрено, как различные файловые системы организованы для обеспечения надежности. В FAT32 и ext2fs надежность обеспечивается с помощью создания нескольких копий таблицы размещения файлов, в NTFS и ext3fs – с помощь ведения журнала, в котором записываются все операции, которые позволяют восстановить структуру файловой системы.