Файловые системы с журнальной структурой

На современные файловые системы оказывают влияние и технологические изменения, в частности, постоянно растущая скорость центральных процессоров, увеличение емкости и удешевление дисковых накопителей (при не столь впечатляющем увеличении скорости их работы), рост в геометрической прогрессии объема оперативной памяти.
Единственным параметром, не демонстрирующим столь стремительного роста, остается время позиционирования блока головок на нужный цилиндр диска (за исключением твердотельных дисков, у которых данный параметр отсутствует).

Сочетание всех этих факторов свидетельствует о том, что у многих файловых систем возникает узкое место в росте производительности. Во время исследований, проведенных в университете Беркли, была предпринята попытка смягчить остроту этой проблемы за счет создания совершенно нового типа файловой системы — LFS (Log-structured File System — файловая система с журнальной структурой). Этот раздел будет посвящен краткому описанию работы LFS. Более полное изложение вопроса можно найти в исходной статье по LFS Розенблюма и Остераута (Rosenblum and Ousterhout, 1991).

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

Усложняет ситуацию то, что в большинстве файловых систем запись производится очень малыми блоками данных. Запись малыми порциями слишком неэффективна, поскольку записи на диск, занимающей 50 мкс, зачастую предшествуют позиционирование на нужный цилиндр, на которое затрачивается 10 мс, и ожидание подхода под головку нужного сектора, на что уходит 4 мс. При таких параметрах эффективность работы с диском падает до долей процента.

Чтобы понять, откуда берутся все эти мелкие записи, рассмотрим создание нового файла в системе UNIX. Для записи этого файла должны быть записаны i-узел для каталога, блок каталога, i-узел для файла и сам файл. Эти записи могут быть отложены, но если произойдет сбой до того, как будут выполнены все записи, файловая система столкнется с серьезными проблемами согласованности данных. Поэтому, как правило, записи i-узлов производятся немедленно.

Исходя из этих соображений разработчики LFS решили переделать файловую систему UNIX таким образом, чтобы добиться работы диска с полной пропускной способностью, даже если объем работы состоит из существенного количества небольших произвольных записей. В основу была положена идея структурировать весь диск в виде очень большого журнала.

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

В этой конструкции по-прежнему используются i-узлы той же структуры, что и в UNIX, но теперь они не размещаются в фиксированной позиции на диске, а разбросаны по всему журналу. Тем не менее, когда определено местоположение i-узла, местоположение блоков определяется обычным образом. Разумеется, теперь нахождение i-узла значительно усложняется, поскольку его адрес не может быть просто вычислен из его i-номера, как в UNIX. Для поиска i-узлов ведется массив i-узлов, проиндексированный по i-номерам. Элемент i в таком массиве указывает на i-узел на диске. Массив хранится на диске, но также подвергается кэшированию, поэтому наиболее интенсивно использующиеся фрагменты большую часть времени будут находиться в памяти.

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

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

Чтобы справиться с этой проблемой, LFS использует очищающий поток, который занимается тем, что осуществляет круговое сканирование журнала с целью уменьшения его размера. Сначала он считывает краткое содержание первого сегмента журнала, чтобы увидеть, какие i-узлы и файлы в нем находятся. Затем проверяет текущий массив i-узлов, чтобы определить, актуальны ли еще i-узлы и используются ли еще файловые блоки. Если они уже не нужны, то информация выбрасывается. Те i-узлы и блоки, которые еще используются, перемещаются в память для записи в следующий сегмент. Затем исходный сегмент помечается как свободный, и журнал может использовать его для новых данных. Таким же образом очищающий поток перемещается по журналу, удаляя позади устаревшие сегменты и помещая все актуальные данные в память для их последующей повторной записи в следующий сегмент. В результате диск становится большим кольцевым буфером с пишущим потоком, добавляющим впереди новые сегменты, и очищающим потоком, удаляющим позади устаревшие сегменты.

Управление использованием блоков на диске в этой системе имеет необычный характер, поскольку, когда файловый блок опять записывается на диск в новый сегмент, должен быть найден i-узел файла (который находится где-то в журнале), после чего он должен быть обновлен и помещен в память для записи в следующий сегмент. Затем должен быть обновлен массив i-узлов, чтобы в нем присутствовал указатель на новую копию. Тем не менее такое администрирование вполне осуществимо, и результаты измерения производительности показывают, что все эти сложности вполне оправданны. Результаты замеров, приведенные в упомянутой ранее статье, свидетельствуют о том, что при малых записях LFS превосходит UNIX на целый порядок, обладая при этом производительностью чтения и записи больших объемов данных, которая по крайней мере не хуже, чем у UNIX.

4.3.6.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Файловые системы с журнальной структурой:

  1. 2. Система права та її структура
  2. Структура и состояние системы.
  3. Структура и состояние системы.
  4. Четырехфункциональная схема и структура систем
  5. § 77 Предмет авторского права. – Литературное произведение. – Речи и чтение. – Журнальные статьи. – Художественное про- изведение. – Особенное значение формы. – Воспроизведение. – Музыкальное, драматическое, архитектурное произведение. – Удостоверение художественной собственности. – Владетель авторского права. – Совокупное право. – Аноним и псевдоним. – Передача авторского права. – Договор об уступке. – Издание журнальных статей и частной корреспонденции. – Издание художественных произведений
  6. Никлас Луман: социальные системы между смысловой структурой и управленческой эффициенцией
  7. О журнальной критике
  8. Журнально-публицистическая деятельность А. П. Чехова
  9. Журнально-публицистическая деятельность М. Е. Салтыкова-Щедрина
  10. О движении журнальной литературы в 1834 и 1835 году
  11. Журнально-издательская деятельность А. И. Герцена и Н. П. Огарева «Полярная звезда» и «Колокол»
  12. § 39 Классификация договоров в отдельных видах. – Римская классификация. – Система прусского закона, французского и австрийского кодекса. – Система русского свода. – Система настоящего изложения.
  13. Тема 15 Правова система і система права. Система законодавства та систематизація нормативно-правових актів
  14. Глава 4. Система права и система законодательства
  15. СТРУКТУРА
  16. §5. Система военных судов в РФ как часть системы судов общей юрисдикции
  17. Типы социальных структур
  18. Структура
  19. § 3. О структуре сознания