Введение Из всех широко распространенных операционных систем 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. Раздел для форматирования
Нужно создать новую файловую систему Reiser4 на этом разделе и потом ее смонтировать.
Создание файловой системы Reiser4
Для создания файловой системы необходимо войти как администратор - root (или использовать команду sudo для получения администраторских прав) и воспользоваться командой mkfs.reiser4 :
/sbin/mkfs.reiser4 -L myLabel /dev/hda1
|
Эта команда создаст файловую систему Reiser4 на указанном разделе (мы
выбрали /dev/hda1) с меткой "mylabel" и случайным уникальным
идентификатором, как показано на рисунке 2.
Рисунок 2. Создание файловой системы Reiser4
Свежеиспеченная файловая система Reiser4 готова! Теперь нужно смонтировать ее, чтобы начать использовать.
Монтирование
Чтобы смонтировать новую файловую систему, нужно войти как администратор (или использовать команду sudo для получения администраторских прав) и выполнить команды mkdir и mount :
mkdir /mnt/reiser4 mount /dev/hda1 /mnt/reiser4
|
Команда mkdir создает точку монтирования, после чего mount монтирует устройство с нашей файловой системой в созданной точке монтирования.
Можно выполнить команду mount без каких либо
аргументов, чтобы посмотреть список уже смонтированных файловых систем,
в котором теперь появится созданная файловая система Reiser4 (см. рисунок 3).
Рисунок 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 без аргументов результат должен выглядеть в точности так же, как и раньше. Новая файловая система будет автоматически монтироваться во время загрузки вместе с другими файловыми системами. Улучшение производительности и настройки поведения тома
Как и большинство других файловых систем для 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) можно начать с ней работать. Помните,
что резервные копии важных данных нужно делать регулярно, а не тогда,
когда откажет жесткий диск. |