Из всех широко распространенных операционных систем Linux® имеетсамую широкую поддержку различных файловых систем. В этом отношенииLinux отличается от других UNIX®-систем, которые традиционноподдерживают свои собственные файловые системы и файловую системуISO-9660, используемую на стандартных CD-ROM дисках. Моя система FedoraCore 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 (в далеком 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 — файловая система по умолчанию в Linux — это традиционнаяUNIX-овая файловая система (базируется на файловой системе BerkeleyFast 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 имеет множество отработанныхутилит для поддержки и администрирования.
Хотя файловая система Reiser3 приобрела некоторую популярность,благодаря ее скорости и поддержке журналирования (сегодня она сталафайловой системой по умолчанию для некоторых дистрибутивов Linux), еесоздатели не расслаблялись. Reiser4 написана с нуля и включаетинтересные дополнительные возможности:
- Эффективное журналирование с регистрацией событий.
- Эффективное хранение маленьких файлов, в результате чего увеличивается скорость и лучше используется дисковое пространство.
- Быстрая обработка очень больших каталогов с сотнями миллионовфайлов (да, миллионы файлов в одном каталоге без потерипроизводительности).
- Гибкая инфраструктура плагинов, которые позволяют легко добавлять возможности сжатия и шифрования в любое время в будущем.
- Автоматическая модификация файловой системы, что всегда гарантирует ее согласованное состояние.
- Динамическая оптимизация диска на лету.
- Поддержка транзакций в стиле баз данных.
Но погодите, почему машина Бэтмена? Reiser4поддерживает множество интересных возможностей, которые вам могутникогда не понадобиться, потому что Linux VFS не открывает этуфункциональность, — так же как многочисленные возможности автомобиляБэтмена не понадобятся вам по дороге из дома на работу.
Прежде чем делать что-нибудь интересное с файловой системой 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 |
Команда 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
без аргументов результат должен выглядеть в точности так же, как и раньше. Новая файловая система будет автоматически монтироваться во время загрузки вместе с другими файловыми системами.
Улучшение производительности и настройки поведения тома
Как и большинство других файловых систем для 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) можно начать с ней работать. Помните,что резервные копии важных данных нужно делать регулярно, а не тогда,когда откажет жесткий диск.
Свежие комментарии