Использование reiserfs в Linux

Альтернативные, продвинутые файловые системы для смельчаков

Ознакомьтесь с файловыми системами ext2 (вторая расширенная файловая система), ext3 (третья расширенная файловая система) и Reiser4 и узнайте, как создать свою собственную файловую систему Reiser4. Наиболее широко используемая ext2 - это традиционная UNIX®-овая файловая система, которая плохо подходит для современных жестких дисков больших размеров. В файловой системе ext3 добавлено журналирование, но больше почти ничего. Если вам нужно что-то реально продвинутое, можно испробовать современную файловую систему Reiser4.

Крис Херборт, внештатный сотрудник, независимый писатель

Photo of Chris HerborthКрис Херборт (Chris Herborth) уже более 10 лет пишет об операционных системах и программировании. Он выигрывал награды как старший технический писатель. Если он не играет с сыном Алексом или просто проводит время с женой, Крис посвящает свое свободное время написанию статей и исследованию видео игр (то есть, игре).



23.09.2008

Введение

Меня всегда очаровывали файловые системы и жесткие диски - с тех пор как я потратил кучу денег на огромный (по тем временам) 80-мегабайтный жесткий диск для своего компьютера в начале 90-х годов. Есть что-то волшебное в том, как большие куски данных перекидываются туда-обратно по шине, читаются и пишутся тысячи файлов, работают бенчмарки.

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

Да, именно хилой. Если не потратить огромные деньги на экзотическое оборудование, подсистема ввода/вывода жесткого диска не намного продвинулась по сравнению с процессором, оперативной памятью и видеоплатой. Знаменитый закон Мура здесь не работает, только микромагнетизм и передовые технологии изготовления.

Из всех широко распространенных операционных систем Linux® имеет самую широкую поддержку различных файловых систем. В этом отношении Linux отличается от других UNIX®-систем, которые традиционно поддерживают свои собственные файловые системы и файловую систему ISO-9660, используемую на стандартных CD-ROM дисках. Моя система Fedora Core 4 имеет загружаемые модули ядра для двух десятков сортов файловых систем - главным образом для обеспечения совместимости. К Linux можно подключить диск практически из любой компьютерной системы и манипулировать им. Но что если вы устанавливаете новый диск в Linux-систему и вам не нужно использовать его в Windows®, QNX, Mac OS X или Minix?

Тогда стоит узнать немного больше о некоторых основных файловых системах Linux, таких как ext2 (вторая расширенная файловая система), ext3 (третья расширенная файловая система) и reiserfs 4 (перспективная файловая система со многими экзотическими возможностями, улучшающими работу с файлами).


Подготовка

Если в используемом дистрибутиве Linux отсутствует поддержка Reiser4 (она есть, например, в Arch, Linspire и SUSE), то предстоит выполнить достаточно сложную операцию: пересобрать ядро. О пересборке ядра надо было бы писать отдельное руководство, поэтому обратитесь к руководству для конкретного дистрибутива, которое поможет вам разобраться в этапах сборки ядра.

До того как начать компилировать ядро Linux, необходимо посетить домашнюю страницу Reiser4 на сайте Namesys (см. раздел Ресурсы) и скачать патчи Reiser4, подходящие для используемого ядра. Эти патчи содержат инструкцию о том, как их применить перед тем, как сконфигурировать и скомпилировать ядро.

Чтобы создавать файловые системы Reiser4 и работать с ними, понадобится пакет reiser4progs. Если в дистрибутиве нет пакета resier4progs, снова посетите сайт Namesys и скачайте его (см. Ресурсы).

Если хочется поэкспериментировать с Reiser4, превосходное решение - Gentoo Linux Live CD с поддержкой Reiser4. См. ссылку в разделе Ресурсы.


Файловые системы Linux

На заре Linux (в далеком 1993 году) ядро поддерживало только одну файловую систему - порт весьма минималистичной файловой системы Minix. Она имела ряд ограничений: максимальная длина имени файла - 14 символов, размер файловой системы ограничен 64МБ. Она даже не поддерживала всех атрибутов, свойственных файловым системам UNIX, в частности, полного набора временных меток создания, модификации и доступа, требуемого для соответствия файловой системы стандартам POSIX (Интерфейс переносимых операционных систем).

Из-за ограниченности файловой системы Minix началась работа над ее заменой. В результате появился уровень абстракции виртуальной файловой системы (VFS), который упростил написание файловых систем для Linux. С использованием нового VFS файловая система Minix была расширена добавлением поддержки длинных имен файлов и увеличением файловой системы (до 2 ГБ). Эта версия получила название расширенной файловой системы (ext), но и у нее остались ограничения.

Многие из этих ограничений были преодолены в файловой системе ext2, которая все еще используется во многих системах и долгое время была в Linux файловой системой по умолчанию. В результате добавления к ext2 журналирования появилась следующая версия - ext3.

Первой работающей под Linux журналируемой файловой системой была reiserfs (также известная как Reiser3), которая имела поддержку журналирования и лучше использовала дисковое пространство. В пришедшей ей на смену версии Reiser4, полностью переработанной и переписанной, основное внимание уделяется расширяемости, безопасности и производительности и при этом эффективному и безопасному хранению данных. Reiser4 пока не включена в ядро Linux 2.6, что обычно свидетельствует о возможной нестабильности или других поводах для осмотрительности. Не забывайте всегда делать резервные копии важных данных, независимо от используемой файловой системы.

Давайте сделаем быстрый обзор файловых систем ext2, ext3 и Reiser4.

Традиционная: ext2

Ext2 - файловая система по умолчанию в Linux - это традиционная UNIX-овая файловая система (базируется на файловой системе Berkeley Fast Filesystem, FFS). Она имеет максимальную длину имени файла 255 символов и теоретический максимум размера файловой системы 4 терабайта. (Драйвер блочных устройств в Linux ограничен "всего лишь" 2047 гигабайтами; дайте мне знать, когда я смогу купить жесткий диск такого объема).

Из-за широкой распространенности ext2 драйверы для нее появились и для Windows и Mac OS X. Они позволяют читать и писать на разделы ext2 непосредственно из этих операционных систем, что делает ее превосходным форматом для совместного доступа к таким устройствам, как переносные жесткие диски.

Файловая система ext2 поддерживает все стандартные возможности UNIX:

  • Идентификаторы (ID) владельца и группы.
  • Биты режимов, задающие права пользователей, групп и другие права и флаги операционной системы.
  • Ведение записей создания, модификации и времени доступа к файлам (хотя большинство систем запускаются с отключенным контролем времени доступа для увеличения производительности ценой потери совместимости со стандартом POSIX 1003.1).

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

Традиционная, но журналируемая: ext3

Файловая система ext3 для Linux используется по умолчанию в большинстве современных дистрибутивов. По сравнению с ext2 в ней добавлены:

  • Журнал метаданных, обеспечивающий достоверное состояние файловой системы. Это освобождает от необходимости проводить длительные проверки с помощью fsck после краха системы или отказа питания.
  • Индексирование дерева каталогов для ускорения доступа к большим каталогам.
  • Изменение размера на лету и возможность апгрейда файловой системы с ext2 до ext3 без переформатирования жесткого диска.
  • Увеличенные максимальные размеры файла и файловой системы (2 и 32 терабайта соответственно).

Хотя ext3 уступает по скорости и масштабируемости конкурентам (таким как Reiser3 или превосходная XFS от SGI), она совместима с ext2, что делает ее привлекательной, потому что ext2 имеет множество отработанных утилит для поддержки и администрирования.

Машина Бэтмена: Reiser4

Хотя файловая система Reiser3 приобрела некоторую популярность, благодаря ее скорости и поддержке журналирования (сегодня она стала файловой системой по умолчанию для некоторых дистрибутивов Linux), ее создатели не расслаблялись. Reiser4 написана с нуля и включает интересные дополнительные возможности:

  • Эффективное журналирование с регистрацией событий.
  • Эффективное хранение маленьких файлов, в результате чего увеличивается скорость и лучше используется дисковое пространство.
  • Быстрая обработка очень больших каталогов с сотнями миллионов файлов (да, миллионы файлов в одном каталоге без потери производительности).
  • Гибкая инфраструктура плагинов, которые позволяют легко добавлять возможности сжатия и шифрования в любое время в будущем.
  • Автоматическая модификация файловой системы, что всегда гарантирует ее согласованное состояние.
  • Динамическая оптимизация диска на лету.
  • Поддержка транзакций в стиле баз данных.

Но погодите, почему я назвал ее "машиной Бэтмена"? Reiser4 поддерживает множество интересных возможностей, которые вам могут никогда не понадобиться, потому что Linux VFS не открывает эту функциональность, - так же как многочисленные возможности автомобиля Бэтмена не понадобятся вам по дороге из дома на работу.


Знакомство с Reiser4

Прежде чем делать что-нибудь интересное с файловой системой Reiser4, нужно отформатировать раздел под нее. Как видно из рисунка 1, у меня есть запасной раздел для этой цели:

Рисунок 1. Раздел для форматирования
Рисунок 1. Раздел для форматирования

Нужно создать новую файловую систему Reiser4 на этом разделе и потом ее смонтировать.

Создание файловой системы Reiser4

Для создания файловой системы необходимо войти как администратор - root (или использовать команду sudo для получения администраторских прав) и воспользоваться командой mkfs.reiser4:

/sbin/mkfs.reiser4 -L myLabel /dev/hda1

Эта команда создаст файловую систему Reiser4 на указанном разделе (я выбрал /dev/hda1) с меткой "mylabel" и случайным уникальным идентификатором, как показано на рисунке 2.

Рисунок 2. Создание файловой системы Reiser4
Рисунок 2. Создание файловой системы Reiser4

Свежеиспеченная файловая система Reiser4 готова! Теперь нужно смонтировать ее, чтобы начать использовать.

Монтирование

Чтобы смонтировать новую файловую систему, нужно войти как администратор (или использовать команду sudo для получения администраторских прав) и выполнить команды mkdir и mount:

mkdir /mnt/reiser4
mount /dev/hda1 /mnt/reiser4

Команда mkdir создает точку монтирования, после чего mount монтирует устройство с нашей файловой системой в созданной точке монтирования.

Можно выполнить команду mount без каких либо аргументов, чтобы посмотреть список уже смонтированных файловых систем, в котором теперь появится созданная файловая система Reiser4 (см. рисунок 3).

Рисунок 3. Смонтированные файловые системы, включая Reiser4
Рисунок 3. Смонтированные файловые системы, включая Reiser4

Теперь, когда новая файловая система смонтирована, сделаем так, чтобы она монтировалась автоматически.

Автоматическое монтирование файловой системы

Чтобы система автоматически монтировала том с Reiser4, необходимо прописать соответствующие инструкции в файле /etc/fstab.

Под учетной записью администратора (или используя sudo для получения администраторских прав) нужно внести изменения в /etc/fstab в текстовом редакторе, добавив строку, указанную ниже:

/dev/hda1    /mnt/reiser4    reiser4    defaults    0 0

В /etc/fstab следует указать нужное устройство и точку монтирования для файловой системы. После устройства и точки монтирования необходимо определить тип файловой системы и ее опции (используйте настройки по умолчанию, если вы не знаете точно, что делаете и не обладаете хорошей документацией по файловой системе). Последние две опции, "флаг резервного копирования" и "флаг проверки fsck", нужны по историческим причинам.

Можно проверить правильность редактирования /etc/fstab, корректно отмонтировав файловую систему и сказав команде mount смонтировать все автоматически:

umount /mnt/resier4
mount -a

Теперь при вводе команды mount без аргументов результат должен выглядеть в точности так же, как и раньше (см. Figure 3). Новая файловая система будет автоматически монтироваться во время загрузки вместе с другими файловыми системами.


Улучшение производительности и настройки поведения тома

Как и большинство других файловых систем для Linux, Reiser4 имеет ряд опций, которые можно использовать для улучшения общей производительности и изменения ее поведения. Эти опции можно передать команде mount, используя параметр -o, как видно из нижеследующего примера:

mount -t reiser4 -o option1,option2,...,optionn /dev/hda1 /mnt/reiser4

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

Чтобы опции файловой системы применялись во время загрузки, можно также включить их в файл /etc/fstab:

/dev/hda1    /mnt/reiser4    reiser4    option1,option2,...,optionn    0 0

Основные используемые опции:

  • defaults - стандартные параметры файловой системы в Linux. Опция эквивалентна заданию следующих параметров: rw, suid, dev, exec,a uto, nouser, async. Файловая система будет смонтирована в режиме чтения-записи, будут выставлены биты set-UID, обращение к блочным и символьным устройствам будет происходить обычным образом, бинарные файлы будут исполняемыми, файловую систему можно будет монтировать автоматически, все операции ввода-вывода будут производиться асинхронно.
  • noatime - не обновлять поле времени доступа к файлам при чтении. Это не соответствует POSIX в строгом смысле, но может значительно увеличить скорость операций файловой системы, особенно на файловых системах с огромным количеством папок и файлов, которые обычно используются на чтение, а не на запись.
  • noexec - не запускать бинарные файлы из файловой системы. Файловая система считается содержащей только данные. Это может быть полезно, если вы не очень доверяете источникам файлов и бинарного кода, находящихся на данной файловой системе.
  • nosuid - игнорировать пользовательские и групповые идентификаторы файлов в этой директории; еще одна опция безопасности на случай, если вы не доверяете источнику файлов.
  • ro - файловая система монтируется в режиме только для чтения. Попытки записать или создать новый файл не сработают.
  • data=journal - вместо того, чтобы записывать в журнал файловой системы только метаданные, перед записью в файловую систему производится полное журналирование данных. Это гарантирует целостность данных после внештатных ситуаций, но серьезно уменьшает производительность записи.

Обычно можно использовать настройки по умолчанию, но добавление опции noatime позволяет безопасно увеличить быстродействие. Опция data=journal может быть полезна для очень важных CVS-серверов или файловых систем, используемых для резервного копирования, где сохранность данных намного важнее производительности.


Резюме

Добавление новой файловой системы в Linux может быть непростой задачей, особенно если речь идет об одной из множества поддерживаемых Linux альтернативных файловых систем. Знание особенностей и ограничений популярных файловых систем поможет принять разумное решение.

Файловую систему Reiser4 все еще следует рассматривать как экспериментальную (даже несмотря на то, что многие люди используют ее без проблем), поскольку она пока еще не включена в ядро Linux. Разработчики Namesys прилагают все усилия, чтобы включить свой код в ядро, поэтому появление дистрибутивов, базирующихся на Reiser4 - только дело времени.

После создания файловой системы с помощью подходящей команды mkfs, монтирования ее командой mount (и добавления в файл /etc/fstab) можно начать с ней работать. Помните, что резервные копии важных данных нужно делать регулярно, а не тогда, когда откажет жесткий диск.

Ресурсы

Научиться

Получить продукты и технологии

  • Загрузите Gentoo Linux Live CD со встроенной поддержкой Reiser4.(EN)
  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, AIX и UNIX
ArticleID=340369
ArticleTitle=Использование reiserfs в Linux
publish-date=09232008