ReiserFS

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:05, 15 мая 2016.
ReiserFS
Полное название ReiserFS
Содержимое каталога B+ tree
Распределение файлов Bitmap[1]
Limits
Макс. размер тома 16 TiB[2]
Макс. размер файла 1 EiB (8 TiB on 32 bit systems)[2]
Макс. количество файлов 232−3 (~4 billion)[2]
Макс. длина имени файла 4032 bytes, limited to 255 by Linux VFS
Разрешенные символы
в именах файлов
All bytes except NUL and '/'
Features
Даты зарегистрирован modification (mtime), metadata change (ctime), access (atime)
Диапазон дат December 14, 1901 – January 18, 2038
Дата резолюции 1 s
Вилка Extended attributes
Разрешения файловой системы Unix permissions, ACLs and arbitrary security attributes
Прозрачное сжатие No
Транспорантное шифрование No
Другие
Операционная система Linux

ReiserFS — журналируемая файловая система, разработанная специально для Linux компанией Namesys под руководством Ганса Рейзера; этим наименованием обозначают третью версию семейства файловых систем Рейзера (тогда как четвёртую называют Reiser4).

Разработка

Поддерживается только под Linux. Стала первой журналируемой файловой системой, включённой в ядро Linux (в версии 2.4.1); является стандартной файловой системой в дистрибутивах Elive, Xandros, Linspire, GoboLinux, Yoper Linux, ранее была стандартной в SuSE (Enterprise, до октября 2006), Ubuntu, Gentoo, Archlinux, Slackware, также рекомендуется в Calculate Linux. Версии ReiserFS, включённые в ядро Linux старых версий (младше версии 2.4.10), признаны нестабильными компанией Namesys и не рекомендованы для промышленного использования, особенно в связке с NFS. Для создания структур файловой системы используется команда mkreiserfs.

Система поддерживает конфигурируемое блочное перераспределение — возможность упаковки нескольких небольших файлов в один блок во избежание фрагментации и потери дискового пространства. Из-за сильной потери производительности Namesys рекомендует отключить эту возможность на чувствительных к ресурсам машинах. Также реализовано несколько режимов журналирования (можно подвергать журналированию только метаданные, либо все данные — аналогично Ext3). Важной особенностью системы является возможность изменения размера файловой системы «на лету», без размонтирования тома.

Среди недостатков файловой системы — вероятность повреждения файловой системы в целом при сильно повреждённых метаданных и неэффективность единственного известного способа дефрагментации, требующего снятия полного дампа и последующего восстановления (в Reiser4 реализован переупаковщик, решающий эту проблему). [3]

Работа с маленькими файлами

Как происходит размещение в файловой системе большого числа маленьких порций информации? В Namesys решили, по крайней мере, для начала, сосредоточится на одном из аспектов работы файловой системы - работе с маленькими файлами. Строго говоря, файловые системы наподобие ext2 и ufs в этой области ведут себя неэффективно, часто вынуждая разработчиков проектировать базы данных или использовать другие "фокусы" для получения удовлетворительной производительности. Такой подход приводит к "изобретению множества велосипедов" и порождает огромное число несовместимых API узкоспециального назначения.

За счет чего ext2 поощряет этот вид "велосипедного" программирования? Ext2 хороша для хранения достаточно большого числа файлов размером более двадцати килобайт каждый, но совсем не идеальна для хранения 2,000 50-байтовых файлов. Мало того, что заметно снижается производительность, но и само хранение маленьких файлов на ext2 приводит к неэффективному использованию дискового пространства, так как ext2 ассигнует под каждый файл целое число 1-2-4 KB блоков (размер блока устанавливается при формировании файловой системы).

Стоит отказаться от хранения многих маленьких файлов непосредственно на файловой системе. Вместо этого возникает идея хранения информации в некоторой базе данных, работающей над файловой системой. В ответ на это Ханс Райзер (Hans Reiser) сказал бы, что всякий раз, когда формируется уровень над файловой системой, это свидетельствует лишь о том, что файловая система не отвечает нашим потребностям. Если бы она удовлетворяла, от этого можно было бы отказаться. Следовательно, хорошо спроектированная файловая система экономит время на разработку и устраняет ни с чем более не совместимый код.

Как на практике ReiserFS работает с большим числом маленьких файлов? Удивительно, но очень хорошо. Фактически, ReiserFS при обработке файлов размером меньше одного K выигрывает в скорости у ext2 в восемь - пятнадцать раз! Вообще, ReiserFS превосходит по быстродействию ext2 в почти каждой области, но действительно сияет, когда сравнивается обработка маленьких файлов.

Технология ReiserFS

За счет чего ReiserFS эффективно работает с маленькими файлами? ReiserFS использует специально оптимизированные сбалансированные деревья (b* balanced tree - одно на файловую систему) для организации всех данных файловой системы. Одно это дает большое увеличение производительности, а также снимает ряд искусственных ограничений на размещение файловой системы. Например, становится возможным иметь каталог, содержащий 100,000 других подкаталогов. Еще одна выгода от использования b*tree в том, что ReiserFS, подобно большинству других filesystems нового поколения, динамически ассигнует информационные узлы (inodes) вместо их статического набора, образующегося при создании "традиционной" файловой системы. Это дает большую гибкость и оптимальность в формировании пространства хранения.[4]

ReiserFS также имеет ряд особенностей, нацеленных специально для улучшения работы с маленькими файлами. ReiserFS не связана ограничением в ассигновании памяти для файла в целом числе 1-2-4 KB блоков. По необходимости для файла может ассигноваться точный размер. ReiserFS также включает некоторые виды специальной оптимизации файловых "хвостов" для хранения конечных частей файлов, меньших, чем логический блок файловой системы. Для увеличения скорости, ReiserFS способен хранить содержимое файлов непосредственно внутри дерева b*tree, а не в виде указателя на дисковый блок (в ext2 есть понятие fastlink, когда содержимое "мягкой" ссылки до 60 байт хранится в inode).

Тем самым достигается две вещи. Первое, сильно увеличивается производительность, так как данные и метаданные (stat_data, иначе говоря, inode) информация может хранится рядом и считываться одной дисковой операцией ввода/вывода. Второе, ReiserFS способен упаковать хвосты (tail) файлов, экономя дисковое пространство. Фактически, при разрешении ReiserFS выполнять упаковку хвостов (значение по умолчанию) будет экономиться примерно шесть процентов дискового пространства (в сравнении с ext2).

Следует иметь в виду, что упаковка хвостов требует дополнительной работы, так как при изменении размеров файлов необходима "переупаковка". По этой причине в ReiserFS упаковка хвоста может отключаться, позволяя администратору выбрать между скоростью и эффективностью использования дискового пространства.[5]

Примечания

  1. Reiser FS node layout, Namesys .
  2. 2,0 2,1 2,2 "Reiser FS Specifications", FAQ, Namesys .
  3. Материал из Википедии — свободной энциклопедии - ReiserFS - режим доступа [1]
  4. Материал из электронного ресурса - Файловая система ReiserFS - Режим доступа [2]
  5. Материал из электронного ресурса - Руководство по продвинутым файловым системам. Презентация ReiserFS - Режим доступа [3]