Файловые системы с отложенной записью
Файловая система с точной записью жертвует производительностью ради надежности. Файловая система с отложенной записью повышает производительность при помощи стратегии кэширования "фоновая запись" (write-back); иными словами, изменения файла записываются в кэш, и содержимое последнего сбрасывается на диск оптимизированным способом, обычно в фоновом режиме.
Улучшение производительности, связанное с техникой кэширования "отложенная запись", достигается несколькими путями. Во-первых, уменьшается общее количество операций записи на диск. Поскольку не требуется упорядоченных, немедленно осуществляемых операций вывода, содержимое буфера может измениться несколько раз, прежде чем будет записано на диск. Во-вторых, резко возрастает скорость обслуживания запросов приложений, поскольку ФС может вернуть управление вызывающей программе, не ожидая завершения записи на диск. Наконец, стратегия отложенной записи игнорирует промежуточные состояния с нарушением целостности тома, возникающие тогда, когда несколько запросов на ввод-вывод перекрываются во времени. Это облегчает создание многопоточной ФС, допускающей одновременное выполнение нескольких операций ввода-вывода.
Недостаток метода отложенной записи состоит в том, что при его использовании бывают периоды времени, в течение которых нарушения целостности тома слишком велики, чтобы ФС могла их исправить. Следовательно, ФС с отложенной записью должны постоянно отслеживать состояние тома. HPFS, например, устанавливает на эти периоды времени бит, называемый битом изменений (dirty bit), чтобы подчеркнуть, что целостность тома нарушена. Если сбой операционной системы произошел в то время, когда том был измененным, его необходимо восстановить при помощи утилиты исправления тома Chkdsk. Фактически, поскольку в общем случае неизвестно, была ли целостность тома на самом деле нарушена в момент аварии, Chkdsk следует запускать после каждой перезагрузки, при которой установлен, бит изменений. Время, требуемое на восстановление тома HPFS, зависит от его размера и от того, сколь большим повреждениям он подвергся.
Хотя в процессе исправления диска целостность тома всегда восстанавливается, результаты исправления не всегда устраивают пользователя. Например, утилита Chkdsk HPFS иногда не может определить, к какому каталогу относится вновь созданный файл, и помещает его в улавливающий все каталог "found". Если том был серьезно поврежден, то может случиться, что некоторые файлы не удастся восстановить, и они будут просто потеряны. В общем случае, отложенная запись дает выигрыш в производительности по сравнению с точной записью — за счет большего риска и неудобств для пользователя при сбое системы.
Восстанавливаемые файловые системы
Восстанавливаемая ФС, как предполагается, должна превзойти по надежности ФС с точной записью и достичь при этом производительности ФС с отложенной записью. ФС такого типа гарантирует сохранение целостности тома; с этой целью используется технология ведения журнала изменений, разработанная первоначально для обработки транзакций. В случае аварии ОС такая ФС восстанавливает целостность при помощи процедуры восстановления, которая использует информацию из файла журнала транзакций. Так как ФС регистрирует записи на диск в журнале, то восстановление занимает несколько секунд, независимо от размера тома.
Процедура восстановления в NTFS является точной и гарантирует возвращение тома к некоторому целостному состоянию. Неадекватные результаты восстановления, характерные для ФС с отложенной записью, в NTFS исключаются.
За высокую надежность восстанавливаемой ФС приходится расплачиваться. При каждой транзакции, изменяющей структуру тома, требуется занести по одной записи на каждую подоперацию в журнал транзакций. ФС снижает эти накладные расходы на протоколирование за счет объединения записей журнала транзакций в пакеты — за одну операцию ввода-вывода в журнал добавляются сразу несколько записей. Кроме того, восстанавливаемая ФС может применять приемы оптимизации, которые используются ФС с отложенной записью. Она даже может увеличить интервалы между сбросами кэша на диск, так как ФС можно восстановить, если авария произошла до того, как изменения из кэша были переписаны на диск. Такой рост производительности кэша по сравнению с ФС с отложенной записью компенсирует и часто даже перевешивает накладные расходы, связанные с протоколированием транзакций.
Ни точная, ни отложенная запись не гарантируют защиты пользовательских данных. Если сбой системы произошел в тот момент, когда приложение выполняло запись в файл, то последний может быть потерян или разрушен. Более того, сбой может повредить ФС с отложенной записью, разрушив существующие файлы или даже сделав всю информацию на томе недоступной.
NTFS использует стратегию, улучшающую ее надежность по сравнению с традиционными ФС. Во-первых, восстанавливаемость NTFS гарантирует, что структура тома не будет разрушена, так что в случае сбоя системы все файлы останутся доступными.
Во-вторых, хотя в настоящее время NTFS не гарантирует сохранности пользовательских данных в случае сбоя системы — некоторые изменения в кэше могут быть потеряны, — приложения могут воспользоваться преимуществами сквозной записи и сброса кэша NTFS для гарантии того, что изменения файла будут записаны на диск в положенные моменты времени. И сквозная запись (cache write-trough) — принудительная немедленная запись на диск операций с файлом, и сброс кэша (cache flushing) — принудительная запись на диск содержимого кэша — вполне эффективны. NTFS не требуется дополнительного ввода-вывода для сброса на диск изменений нескольких различных структур данных ФС, так как изменения структур данных регистрируются (при помощи единственной операции записи) в журнале транзакций; если произошел сбой и содержимое кэша потеряно, то изменения ФС могут быть восстановлены по информации из журнала. Более того, NTFS, в отличие от HPFS и FAT, гарантирует, что сразу после операции сквозной записи или сброса кэша данные пользователя сохранят целостность и будут доступны, даже если вслед за этим произойдет сбой системы.
И, наконец, в NTFS заложен фундамент для того, чтобы в будущем ввести поддержку протоколирования транзакций для пользовательских файлов. Вместо протоколирования транзакций для пользовательских данных те пользователи, которым нужна дополнительная степень надежности, могут применять FtDisk — драйвер отказоустойчивого диска Windows NT — для создания и поддержки хранилища данных с избыточностью .
