Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы. Ч

.2.pdf
Скачиваний:
26
Добавлен:
05.02.2023
Размер:
1.67 Mб
Скачать

200

блоков каталогов. Фактически, переименование может потерпеть неудачу из-за недостатка дискового пространства, даже если файл непосредственно в размерах не увеличился. Во избежание такой ситуации HPFS поддерживает небольшой пул свободных блоков, которые могут использоваться при «аварии». Эта операция может потребовать выделения дополнительных блоков на заполненном диске. Указатель на пул свободных блоков сохраняется в SpareBlock.

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

что файл является фрагментированным, если он содержит больше одного экстента. Снижение фрагментации файлов сокращает время позиционирования и время ожидания за счет уменьшения количества перемещений головок, необходимых для доступа к данным файла. Алгоритмы работы файловой системы HPFS работают таким образом, чтобы по возможности размещать файлы в последовательных смежных секторах диска, что обеспечивает максимально быстрый доступ к данным впоследствии. В системе FAT, наоборот, запись следующей порции данных в первый же свободный кластер неизбежно приводит к фрагментации файлов. В системе HPFS также, если это предоставляется возможным, данные записываются в смежные секторы диска, а не в первый попавшийся. Это позволяет несколько снизить число перемещений головок чтения/записи от дорожки к дорожке. При этом когда данные дописываются в существующий файл, HPFS сразу же резервирует как минимум 4 Кбайта непрерывного пространства на диске. Если же часть этого пространства не потребовалась, то после закрытия файла она высвобождается для дальнейшего использования. Файловая система HPFS равномерно размещает непрерывные файлы по всему диску для того, чтобы впоследствии без фрагментации обеспечить их возможное увеличение. Если же файл не может быть увеличен без нарушения его непрерывности, HPFS вновь резервирует 4 Кбайта смежных блоков как можно ближе к основной части файла с целью сокращения времени позиционирования головок чтения/записи и времени ожидания соответствующего сектора.

Очевидно, что степень фрагментации файлов на диске зависит как от числа и размеров расположенных на нем

201

файлов и размеров самого диска, так и от характера и интенсивности самих дисковых операций. Незначительная фрагментация файлов практически не сказывается на быстродействии операций с файлами. Файлы, состоящие из двух-трех экстентов, практически не снижают производительность HPFS, так как эта файловая система следит за тем, чтобы области данных, принадлежащие одному и тому же файлу, располагались как можно ближе друг к другу. Файл из трех экстентов имеет только два нарушения непрерывности, и, следовательно, для его чтения потребуется всего лишь два небольших перемещения головки диска. Программы (утилиты) дефрагментации, имеющиеся для этой файловой системы, по умолчанию считают наличие двухтрех экстентов у файла нормой. Например, программа HPFSOPT из набора утилит Gamma-Tech по умолчанию не дефрагментирует файлы, состоящие из трех и менее экстентов, а файлы, которые имеют большее количество экстентов, по возможности приводятся к 2 или 3 экстентам. Файлы объемом в несколько десятков мегабайт всегда будут фрагментированы, ибо максимально возможный размер экстента равен 8 Мбайтам. Практика показывает, что в среднем на диске имеется не более 2 процентов файлов, имеющих три и более экстентов. Даже общее количество фрагментированных файлов, как правило, не превышает 3 %. Такая ничтожная фрагментация оказывает пренебрежимо малое влияние на общую производительность системы. Кратко рассмотрим вопрос надежности хранения данных в HPFS. Любая файловая система должна обладать средствами исправления ошибок, возникающих при записи информации на диск. Система HPFS для этого использует механизм аварийного замещения (hotfix) [3].

Если файловая система HPFS сталкивается с проблемой в процессе записи данных на диск, то происходят следующие действия:

1.На экран выводится соответствующее сообщение об ошибке.

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

202

ошибки во время записи данных в нормальный блок HPFS выбирает один из свободных запасных блоков и сохраняет эти данные в нем.

3.Файловая система обновляет карту аварийного замещения в резервном блоке. Эта карта представляет собой просто пары двойных слов, каждое из которых является 32-битным номером сектора. Первый номер указывает на дефектный сектор, а второй — на тот сектор среди имеющихся запасных секторов, который был выбран для его замены.

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

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

6.Затем удаляет запись из карты аварийного замещения и записывает отредактированную карту на диск.

Все основные файловые объекты в HPFS, в том числе файловые узлы, блоки размещения и блоки каталогов, имеют уникальные 32-битные идентификаторы и указатели на свои родительские и дочерние блоки. Файловые узлы, кроме того, со-

203

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

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

3.4.4 Файловая система ОС UNIX

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

Рассмотрим одну из ранних реализаций файловой системы UNIX, основные идеи которой сохранились до сих пор. Каждая файловая система имеет четыре основные части:

1)загрузочный блок — это первый блок диска (блок 0), зарезервированный для системной загрузочной программы;

2)суперблок — это первый блок собственно файловой системы (блок 1), содержащий основные данные о файловой системе и ее размещении на диске, в том числе о списках свободных i-узлов и блоков;

3)i-узлы — это последовательность блоков, следующих за суперблоком. I-узел содержит ссылки на блоки. Имеется ровно один i-узел для каждого каталога или файла в файловой системе;

204

4) блоки — это блоки, которые занимают оставшееся пространство диска и содержат либо действительные данные каталогов и файлов (блоки данных), либо ссылки на блоки (косвенные блоки).

Суперблок содержит следующие данные:

размер дискового пространства, доступного файловой системе (в блоках);

число блоков, зарегистрированных для i-узлов;

имя файловой системы;

имя тома;

время последнего изменения;

время последнего копирования (back up);

ссылку на список свободных блоков;

ссылку на список свободных i-узлов.

Структура файловой системы UNIX представлена на рисунке 3.4.

Загрузочн

Суперблок

 

 

ый блок

i-узлы

Блоки

 

Список

свободных

i-узлов Список свободных блоков

Рис. 3.4 — Структура файловой системы UNIX

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

В i-узле содержится также информация о правах доступа к файлу, число ссылок на файл из каталогов и другие данные. Каждый i-узел содержит 13 указателей.

205

Первые 10 указателей непосредственно ссылаются на блоки данных файла. Поскольку блок содержит 512 байтов, то этого достаточно для обработки файлов до 5120 байтов (512 ×10).

Если длина файла больше 5120 байт, используется 11-й указатель i-узла, который ссылается на косвенный блок из 128 ссылок на блоки данных. Использование косвенного блока позволяет увеличить длину файла до величины 70656 байт (512 ×(10 + + 128)).

Если и этого недостаточно, то используется 12-й указатель i-узла, ссылающийся на дважды косвенный блок, содержащий 128 ссылок на косвенные блоки. Тогда максимальный размер файла увеличивается до величины 8459264 байта (512 × (10 +1282)). Наконец, использование последнего 13-го указателя на трижды косвенный блок из 128 ссылок на дважды косвенные блоки дает предельную длину в файловой системе — 1082201088 байтов (512 ×(10 + 128 + 1282 + 1283)). Другие версии системы UNIX могут отличаться количеством ссылок в i-узле, косвенных блоках и размером блока данных.

Когда система загружается, имеется только одна из файловых систем, называемая корневой. В ней находятся все важнейшие каталоги (/dev,/etc, /bin и т.п.). Все остальные файловые системы должны быть созданы и смонтированы.

Команда mkfs создает новую файловую систему. Она рас-

положена в каталоге /etc и имеет два параметра:

/etc/mkfs <имя> <размер>

Первый параметр является именем специального файла и указывает устройство, на котором создается файловая система.

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

Пример создания файловой системы на флоппи-диске:

/etc/mkfs /dev/flo 2000 isize = 230

Ответное сообщение указывает число блоков, выделенных для размещения i-узлов.

Монтирование файловой системы UNIX для какой-либо ОС осуществляется посредством команды mount. Эта команда под-

206

ключает корневой каталог монтируемой файловой системы в один из каталогов корневой файловой системы. Команда расположена в каталоге /etc и имеет два параметра: /etc/mount <устройство> <каталог>

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

Чтобы выяснить, какие файловые системы смонтированы в данный момент, надо выполнить команду mount без парамет-

ров:

mount

/dev/fl0 on /floppy0

Ответом является сообщение об этих системах (в данном случае об одной системе). Оно формируется на основе данных о монтаже файловых систем, хранимых в файле /etc/mnttab.

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

Если файловая система на съемном устройстве больше не используется, ее можно демонтировать командой umount, рас-

положенной в каталоге /etc и имеющей один параметр: umount <устройство>

Например, демонтаж файловой системы на гибком диске из

предыдущего примера выполняется командой: umount /dev/fl0

Результатом демонтажа является разрыв связи между корневым каталогом демонтируемой файловой системы и каталогом корневой файловой системы, в котором производился монтаж. При выполнении команды демонтажа текущий каталог должен быть вне демонтируемой файловой системы, иначе будет выдано сообщение о том, что устройство занято (umount :

device busy)и команда не будет выполнена.

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

207

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

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

могут появиться дубли i-узлов, описывающие один и тот же файл дважды;

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

могут существовать некоторые файлы, которые не включены ни в один каталог.

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

виды избыточности:

блок данных, являющийся каталогом, содержит имена файлов и номера i-узлов; где-то имеется i-узел, соответствующий этому каталогу, и этот i-узел должен быть каталогом, а не обычным файлом;

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

аналогично, блок, принадлежащий файлу, должен принадлежать только одному файлу; это легко проверить.

Эти и другие виды избыточности использует программа проверки файловой системы, запускаемая командой fsck (file system check). В различных реализациях существуют разные команды проверки целостности файловой системы: icheck, dcheck, ncheck. Однако все они в большей или меньшей степени перекрываются командой fsck.

Команда fsck выполняется в несколько фаз, на которых производится следующая работа:

проверка целостности i-узлов (счетчик связи, тип и формат i-узла);

208

проверка каталогов, указывающих на i-узлы, содержащие ошибки;

проверка каталогов, на которые нет ссылок;

проверка счетчиков связей в каталогах и файлах;

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

Команда по умолчанию всегда проверяет корневую файловую систему: все другие файловые системы проверяются, если их имена занесены в файл /etc/checklist.

После выполнения fsck, связанного с «починкой» файловой

системы, может появиться сообщение

***** BOOT UNIX (NO SYNC!) *****,

требующее перезагрузки системы без выполнения команды sync.

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

Необходимым условием правильной работы fsck является также наличие пустого каталога /lost+found в корневом каталоге.

Если при выполнении fsck будут найдены каталоги, на которые никто не ссылается в проверяемой файловой системе, они будут подключены в каталог /lost+found для дальнейшего изучения их принадлежности.

3.4.5 Файловые системы для CD-ROM

Файловая система CDFS

В Windows 2000 обеспечивается поддержка файловой системы CDFS (Compact Disk File System), отвечающей стандарту ISO 9660, описывающему расположение информации на CDROM. Поддерживаются длинные имена файлов в соответствии с ISO 9660 Level 2.

209

При создании CD-ROM под управлением Windows 2000 следует иметь в виду следующее:

все имена каталогов и файлов должны содержать менее 32 символов;

все имена каталогов и файлов должны состоять только из символов верхнего регистра;

глубина каталогов не должна превышать 8 уровней от

корня; − использование расширений имен файлов не обязательно.

Файловая система UDF

UDF (Universal Disk Format — универсальный дисковый формат) — спецификация формата файловой системы, независимой от операционной системы (ОС) для хранения файлов на оптических носителях (оптических дисках). UDF является реализацией стандарта ISO/IEC 13346 (известного также как ECMA-167).

Формат UDF призван заменить ISO 9660. ISO 9660 имеет некоторые ограничения, которые делают его несовместимым с DVD, CD-RW и другими новыми форматами дисков. UDF разработан так, чтобы избавить от этих ограничений. UDF позволяет дозаписывать файлы на CD-R- или CD-RW-дисках, один файл одновременно, без существенных потерь дискового пространства, используя метод пакетной записи. Также UDF учитывает возможность выборочного стирания некоторых файлов на перезаписываемых носителях CD-RW, освобождая место на диске. В стандарте ISO 9660 такое не предусмотрено. UDF также лучше подходит для DVD, так как имеет лучшую поддержку для дисков большого объёма — в частности ISO 9660 не поддерживает файлы размером более 2 Гб.

UDF разработан и развивается Optical Storage Technology Association (OSTA).

Существует несколько версий формата UDF:

− 1.02 (поддерживается Windows 98, многими версиями ОС корпорации Apple, возможно использовать для DVD-RAM и магнитооптических дисков);