Курынин Р.В., Машечкин И.В., Терехин А.Н. - Конспект лекций по ОС (1114685), страница 46
Текст из файла (страница 46)
Для более эффективной работы первый блок, содержащийначальную часть списка, должен располагаться в ОЗУ, чтобы файловая система могла к немуоперативно обращаться. Заметим, что размер списка может достигать больших размеров: еслиразмер блока 1 Кбайт, т.е. его можно представить в виде 256 четырехбайтных слов, то такой блокможет содержать в себе 255 номеров свободных блоков и одну ссылку на следующий блок сосписком, тогда для жесткого диска, емкостью 16 Гбайт, потребуется 16794 блока.
Но размерсписка не столь важен, поскольку по мере использования свободных блоков этот списоксокращается, при этом освобождающиеся блоки, хранившие указанный список, ничем неотличаются от других свободных блоков файловой системы, а значит, их можно использовать дляхранения файловых данных.Вторая модель основана на использовании битовых массивов. В этом случае каждомублоку файловой системе ставится в соответствие двоичный разряд, сигнализирующий онезанятости данного блока. Для организации данной модели необходимо подсчитать количествоблоков файловой системы, рассчитать количество разрядов массива, а также реализоватьмеханизм пересчета номера разряда в номер блока и наоборот.
Заметим, что операция пересчетадостаточно трудоемка, к тому же эта модель требует выделение под массив стационарногоресурса: так, для 16-тигигабайтного жесткого диска потребуется 2048 блоков для хранениябитового массива.4.1.9Квотирование пространства файловой системыКак отмечалось выше, файловая система должна обеспечивать контроль использованиядвух видов системных ресурсов — это регистрация файлов в каталогах (т.е.
контроль количестваимен файлов, которое можно зарегистрировать в каталоге) и контроль свободного пространства(чтобы не возникла ситуация, когда один процесс заполнил все свободное пространство, темсамым не давая другим пользователям возможность сохранять свои данные). Для решенияпоставленных задач в файловой системе вводятся квотирование имен (т.е. числа) файлов иквотирование блоков.В общем случае модель квотирования может иметь два типа лимитов: жесткий и гибкий.Для каждого пользователя при регистрации его в системе для него определяются два типа квот.Жесткий лимит — это количество имен в каталогах или блоков файловой системы, которое онпревзойти не может: если происходит превышение жесткого лимита, работа пользователя всистеме блокируется.
Гибкий лимит — это значение, которое устанавливается в виде лимита; сним ассоциировано еще одно значение, называемое счетчиком предупреждений. При входепользователя в систему происходит подсчет соответствующего ресурса (числа имен файлов либоколичества используемых пользователем блоков файловой системы). Если вычисленное значениене превосходит гибкий лимит, то счетчик предупреждений сбрасывается на начальное значение, ипользователь продолжает свою работу. Если же вычисленное значение превосходитустановленный гибкий лимит, то значение счетчика предупреждений уменьшается на единицу,затем происходит проверка равенства его значения нулю.
Если равно нулю, то вход пользователя всистему блокируется, иначе пользователь получает предупреждение о том, что соответствующийгибкий лимит израсходован, после чего пользователь может работать дальше. Таким образом,система позволяет пользователю привести свое «файловое пространство» в порядок всоответствии с установленными квотами.181Гибкий лимит блоковУчет использованияквот на блокиЖесткий лимит блоковИспользовано блоковСчетчик предупрежденийГибкий лимит числа файловУчет использованияквот на число файловЖесткий лимит числа файловИспользовано файловСчетчик предупрежденийРис. 103.Квотирование пространства файловой системы.Рассмотренная модель имеет большую эффективность при использовании именно парыэтих параметров.
Если в системе реализовано лишь гибкий лимит, то можно реализоватьупоминавшуюся картину: пользовательский процесс может «забить» все свободное пространствофайловой системы. Данную проблему решает жесткий лимит. Если же в системе реализованамодель лишь жесткого лимита, то возможны ситуации, когда пользователь получает отказ отсистемы, поскольку он «неумышленно» превзошел указанную квоту (например, из-за ошибки впрограмме был сформирован очень большой файл).4.1.10 Надежность файловой системыПонятие надежности файловой системы включает в себя множество требований, средикоторых, в первую очередь, можно выделить то, что системные данные файловой системы должныобладать избыточной информацией, которая позволяла бы в случае аварийной ситуацииминимизировать ущерб (т.е.
минимизировать потерю информации) от этих сбоев.Минимизация потери информации при аварийных ситуациях может достигаться за счетиспользования различных систем архивирования, или резервного копирования. Архивированиеможет происходить как автоматически по инициативе некоторого программного робота, так и позапросу пользователя. Но целиком каждый раз копировать всю файловую систему неэффективно идорого. И тут перед нами встает одна из проблем резервного копирования — минимизироватьобъем копируемой информации без потери качества. Для решения поставленной задачипредлагается несколько подходов. Во-первых, это избирательное копирование, когда намеренноне копируются файлы, которые заведомо восстанавливаются.
К таким файлам могут бытьотнесены исполнительные файлы ОС, систем программирования, прикладных систем, посколькусчитается, что в наличии есть дистрибутивные носители, с которых можно восстановить этифайлы (но файлы с данными копировать, конечно же, придется).
Также можно не копироватьисполняемые файлы, если для них имеется в наличии дистрибутив или исходных код, которыйможно откомпилировать и получить данный исполняемый файл. Также можно не копироватьфайлы определенных категорий пользователей (например, файлы студентов в машинном зале,которые имеют небольшие объемы, их можно достаточно легко восстановить, переписав заново,но количество этих файлов огромно, что повлечет огромные накладные расходы приархивировании).Следующая модель заключается в т.н. инкрементном архивировании. Эта модельпредполагает создание в первое архивирование полной копии всех файлов — это т.н. мастеркопия (master-copy). Каждая следующая копия будет включать в себя только те файлы, которыеизменились или были созданы с момента предыдущего архивирования.Также при архивировании могут использоваться дополнительные приемы, в частности,компрессия.
Но тут встает дилемма: с одной стороны сжатие данных при архивировании даетвыигрыш в объеме резервной копии, с другой стороны компрессия крайне чувствительна к потере182информации. Потеря или приобретение лишнего бита в сжатом архиве может повлечь за собойпорчу всего архива.Еще одна проблема, которая может возникнуть при резервном копировании, — этокопирование на ходу, когда во время резервного копирования какого-то файла пользовательначинает с ним работать (модифицировать, удалять и т.п.). Если для примера рассмотретьинкрементное архивирование, то мастер-копию стоит создать в полном отсутствии пользователейв системе (этот процесс зачастую занимает довольно продолжительное время).
Но последующиекопии вряд ли удастся создавать в отсутствии пользователей, поэтому необходимо грамотновыбирать моменты для архивирования: понятно, что если большая часть пользователей работает вдневное время суток, то подобные операции стоит проводить в ночные часы, когда в системепочти никто не работает.Еще один полезный прием заключается в распределенном хранении резервных копий.Всегда желательно иметь две копии, причем храниться они должны в совершенно разных местах,чтобы не могла возникнуть ситуация, когда пожар в офисе уничтожает компьютеры и всерезервные копии, хранящиеся в этом офисе, иначе польза от резервного копирования можетоказываться нулевой.Среди стратегий копирования можно выделить физическое и логическое копирование.Физическое копирование заключается в поблочном копировании данных с носителя («один водин»).
Понятно, что такой способ копирования неэффективен, поскольку копируются исвободные блоки. Следующей модификацией этого способа стало интеллектуальное физическоекопирования лишь занятых блоков. Так или иначе, но данный стратегия имеет проблемуобработки дефектных блоков: сталкиваясь при копировании с физически дефектным блоком,невозможно связать данный блок с конкретным файлом. Альтернативой физическомукопированию является логическая архивация. Эта стратегия подразумевает копирование неблоков, а файлов (например, файлов, модифицированных после заданной даты).4.1.11 Проверка целостности файловой системыДалее речь пойдет о моделях организации контроля и исправления ошибочных ситуаций,связанных с целостностью файловой системы.
Обратим внимание, что будет рассматриватьсяцелостность именно файловой системы, а не файлов. Если произошел сбой (например, сломалсяцентральный процессор или оперативная память), то гарантированно потери будут, и эти потерибудут двух типов. Во-первых, это потеря актуального содержимого одного или несколькихоткрытых файлов. Это проблема, но при соответствующей организации резервного копированияона разрешается. Вторая проблема связана с тем, что во время сбоя может нарушитьсякорректность системной информации.
Вторая проблема более существенна и требует более тонкихмеханизмов ее решения.Для выявления непротиворечивости и исправления возможных ошибочных ситуацийфайловая система использует избыточную информацию, т.е. данные тем или иным образом (явноили косвенно) дублируются. Далее рассмотрим организацию контроля целостности блоковфайловой системы.Рассмотрим модельный пример. В системе формируются две таблицы, каждая из которыхимеет размеры, соответствующие реальному количеству блоков файловой системы. Одна изтаблиц называется таблицей занятых блоков, вторая — таблицей свободных блоков.Изначально содержимое таблиц обнуляется.На втором шаге система запускает процесс анализа блоков на предмет их незанятости.