Файловая система с журнальной структурой
Файловая система с журнальной структурой — это файловая система , в которой данные и метаданные записываются последовательно в кольцевой буфер , называемый журналом . Этот дизайн был впервые предложен в 1988 году Джоном К. Оустерхаутом и Фредом Дуглисом и впервые реализован в 1992 году Остерхаутом и Менделем Розенблюмом для Unix-подобной распределенной операционной системы Sprite . [1]
Обоснование
[ редактировать ]Обычные файловые системы склонны размещать файлы с большой осторожностью к пространственной локализации и вносить изменения в их структуры данных на месте, чтобы хорошо работать на оптических и магнитных дисках, которые имеют тенденцию выполнять относительно медленный поиск.
Проектирование файловых систем с журнальной структурой основано на гипотезе о том, что это больше не будет эффективно, поскольку постоянно увеличивающийся объем памяти на современных компьютерах приведет к тому, что ввод-вывод станет тяжелым для записи, поскольку операции чтения почти всегда будут выполняться из кэша памяти. Таким образом, файловая система с журнальной структурой рассматривает свое хранилище как циклический журнал и последовательно записывает данные в заголовок журнала.
Это имеет несколько важных побочных эффектов:
- Пропускная способность записи на оптические и магнитные диски повышается, поскольку их можно объединять в большие последовательные прогоны, а дорогостоящие операции поиска сводятся к минимуму.
- Структура естественным образом подходит для носителей с зонами или страницами только для добавления, таких как флэш-накопители и с магнитной записью . жесткие диски [2] [3]
- При записи создаются многочисленные, хронологически развивающиеся версии как данных файла, так и метаданных. Некоторые реализации делают эти старые версии файлов именуемыми и доступными, эта функция иногда называется путешествием во времени или созданием моментальных снимков . Это очень похоже на файловую систему управления версиями .
- Восстановление после сбоев проще. При следующем монтировании файловой системе не нужно просматривать все свои структуры данных, чтобы исправить любые несоответствия, но она может восстановить свое состояние по последней согласованной точке в журнале.
Файловые системы с журнальной структурой, однако, должны освобождать свободное пространство из хвоста журнала, чтобы предотвратить заполнение файловой системы, когда голова журнала заворачивается, чтобы соответствовать ей. Хвост может освободить место и двигаться вперед, пропуская данные, для которых более новые версии существуют дальше в журнале. Если более новых версий нет, то данные перемещаются и добавляются в голову.
Чтобы уменьшить накладные расходы, связанные со сборкой мусора , большинство реализаций избегают чисто циклических журналов и делят их хранилище на сегменты. Головка бревна просто продвигается в несмежные сегменты, которые уже свободны. Если требуется пространство, сначала освобождаются наименее заполненные сегменты. Это уменьшает нагрузку ввода-вывода (и уменьшает усиление записи ) сборщика мусора, но становится все более неэффективным по мере того, как файловая система заполняется и приближается к емкости.
Недостатки
[ редактировать ]Обоснование конструкции файловых систем с журнальной структурой предполагает, что большая часть операций чтения будет оптимизирована за счет постоянного увеличения кэшей памяти. Это предположение не всегда выполняется:
- На магнитных носителях, где поиск относительно дорог, структура журнала может на самом деле значительно замедлять чтение, поскольку она фрагментирует файлы, которые обычные файловые системы обычно сохраняют смежными с записью на месте.
- Во флэш-памяти, где время поиска обычно незначительно, структура журнала может не обеспечить существенного прироста производительности, поскольку фрагментация записи оказывает гораздо меньшее влияние на пропускную способность записи. Другая проблема — размещение одного журнала поверх другого, что не очень хорошая идея, поскольку приводит к многократному удалению с несогласованным доступом. [4] Однако многие устройства на базе флэш-памяти не могут перезаписать часть блока, и они должны сначала выполнить (медленный) цикл стирания каждого блока, прежде чем иметь возможность перезаписать, поэтому, помещая все записи в один блок, это может повысить производительность, а не запись разбросана по различным блокам, каждый из которых необходимо скопировать в буфер, стереть и записать обратно, что является явным преимуществом для так называемой «сырой» флэш-памяти, где уровень трансляции флэш-памяти обходит. [ нужна ссылка ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Джон К. Оустерхаут, Мендель Розенблюм. (1991), Проектирование и реализация файловой системы с логической структурой (PDF) , Калифорнийский университет, Беркли
- ^ Команды разработчиков аппаратного обеспечения Magic Pocket. «Расширение инноваций Magic Pocket за счет первого внедрения накопителя SMR петабайтного масштаба» . dropbox.tech .
- ^ Рид, Колин; Бернштейн, Фил (1 января 2010 г.). «Реализация интерфейса только для добавления для полупроводникового хранилища» (PDF) . Данные IEEE, англ. Бык . 33 :14-20.
- ^ Сваминатан Сундарараман, Цзинпей Ян (2014), Не складывайте свой журнал в мой журнал (PDF) , SanDisk Corporation