184 Глава 6. Файловые система
так как эта файловая система следит за тем, чтобы области данных, принадлежа-
щие одному и тому же файлу, располагались как можно ближе друг к другу. Файл
из трех экстентов имеет только два нарушения непрерывности, и, следовательно
для его чтения потребуется всего лишь два небольших перемещения головки дис-
ка. Программы (утилиты) дефрагментации, имеющиеся для этой файловой систе-
мы по умолчанию, считают наличие двух-трех экстентов у файла нормой'. Прак-
тика показывает, что в среднем на диске имеется не более 2 % файлов, имеющих
три и более экстентов [26]. Даже общее количество фрагментированных файлов,
как правило, не превышает 3 %. Такая ничтожная фрагментация оказывает пре-
небрежимо малое влияние на общую производительность системы.
Теперь кратко рассмотрим вопрос надежности хранения данных в HPFS. Любая
файловая система должна обладать средствами исправления ошибок, возникаю-
щих при записи информации на диск. Система HPFS для этого использует меха-
низм аварийного замещения (HotFix),
Если файловая система HPFS сталкивается с проблемой в процессе записи дан-
ных на диск, она выводит на экран соответствующее сообщение об ошибке. Затем
HPFS сохраняет информацию, которая должна была быть записана в дефектный
сектор, в одном из запасных секторов, заранее зарезервированных на этот случай.
Список свободных запасных блоков хранится в резервном блоке HPFS. При обна-
ружении ошибки во время записи данных в нормальный блок HPFS выбирает один
из свободных запасных блоков и сохраняет эти данные в нем. Затем файловая си-
стема обновляет карту аварийного замещения в резервном блоке. Эта карта пред-
ставляет собой просто пары двойных слов, каждое из которых является 32-разряд-
ным номером сектора. Первый номер указывает на дефектный сектор, а второй —
на тот сектор среди имеющихся запасных секторов, который и был выбран для
замены плохого. После замены дефектного сектора запасным карта аварийного
замещения записывается на диск, и на экране появляется всплывающее окно, ин-
формирующее пользователя о произошедшей ошибке записи на диск. Каждый раз,
когда система выполняет запись или чтение сектора диска, она просматривает карту
аварийного замещения и подменяет все номера дефектных секторов номерами за-
пасных секторов с соответствующими данными. Следует заметить, что это преоб-
разование номеров существенно не влияет на производительность системы, так
как оно выполняется только при физическом обращении к диску, а не при чтении
данных из дискового кэша. Очистка карты аварийного замещения автоматически
выполняется программой CHKDSK при проверке диска HPFS. Для каждого за-
мещенного блока (сектора) программа CHKDSK выделяет новый сектор в наибо-
лее подходящем для файла (которому принадлежат данные) месте жесткого диска.
Затем программа перемещает данные из запасного блока в этот сектор и обновля-
ет информацию о положении файла, что может потребовать новой балансировки
дерева блоков размещения. После этого CHKDSK вносит поврежденный сектор
1
Например, программа HPFSOPT из набора утилит GammaTech по умолчанию не дефрагментируе*
файлы, состоящие из трех и менее экстентов, а файлы, которые имеют большее количестве эксте
тов, приводятся к 2 пли 3 экстентам, ежели это возможно (файлы объемом в несколько десятк
мегабайтов всегда будут фрагментнровапы, ибо максимально возможный размер экстента, как
помните, составляет 8 Мбайт).