Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Обучение от Mail.Ru Group.
Онлайн-университет
для программистов с
гарантией трудоустройства.
Набор открыт!
2006 г.

Руководство по продвинутым файловым системам
Развертывание XFS

Дэниел Роббинс (Daniel Robbins), перевод Владимира Холманова, под редакцией Алексея Федорчука

Первоисточник : http://www-106.ibm.com/developerworks/library/l-fs10.html
Апрель, 2002

Зачем оно нужно?

В этой статье будет показано, как добавить поддержку XFS к вашей системе. Но сначала посетите и исследуйте SGI XFS Project page. Если проследуете по ссылкам, вы найдете патчи, инструментарий и даже ядро от Red Hat, поддерживающее XFS.

Но не торопитесь. Конечно, можно инсталлировать XFS используя pre-rolled, т.е. официальные релизы. Но в данном случае я не рекомендую такой подход. При написании этой статьи самый последним из официальных релизов XFS был 1.0.2, созданный еще в ноябре 2001. С того времени было внесено множество уточнений к XFS и, чтобы извлечь из этого выгоду, воспользуемся современными исходниками из XFS CVS-дерева. Developers и users, сделавшие выбор в пользу Gentoo Linux и воспользовавшиеся XFS из CVS, получили от XFS много больше.

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

Если вы раньше не пользовались CVS, можете воспользоваться моим руководством по CVS для разработчиков и любителей. Даже если вы имеете самое общее представление о CVS, этого будет достаточно. Убедитесь только, что на вашей системе имеется инсталлированный пакет CVS и вам доступна команда cvs.

Описание инструкций CVS, которые будут использоваться далее, можно также найти на сайте SGI. После скачивания исходников через cvs, вы получите новый каталог, содержащий ядро, готовое к использованию XFS, и самые современные инструменты для работы с этой файловой системой. Для скачивания исходников от XFS CVS сначала установите переменную окружения CVSROOT в требуемое значение. Например, в командной строке bash введите:

$ export CVSROOT=':pserver:cvs@oss.sgi.com:/cvs'

Теперь перейдите в каталог, где вы желаете разместить каталог дерева XFS, и выполните:

$ cvs login

По запросу пароля введите cvs. Теперь вы подключились к общедоступному репозиторию CVS. Получите самые последние исходники XFS, введя:

$ cvs -z3 checkout linux-2.4-xfs

Запустится процесс checkout. Это займет некоторое время, так как файлы, которые вы скачиваете, включают полное дерево исходников ядра Linux. Через некоторое время, когда команда cvs checkout завершится, вы будете иметь новое дерево исходников в текущем рабочем каталоге. Рекомендация на будущее: если вам потребуется модернизировать дерево исходников, просто внутри образовавшегося каталога введите:

$ cvs -z3q update -dP

Работа с деревом

В начале этого раздела Дэниел рассказывает о подготовке дерева исходников ядра. Эта часть опущена, как полностью утратившая актуальность - А.Ф.

Теперь о конфигурировании ядра. Для поддержки XFS, после make menuconfig перейдите в секцию File systems. Там вы увидите следующую опцию:

< > SGI XFS filesystem support

Разрешите ее (рекомендуется статически компилировать в ядро). Введите "y" и появятся еще три под опции:

[ ]   Enable XFS Realtime support  
[ ]   Enable XFS Quota 
< >   Enable XFS DMAPI

Опция "XFS Realtime" разрешает поддержку realtime subvolume в XFS, что позволит в дальнейшем конфигурировать области памяти, обеспечивающие определенную производительность для приложений реального времени. Опция "XFS Quota" позволит, как нетрудно догадаться, поддержку лимитов на размер доступного дискового пространства для пользователей и групп. Опция "XFS DMAPI", если помечена, разрешит специальный API, предназначенный для управления приложениями. В настоящее время под Linux еще нет инструментов, которые пользуются преимуществами DMAPI (имеются у Sistina's LVM и "родные" утилиты SGI XFS). Однако некоторые DMAPI-приложения для Linux уже находятся в разработке у SGI и IBM.

После выбора "SGI XFS filesystem support" и конфигурирования остальной части ядра по вашему вкусу, вы готовы ввести make dep && make && make bzImage && make modules && make modules_install, инсталлировать новое ядро и перезагрузиться. .

Инсталляция инструментария

Теперь, когда вы работаете на ядре, поддерживающем XFS, можно создать и инсталлировать различные XFS tools. Одна из хороших новостей относительно XFS - она поставляется с полным набором инструментов поддержки и утилит. Войдите в каталог linux-2.4-xfs/cmd и запустите (с правами root) следующий сценарий оболочки:

# for x in attr acl xfsprogs dmapi xfsdump
do
cd $x
autoconf
/configure --prefix=/usr
make
make install
cd ..
done

Не забудьте о переводе строки после done. Наш специальный скрипт начнет работу, и все инструменты XFS будут инсталлированы. После финиша добавим несколько developer-related файлов, которые не инсталлированы предыдущей командой make installl:

# for x in attr dmapi xfsprogs
do
cd $x
make install-dev
cd ..
done

H4>Создание и монтирование файловой системы.

После отработки скриптов все нужные для XFS программы будут инсталлированы и готовы к использованию. Можно создать тестовую XFS и попытаться достигнуть оптимальной производительности.

Если XFS создается поверх ReiserFS, потребуется небольшая уловка. По приглашению bash введите следующую команду для "обнуления" начального участка блочного устройства, на котором хранилась ReiserFS, а теперь вы собираетесь инициализировать новую файловую систему XFS:

# dd if=/dev/zero of=/dev/hdc9

Такой шаг необходим для eybxnj;tybzt хранящихся ReiserFS метаданных. Иначе, команда mount может "запутаться" и случайно смонтировать новую файловую систему XFS как дефектную ReiserFS! Достаточно позволить dd отработать 10 секунд и прервать комбинацией CTRL-C. При этом все "критические" части ранее существовавшей ReiserFS будут заполнены нулями, а код авто-детектирования типа файловой системы "путаться" больше не будет.

Пришло время создать новую файловую систему. Для этого можно воспользоваться командой mkfs.xfs следующим образом:

# mkfs.xfs /dev/hdc9

Такая команда сделает все необходимое, но имеется пара опций, позволяющих mkfs.xfs сконфигурировать новую XFS под максимальную производительность.

Первая из таких опций -l size=32m, что сообщит mkfs.xfs сконфигурировать файловую систему так, чтобы журнал метаданных имел размер 32 Mb. Это повысит производительность, сделав маловероятным переполнение журнала при высоких нагрузках.

Вторая опция позволяет поднять производительность новой файловой системы, сообщив mkfs.xfs минимизировать число allocation groups. Обычно, mkfs.xfs выбирает число allocation groups автоматически. Но опыт показывает, выбирается число несколько большее, чем требуется для оптимальной производительности однопроцессорных Linuxмашин и серверов. Если вы повторно перечитаете мою предыдущую статью>, allocation groups позволяют XFS выполнять операции над метаданными параллельно. Это очень удобно для high-end серверов, но слишком много allocation groups добавляют работы. Вместо того чтобы разрешить mkfs.xfs автоматически выбрать число allocation groups для вашей файловой системы, сделайте это "вручную", используя -d agcount=x. Выберите x минимальным, например, 4, 6 или 8. Расчет достаточно прост, необходимо иметь, по крайней мере, одну allocation group на каждые 4 GB в целевом блочном устройстве. Две описанные опции позволят создать "оптимизированную" XFS filesystem следующей командой:

# mkfs.xfs -d agcount=4 -l size=32m /dev/hdc9

Теперь, после создания файловой системы, ее можно монтировать. При этом можно воспользоваться некоторыми опциями монтирования, повышающими производительность, чтобы "выжать" максимум из новой файловой системы:

# mount /dev/hdc9 /mnt -o noatime,nodiratime,osyncisdsync

Первые две опции монтирования выключают модификацию atime, что практически никогда и не требуется, но способствует деградации производительности. Опция osyncisdsync добивается такого sync/async поведения XFS, чтобы максимально соответствовать таковому в ext3. Благодаря таким mkfs.xfs и mount ваша новая XFS будет иметь скорость немного выше, чем при умолчании.

Положительные герои.

Одна из хороших вещей в XFS - она имеет много специальных функциональных возможностей. Одной из них являются "access control lists" или ACL. Сейчас это поддерживается в XFS по умолчанию. Списки контроля доступа позволяют определять более дробные разрешения на файлы. Например, вместо ограниченного "rwx" для владельца, группы и других, становится возможным добавлять любое число дополнительных пользователей или групп и определять "rwx" permissions и для них.

Полное описание access control lists - вне контекста этой статьи. Если вам это интересно, посмотрите большое введение в ACL на bestbits site, особенно, если посетить страничку "Why you may want Access Control Lists (ACLs)". Обратите внимание, большая часть технической информации этого сайта связана с поддержкой ACL под ext2 и ext3 (но ничего дополнительного не требуется для ACL под XFS).

XFS имеет еще одну особенность, называемую расширенными атрибутами (extended attributes). Такие extended attributes позволяют вам ассоциировать определенные пользователем данные с объектами файловой системы. Например, если вы имеете графический файл по имени mygraphic.png, можно прикрепить к нему атрибут, называемый "thumbnail", содержащий маленькую версию изображения. Эти данные не будут видимы обычными файловыми операциями ввода/вывода, но к ним можно обращаться из программ, использующих API специальных расширенных атрибутов. По своей сути, расширенные атрибуты похожи на ветви ресурсов (resource fork), существующие на MacOS системах.

Имеется пример использования расширенных атрибутов через команду attr из командной строки. Скажем, я желаю добавить атрибут description к моему домашнему каталогу. Я ввожу:

$ attr -s description -V "Home of Daniel Robbins" /home/drobbins
Attribute "description" set to a 22 byte value for /home/drobbins:
Home of Daniel Robbins

После этого, чтобы видеть список атрибутов, ассоциированных с /home/drobbins, можно ввести:

$ attr -l /home/drobbins
Attribute "description" has a 22 byte value for /home/drobbins/

А чтобы просмотреть содержание атрибута description, я ввожу:

$ attr -q -g description /home/drobbins/
Home of Daniel Robbins

Расширенные атрибуты просты и забавны в использовании. Вы можете узнать о них больше, прочитав man attr. XFS включает также API C для взаимодействия с extended attributes. Если вы интересуетесь работой с C++ IOStream интерфейсом к расширенным атрибутам, можете посмотреть libferris на SourceForge.

Конечно, расширенные атрибутыs и ACL открывают интересные возможности, но будьте осторожны. Большинство программ резервного копирования в настоящее время еще "не понимают" ни EA, ни ACL. Известные мне исключения - xfsdump и xfsrestore, поставляемые с XFS distribution. Если используете другую backup программу, проведите сначала интенсивное тестирование на поддержку EA и ACL.

Я надеюсь, вам понравилось это "мгновенное" введение в файловую систему XFS. Ждите новых статей!

Новости мира IT:

Архив новостей

Последние комментарии:

Loading

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 985 1945361
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2015 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...