Открытые системы
.
Инфоресурсы Издания Новости ТВ Обучение События Кто есть кто Об издательстве Подписка

Открытые системы

Актуально: ИТ-решение
Семейство решений IBM Tivoli: оптимизация систем хранения данных при существенном росте их объема. Удобное управление данными и их надежная защита. Мониторинг системных ресурсов.



Alt.CW


Разное   

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


Маршал Кирк Маккьюзик,Грегори Р. Ганджер

Данная статья описывает реализацию мягких обновлений и интеграцию данного решения в быструю файловую систему 4.4BSD. Здесь подробно рассказывается обо всех изменениях, которые необходимо сделать как в прототипе, выполненном в рамках исследовательского проекта, так и в системе BSD, для создания системы, которую можно выпускать в массовом порядке. Кроме того, в статье обсуждается накопленный опыт, возможные трудности и уроки, полученные во время преобразования системы из исследовательского прототипа в реальную. И, как это часто бывает в подобных случаях, побочные операции (например, fsck и fsynk) требуют тщательного обдумывания и написания дополнительного кода. Опыт работы с получившейся системой подтвердил результаты проводимого ранее исследования: мягкие обновления прекрасно интегрируются с существующими файловыми системами и реализуют обработку зависимостей метаданных с достаточной производительностью, то есть производительность оказывается меньше оптимальной всего на несколько процентов.

Непротиворечивость файловой системы в случае возникновения системной ошибки традиционно поддерживается за счет использования синхронных операций записи, выполняемых в порядке, зависящем от обновлений метаданных, или за счет использования записей с упреждением с обязательной регистрацией, необходимой для их автоматической группировки. Мягкие обновления как альтернатива этим подходам представляют собой реализацию механизма, который контролирует и обеспечивает выполнение зависимостей обновления с тем, чтобы гарантировать постоянную непротиворечивость образа диска. Использование мягких обновлений позволяет обойтись без специальной регистрации или большинства синхронных операций записи. Действительно, способность мягких обновлений объединять многие операции, прежде выполнявшиеся отдельно и синхронно, сокращает число операций записи на диск на 40 - 70% для среды, где происходит интенсивная работа с файлами (то есть при разработке программ, работе почтовых серверов и так далее). Кроме того, помимо увеличения производительности, мягкие обновления могут поддерживать непротиворечивость образа диска на более высоком уровне. Гарантируя, что все некорректности сводятся лишь к невостребованным блокам и индексным дескрипторам файлов, мягкие обновления позволяют обойтись без необходимости запускать программу проверки файловой системы после каждого сбоя системы, то есть система сразу готова к работе. Операция проверки выполняется в активной файловой системе для восстановления всех потерянных блоков и индексных дескрипторов файлов, когда это удобно и, возможно, в виде фоновой задачи.

История вопроса и введение

В файловой системе метаданные (например, каталоги, индексные дескрипторы и карты свободных блоков) задают структуру необработанной памяти. Метаданные предоставляют указатели и дескрипторы для объединения нескольких секторов на диске в файлы и идентифицируют эти файлы. Чтобы быть полезной для работы постоянной памяти файловая система должна поддерживать целостность своих метаданных на случай непредсказуемых системных сбоев, таких как отключение питания и ошибки файловой системы. Поскольку подобные сбои обычно приводят к потере всей информации во временной памяти, информация в постоянной основной памяти (то есть на диске) всегда должна быть корректной настолько, чтобы можно было однозначно восстановить согласованное состояние файловой системы. А именно, образ файловой системы на диске не должен иметь «повисших» указателей, ссылающихся на неинициализированное пространство, указывать неоднозначную принадлежность ресурсов, которая возникает в том случае, когда на ресурс ссылается несколько указателей, или на используемые ресурсы, указатели на которые отсутствуют. Поддержка такого рода инвариантности в общем случае требует определения четкой последовательности (или атомарной группировки) обновлений небольших объектов метаданных, размещаемых на диске.

Быстрая файловая система BSD (FFS) [McKusick et al, 1984] и ее производные традиционно используют синхронные операции записи на диск для того, чтобы выполнить корректную последовательность изменений, обеспечивающую стабильное состояние памяти. Например, создание файла в системе BSD предусматривает сначала резервирование и инициализацию нового индексного дескриптора файла, а затем заполнение нового элемента каталога, который на него ссылается. При использовании подхода синхронных операций записи файловая система заставляет приложение, которое создает файл, ожидать выполнения операции записи на диск, инициализирующей индексный дескриптор на диске. В результате операции файловой системы, такие как создание и удаление файла, выполняются со скоростью доступа к диску, а не со скоростью процессоров и доступа к памяти в этих системах [McVoy & Kleiman, 1991; Ousterhout, 1990; Seltzer et al, 1993]. Поскольку время доступа к диску намного больше, чем скорость работы других компонентов компьютера, синхронные операции записи снижают производительность системы.

Задача обновления метаданных также может быть решена с помощью других механизмов. Например, один из них позволяет избежать необходимости сохранять состояние системы на диск за счет применения технологий энергонезависимой памяти. При таком подходе необходимо сохранять корректными только обновления и их можно переносить на диск в любом порядке и в тот момент, когда это удобнее. Еще один подход состоит в группировке каждого множества зависимых обновлений в виде атомарной операции в сочетании с определенной формой регистрации записи с упреждением [Chutani et al, 1992; Hagmann, 1987; NCR_Corporation, 1992] или с использованием таблиц теневых страниц [Chamberlin et al, 1981; Chao et al, 1992; Rosenblum & Ousterhout, 1991; Stonebraker, 1987]. В общем и целом эти подходы расширяют образ диска за счет дополнительной информации, которая может использоваться для восстановления перенесенных на диск значений метаданных после любой системной ошибки за исключением случая повреждения физического носителя. Многие современные файловые системы для повышения производительности по сравнению с подходом, предусматривающим синхронные операции записи на диск, успешно используют регистрацию записей с упреждением.

В статье [Ganger & Patt, 1994] был предложен альтернативный подход, получивший название мягкие обновления. В этой же статье была дана оценка его применения в рамках исследовательского прототипа. Файловая система с мягкими обновлениями для изменения метаданных использует отложенные операции записи на диск (то есть кэширование с отложенной записью), контролирует зависимости между обновлениями и выполняет эти зависимости в момент отложенной записи. Поскольку большинство блоков метаданных содержит множество указателей, в тех случаях, когда зависимости записываются только на уровне блоков, часто возникают циклические зависимости. Поэтому мягкие обновления отслеживают зависимости на уровне каждого из указателей, что позволяет записывать блоки в произвольном порядке. Любые обновления со статическими зависимостями в блоке метаданных перед записью блока возвращаются в предыдущее состояние, а после записи – восстанавливаются. Таким образом, циклы зависимостей с выполнением транзакции, ликвидируются. При использовании мягких обновлений приложения всегда «видят» самые последние копии блоков метаданных, а на диске всегда размещаются копии, согласующиеся с другим содержимым.

В данной статье мы описываем интеграцию мягких обновлений в 4.4BSD FFS, используемую в операционных системах NetBSD, OpenBSD, FreeBSD и BSDI. При этом мы обсудим накопленный в процессе работы опыт и расскажем об аспектах, оказавшихся сложнее, чем предполагалось в исследовательских проектах. Как зачастую бывает в подобных случаях, побочные операции, такие, как ограничение использования основной памяти, применяемой при отслеживании зависимостей, полная реализация fsync, семантика системных вызовов, корректное выявление и обработка утерянных ресурсов в fsck, а также четкое и рациональное завершение системного вызова unmount, требуют определенного обдумывания и, в результате, приводят к усложнению кода. Несмотря на эти трудности, опыт эксплуатации системы подтвердил расчеты по производительности, сделанные во время проводимых ранее исследований. В первую очередь необходимо отметить, что использование мягких обновлений в BSD FFS позволяет отказаться от большинства синхронных операций записи на диск и обеспечить производительность, которая на отличается от идеальной на 5%. В то же самое время мягкие обновления позволяют BSD FFS обеспечить более ясную семантику, строгую целостность и гарантии защиты, а кроме того - быстрое восстановление после сбоев (после системного сбоя для дальнейшей безопасной работы использование fsck не требуется).

Зависимости обновлений в быстрой файловой системе BSD

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

1) Никогда не определяется указатель на структуру до тех пор, пока она не проинициализирована (например, индексный дескриптор файла должен быть проинициализирован до элемента каталога, который на него ссылается).

17.07.1999г.
Также в разделе

17/07/1999   №07-08

СОДЕРЖАНИЕ

Разное


Эта рубрика в архиве
Список номеров за 

01 02 03 04 05-06 07-08
09-10 11-12        
МаркетГид:



Об издательствеКак нас найти  •  Контакты
    Издания:     Computerworld     Windows IT Pro     LAN     Сети     Мир ПК     Открытые системы     Директор ИС    
    WhatCar?     ФСП     Publish     Классный журнал     Stuff     Oil&Gas     Лечащий врач     What Hi-Fi?    
Copyright © 1992-2010. All rights reserved.
TopList    Rambler's Top100 Service Rambler's Top100