Главная страница  Межпроцессное взаимодействие (состязание) 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [ 151 ] 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

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

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

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

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

Технологии уверенно улучшаются, поэтому сейчас поврежденные блоки не так распространены, как раньше. Тем не менее они все еще встречаются. В главе 3 говорилось, что контроллер современного жесткого диска очень сложен. На таких дисках на каждой дорожке есть по крайней мере один дополнительный сектор, то есть как минимум одно повреждение можно пропустить, оставив зазор между двумя последовательными секторами. Кроме того, в каждом цилиндре есть несколько запасных секторов, которые контроллер может задействовать, если обнаружит, что для записи или чтения какого-либо сектора требуется слишком большое число попыток. Таким образом, пользователь обычно ничего не подозревает о поврежденных блоках и их учете. Однако, если происходит отказ современного IDE- или SCSI-диска, это обычно серьезная проблема, означающая, что у диска кончились запасные секторы. SCSI-диски, заменяя сбойный блок запасным, сообщают о восстановлении после сбоя (recovered error). Заметив



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

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

Резервные копии

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

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

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

Диск о

Диск 1

Резервная копия Данные 1

Данные О

Резервная копия Данные О

Данные 1


Рис. 5.15. Резервное копирование одного диска на другой приводит к двойному расходу свободного пространства



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

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

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

Целостность файловой системы

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

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

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

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



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [ 151 ] 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

© 2000 - 2018 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.