Daniel Robbins ([email protected])
President/CEO, Gentoo Technologies, Inc.
April 2002
С выходом релиза 2.4 Linux появилась возможность использования filesystem с новыми свойствами, таких как Reiserfs, XFS, GFS и других. Эти filesystems еще не достаточно опробованы и имеются вопросы, что именно они могут делать, насколько они хороши и насколько оправдано их использование в промышленной Linux среде. Daniel Robbins отвечает на эти вопросы по ходу пояснения инсталляции этих новых продвинутых filesystems под Linux 2.4. В этой статье Daniel описывает, как добавить XFS к вашей системе и исследует отдельные, более "продвинутые" features XFS.
В этой статье будет показано, как добавить поддержку XFS к вашей системе. Но сначала посетите и исследуйте SGI XFS Project page (смотри Resources далее). Если проследуете по download link, вы найдете patches, tools и даже Red Hat XFS-enabled kernels.
Но не торопитесь. Конечно, можно инсталлировать XFS используя pre-rolled, т.е. официальные релизы. Но в данном случае я не рекомендую такой подход. При написании этой статьи самый последним из официальных релизов XFS был 1.0.2, созданный еще в ноябре 2001. С того времени было внесено множество уточнений к XFS и, чтобы извлечь из этого выгоду, воспользуемся современными sources из XFS CVS tree. Developers и users, сделавшие выбор в пользу Gentoo Linux и воспользовавшиеся XFS из CVS, получили от XFS много больше.
Если вы раньше не пользовались CVS, можете воспользоваться моей tutorial -
CVS для developer и любителей (смотри Resources).
Даже если вы имеете самое общее представление о CVS, этого будет достаточно.
Убедитесь только, что на вашей системе имеется инсталлированный CVS package и
вам доступна команда cvs
.
Описание CVS instructions, которые будут использоваться далее, можно также
найти на SGI's site (смотри Resources).
После grabbing исходников через cvs
, вы получите новый каталог,
содержащий up-to-date XFS-enabled kernel sources и самые современные XFS tools.
Для grab the sources от XFS CVS сначала установите переменную окружения
CVSROOT
в требуемое значение. Например, по bash prompt введите:
|
Теперь перейдите в каталог, где вы желаете разместить XFS directory tree, и выполните:
|
По запросу пароля введите cvs
. Теперь вы подключились к public
CVS repository. Получите самые последние XFS sources, введя:
|
Запустится процесс checkout. Это займет некоторое время, так как файлы,
которые вы grabbing, включают полное Linux source tree. Через некоторое время,
когда команда cvs checkout
завершится, вы будете иметь новое
linux-2.4-xfs
directory tree в текущем рабочем каталоге.
Рекомендация на будущее: если вам потребуется модернизировать source tree,
просто внутри linux-2.4-xfs
каталога введите:
|
Имеется два важных каталога внутри нового linux-2.4-xfs
. Первый
называется linux
и содержит XFS-enabled kernel source tree, а
второй называется cmd
и содержит sources для различных XFS
userspace программ. Чтобы воспользоваться kernel sources, можно либо скопировать
linux каталог в /usr/src
, либо компилировать новое ядро "на месте".
Теперь о том, как получить работающее ядро. Войдите в linux
каталог и загрузите Makefile
в ваш любимый редактор. В начале файла
вы увидите несколько строк, которые выглядят примерно так:
|
Эти строки сообщают Makefile
компилировать ядро с официальным
именем 2.4.17-xfs
. Некоторые предпочитают иметь ядро без
-xfs
в официальном имени. Если вы один из таких людей, измените
строку, которая будет читаться:
|
Теперь о kernel configuration. Для enable XFS, после make
menuconfig
перейдите в секцию File systems. Там вы увидите следующую
опцию:
|
Разрешите ее (рекомендуется статически компилировать в ядро). Введите
"y
" и появятся еще три под опции:
|
Опция "XFS Realtime
" разрешает поддержку realtime subvolume в
XFS, что позволит в дальнейшем конфигурировать области памяти, обеспечивающие
deterministic performance для приложений реального времени. Опция "XFS
Quota
" позволит, как нетрудно догадаться, поддержку лимитов на размер
доступного дискового пространства для пользователей и групп. Опция "XFS
DMAPI
", если помечена, разрешит специальный API, предназначенный для
management приложений. В настоящее время под Linux еще нет tools, которые
пользуются преимуществами DMAPI (имеются у Sistina's LVM и "родные" SGI XFS
utilities). Однако некоторые DMAPI-enabled приложения для Linux уже находятся в
разработке у SGI и IBM.
После выбора "SGI XFS filesystem support
" и конфигурирования
остальной части ядра по вашему вкусу, вы готовы ввести make dep &&
make && make bzImage && make modules && make
modules_install
, инсталлировать новое ядро и перезагрузиться. .
Теперь, когда вы работаете на XFS-enabled kernel, можно создать и
инсталлировать различные XFS tools. Одна из хороших новостей относительно XFS -
она поставляется с полным набором инструментов поддержки и утилит. Войдите в
каталог linux-2.4-xfs/cmd
и запустите (с правами root) следующий
shell script:
|
Не забудьте о переводе строки после done
. Наш специальный build
script начнет работу, и все XFS tools будут инсталлированы. После финиша добавим
несколько developer-related файлов, которые не инсталлированы предыдущей
командой make install
l:
|
Создание и монтирование файловой системы.
После отработки script все XFS-related программы будут инсталлированы и готовы к использованию. Можно создать тестовую XFS и попытаться достигнуть оптимальной производительности.
Если XFS создается поверх ReiserFS, потребуется небольшая уловка. По bash prompt введите следующую команду для "обнуления" начального участка block device, на котором хранилась ReiserFS, а теперь вы собираетесь инициализировать новую XFS filesystem:
|
Такой шаг необходим для wipe out хранящихся ReiserFS метаданных. Иначе,
команда mount
может "запутаться" и случайно смонтировать новую XFS
filesystem как дефектную ReiserFS! Достаточно позволить dd
отработать 10 секунд и прервать комбинацией CTRL-C. При этом все "критические"
части ранее существовавшей ReiserFS будут заполнены нулями, а код
авто-детектирования типа файловой системы "путаться" больше не будет.
Пришло время create новую файловую систему. Для этого можно воспользоваться
командой mkfs.xfs
следующим образом:
|
Такая команда сделает все необходимое, но имеется пара опций, позволяющих
mkfs.xfs
сконфигурировать новую XFS под максимальную
производительность.
Первая из таких опций -l size=32m
, что сообщит
mkfs.xfs
сконфигурировать файловую систему так, чтобы журнал
метаданных имел размер 32 Mb. Это повысит производительность, сделав
маловероятным переполнение журнала при высоких нагрузках.
Вторая опция позволяет поднять производительность новой файловой системы,
сообщив mkfs.xfs
минимизировать число allocation groups. Обычно,
mkfs.xfs
выбирает число allocation groups автоматически. Но опыт
показывает, выбирается число несколько большее, чем требуется для оптимальной
производительности однопроцессорных Linux workstations и серверов. Если вы
повторно перечитаете мою предыдущую
статью, allocation groups позволяют XFS выполнять операции над метаданными
параллельно. Это очень удобно для high-end серверов, но слишком много allocation
groups добавляют работы. Вместо того чтобы разрешить mkfs.xfs
автоматически выбрать число allocation groups для вашей файловой системы,
сделайте это "вручную", используя -d agcount=x
. Выберите
x
минимальным, например, 4, 6 или 8. Расчет достаточно прост,
необходимо иметь, по крайней мере, одну allocation group на каждые 4 GB в target
block device. Две описанные опции позволят создать "оптимизированную" XFS
filesystem следующей командой:
|
Теперь, после created файловой системы, ее можно монтировать. При этом можно воспользоваться некоторыми performance-enhancing опциями монтирования, чтобы "выжать" максимум из новой файловой системы:
|
Первые две опции монтирования выключают модификацию atime
, что
практически никогда и не требуется, но способствует деградации
производительности. Опция osyncisdsync
добивается такого sync/async
поведения XFS, чтобы максимально соответствовать таковому в ext3. Благодаря
таким mkfs.xfs
и mount
ваша новая XFS будет иметь
скорость немного выше, чем при умолчании.
Одна из хороших вещей в XFS - она имеет много goodies. Одной из таких специальных функциональных возможностей являются "access control lists" или ACL. Сейчас это поддерживается в XFS по умолчанию. Списки контроля доступа позволяют определять fine-grained разрешения на файлы. Например, вместо ограниченного "rwx" для владельца, группы и других, становится возможным добавлять любое число дополнительных пользователей или групп и определять "rwx" permissions и для них.
Полное описание access control lists - вне контекста этой статьи. Если вам это интересно, посмотрите большое введение в ACL на bestbits site (Resources), особенно, если посетить страничку "Why you may want Access Control Lists (ACLs)". Обратите внимание, большая часть технической информации этого сайта связана с поддержкой ACL под ext2 и ext3 (но ничего дополнительного не требуется для ACL под XFS).
XFS имеет еще одну feature, называемую "extended attributes". Такие extended
attributes позволяют вам associate user-defined данные с объектами файловой
системы. Например, если вы имеете графический файл по имени
mygraphic.png
, можно attach к нему атрибут, называемый
"thumbnail
", содержащий маленькую версию image. Эти данные не будут
viewable обычными IO файловыми операциями, но к ним можно обращаться из
программ, использующих special extended attributes API. По своей сути, extended
attributes похожи на "resource fork", существующие на MacOS системах.
Имеется пример использования extended attributes через команду
attr
из командной строки. Скажем, я желаю добавить
description
attribute к моему home каталогу. Я ввожу:
|
После этого, чтобы видеть список атрибутов, ассоциированных с
/home/drobbins
, можно ввести:
|
А чтобы просмотреть содержание description
attribute, я ввожу:
|
Extended attributes просты и забавны в использовании. Вы можете узнать о них
больше, прочитав man attr
. XFS включает также API C для
взаимодействия с extended attributes. Если вы интересуетесь работой с C++
IOStream интерфейсом к extended attributes, можете посмотреть libferris на
SourceForge (Resources).
Конечно, extended attributes и ACL открывают интересные возможности, но
будьте осторожны. Большинство backup программ в настоящее время еще "не
понимают" ни EA, ни ACL. Известные мне исключения - xfsdump
и
xfsrestore
, поставляемые с XFS distribution. Если используете
другую backup программу, проведите сначала интенсивное тестирование на поддержку
EA и ACL.
Я надеюсь, вам понравилось это "мгновенное" введение в XFS filesystem. Ждите новых статей!