Введение
Структура файловой системы, записывающей всю информацию в круговой буфер – общая концепция лог-структурированных файловых систем.
the general concept of log structured file systems
Лог-структурированная файловая система – это файловая система, в которой данные и метаданные записываются последовательно в круговой буфер, называемый журналом. Эта концепция была впервые предложена в 1988 году Джоном К. Остерхаутом и Фредом Дуглисом и впервые реализована в 1992 году Остерхаутом и Менделем Розенблумом для распределенной операционной системы Sprite, похожей на Unix.
Недостатки
Обоснование проектирования журналируемых файловых систем исходит из предположения, что большинство операций чтения будут оптимизированы за счет постоянно увеличивающихся кэшей памяти. Однако это предположение не всегда справедливо: на магнитных носителях, где операции поиска относительно дороги, журналируемая структура может фактически замедлить чтение, поскольку она фрагментирует файлы, которые традиционные файловые системы обычно хранят непрерывно при записи на месте. На флеш-памяти, где время поиска обычно пренебрежимо мало, журналируемая структура может не обеспечить существенного прироста производительности, поскольку фрагментация записи оказывает гораздо меньшее влияние на скорость записи. Другая проблема – последовательное размещение журналов друг на друге, что не является хорошей практикой, так как это приводит к необходимости множественных стираний с невыровненным доступом. Однако многие флеш-устройства не могут перезаписывать часть блока и должны сначала выполнить (медленный) цикл стирания каждого блока, прежде чем смогут выполнить перезапись. Поэтому, помещая все записи в один блок, можно повысить производительность по сравнению с разбросанными по разным блокам записями, каждый из которых необходимо скопировать в буфер, стереть и записать обратно. Это явное преимущество для так называемой "сырой" флеш-памяти, где обходится слой трансляции флеш-памяти.
On magnetic media—where seeks are relatively expensive—the log structure may actually make reads much slower, since it fragments files that conventional file systems normally keep contiguous with in place writes. On flash memory—where seek times are usually negligible—the log structure may not confer a worthwhile performance gain because write fragmentation has much less of an impact on write throughput. Another issue is stacking one log on top of another log, which isn't a very good idea as it forces multiple erases with unaligned access. However many flash based devices cannot rewrite part of a block, and they must first perform a (slow) erase cycle of each block before being able to re write, so by putting all the writes in one block, this can help performance as opposed to writes scattered into various blocks, each one of which must be copied into a buffer, erased, and written back, which is a clear advantage for so called "raw" flash memory where flash translation layer is bypassed.