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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

Физическая архивация состоит в поблочном копировании всего диска с блока 0 по последний блок. Эта программа настолько проста, что, возможно, она даже может быть полностью отлажена, чего нельзя сказать об остальных полезных программах.

Главное преимущество физической архивации состоит в ее простоте и высокой скорости. Основными ее недостатками являются неспособность пропускать определенные каталоги и восстанавливать отдельные файлы. По этим причинам в большинстве систем применяется логическая архивация.

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

Непротиворечивость файловой системы.

Еще одним аспектом, относящимся к проблеме надежности, является непротиворечивость файловой системы.

Файловые системы обычно читают блоки данных, модифицируют их и записывают обратно. Если в системе произойдет сбой прежде, чем все модифицированные блоки будут записаны на диск, файловая система может оказаться в противоречивом состоянии. Для решения проблемы противоречивости файловой системы на большинстве компьютеров имеется специальная обслуживающая программа, проверяющая непротиворечивость файловой системы. Например, в системе UNIX такой программой является fsck, а в системе Windows это программа scandisk. Эта программа может быть запущена сразу после загрузки системы, особенно если до этого произошел сбой. Все программы проверки файловой системы проверяют различные файловые системы (дисковые разделы) независимо друг от друга.

Существует два типа проверки непротиворечивости: - блоков - файлов.

Рассмотрим проверку каталоговой структуры. Для этого используется таблица счетчиков файлов. Проверка начинается с корневого каталога с рекурсивным заходом в каждый каталог. Для каждого файла в каждом каталоге программа увеличивает на единицу счетчик использования файла. Благодаря жестким связям файл может присутствовать сразу в нескольких каталогах. Когда сканирование дерева каталогов завершено, программа получает список, индексированный по номерам i-узлов, сообщающий, в скольких каталогах присутствует каждый файл. Затем программа сравнивает полученные числа со счетчиками связей, хранящимися в самих i-узлах. Эти счетчики содержат 1 при создании файла и увеличиваются на единицу каждый раз, когда создается связь (жесткая) с данным файлом. В непротиворечивой файловой системе оба счетчика должны совпадать. Однако возможны два типа ошибок: значение счетчика связи в i-узле может оказать слишком велико или слишком мало. В обоих случаях решение также заключается в присваивании значения счетчика i-узла фактическому числу описателей файла.

Возможно также проведение и других проверок. Например, формат каталогов должен соответствовать определенным требованиям, с i-узлами и ASCII-именами. Если i-узел оказывается больше числа i-узлов на диске, это означает, что каталог поврежден.

Решение проблемы непротиворечивости файловых систем.

1. Традиционные ФС.

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

2. Журналирование.

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

Транзакционная файловая система.

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

Вопрос 3. Методы физической реализации хранения атрибутов и данных файлов.

Физическая реализация хранения файлов = хранение атрибутов файла + хранение данных файла

Вероятно, наиболее важным моментом в реализации хранения файлов является учет соответствия блоков диска файлам.

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

Непрерывные файлы

Простейшей схемой выделения файлам определенных блоков на диске является система, в которой файлы представляют собой непрерывные наборы соседних блоков диска. У непрерывных файлов есть два существенных преимущества.

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

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

К сожалению, у такого способа распределения дискового пространства имеется серьезный недостаток: со временем диск становится фрагментированным.

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

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

Связные списки.

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

В отличие от систем с непрерывными файлами, такой метод позволяет использовать каждый блок диска. Нет потерь дискового пространства на фрагментацию. Кроме того, в каталоге нужно хранить только адрес первого блока файла. С другой стороны, хотя последовательный доступ к такому файлу несложен, произвольный доступ будет довольно медленным. Чтобы получить доступ к блоку n, операционная система должна сначала прочитать первые n-1 блоков по очереди. Очевидно, такая схема оказывается очень медленной.

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



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 1181; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.16.147.124 (0.01 с.)