- PVSM.RU - https://www.pvsm.ru -

zfsonlinux — легко и просто

У пользователей Linux с некоторых пор появилась возможность использовать ZFS не прибегая к FUSE, т.е. в ядре.

Множество ограничений, которые накладывает FUSE (в первую очередь ограничения по производительности; об остальных можно спросить google) не позволяют использовать ZFS через FUSE в большинстве возникающих задач.

Помимо прочего, код ZFS не может быть включен в дерево исходных кодов ядра Linux, как уже многие знают, из-за несовместимости лицензии CDDL с GPL, а это очень сильно повлияло на проникновение ZFS на Linux-системы.

Но с недавних пор развитие проекта zfsonlinux, разработчики которого портировали код ZFS из Solaris в виде модулей ядра для Linux, достигло такой точки развития, при которой можно использовать ZFS в Linux без особых усилий и с достаточным уровнем стабильности.

Как именно воспользоваться zfsonlinux (на примере rhel/centos/scientific linux 6) можно узнать в статье далее.

Немного слов о...

Несомненно, что нужно отдавать себе отчёт, что проект zfsonlinux пока находиться в дорелизной стадии, когда возможны всякие неприятные и неожиданные сюрпризы, поэтому круг решаемых задач в моём случае допускает потерю данных, находящихся на ZFS.

Судя по моему опыту и по спискам рассылки (люди там пишут, что используют ZFS и всё работает без проблем) zfsonlinux не падает и не ломает всё, а работает как этого и ожидали начавшие его использовать.

Для ознакомления с проектом zfsonlinux (или как его ещё называют в списках рассылки — zol) рекомендуется изучить материалы сайта zfsonlinux.org [1] и материалы по ZFS, которых в изобилии хватает в google.

После рассмотрения сайта проекта можно заключить о следующем:
— zfsonlinux серьёзно нацелен на использование совместно с файловой системой Lustre [2];
— в материалах сайта упоминается LLNL [3];
whois домена zfsonlinux.org [4] тоже ссылается на эту национальную лабораторию США [5];
— проектом занимаются для серьёзных целей серьёзные люди (не шантрапа какая-то :-) ).

На момент написания статьи тарболлы проекта zfsonlinux имеют версию 0.6.0-rc11 и они были опубликованы 17-го сентября 2012 года.

Для использования ZFS потребуются пакеты zfs-modules-dkms-0.6.0-rc11.noarch [6] и spl-modules-dkms-0.6.0-rc11.noarch [7], которые содержат исходные коды модулей ZFS и SPL (Solaris Porting Layer). Данные модули будут автоматически собраны и установлены с помощью системы DKMS [8].

Так же потребуются собранные под архитектуру x86_64 пакеты zfs-0.6.0-rc11.src.rpm [9] и spl-0.6.0-rc11.src.rpm [10], которые содержат userspace-утилиты для работы с ZFS (zfs, zpool) и другие компоненты, необходимые в пространстве пользователя (udev-правила, например). К сожалению разработчики проекта не предоставляют бинарных сборок данных пакетов, поэтому при необходимости следует вооружиться rpmbuild/mock и собрать пакеты самостоятельно (что я и сделал — см. далее).

Быстро и просто

Для быстрого развёртывания сервера с ZFS под мои нужды я сделал yum-репозиторий [11], который содержит все необходимые пакеты.

Итак, чтобы получить сервер с ZFS в дистрибутивах RHEL / CentOS / Scientific Linux (речь только о 6-й версии (!)), необходимо выполнить следующее.

Установить репозиторий и импортировать мой публичный GPG-ключ, которым подписаны пакеты:

# cd /etc/yum.repos.d/
# wget http://yum.aclub.net/pub/linux/centos/6/umask-zfsonlinux/umask-zfsonlinux.repo
# rpm --import http://yum.aclub.net/pub/linux/centos/6/umask/RPM-GPG-KEY-umask

Зайти на страницу проекта EPEL [12] и взять оттуда ссылку на пакет epel-release последней версии, затем установить этот пакет:

# rpm -i http://mirror.astpage.ru/epel/6/i386/epel-release-6-7.noarch.rpm

Установить DKMS и необходимые для сборки модулей ядра пакеты:

# yum install dkms gcc make kernel-devel

Наконец, установить пакеты zfs и spl, которые в зависимостях требуют установки пакетов zfs-modules-dkms и spl-modules-dkms (установка займёт 5-10 минут (конечно, зависит от мощности сервера), т.к. при установке будут скомпилированы модули):

# yum install zfs spl

Включить сервис zfs, который подгружает модули и монтирует все ZFS-партиции (по умолчанию этот сервис и так в состоянии автоматического запуска, но если вдруг что-то измениться, то этот шаг не будет пропущен):

# chkconfig zfs on

На этом шаге система готова к использованию ZFS, но я на всякий случай всегда стараюсь выполнять перезагрузку (можно и обойтись, но не хочется через месяцы вспоминать почему же сервер не загрузился или почему ядро паникует) после подобных изменений.

Теперь можно создать первый пул:

# zpool create tank mirror /dev/sdc /dev/sdd

Пул tank будет автоматически смонтирован в каталог /tank.

ZFS готова к использованию!

ZFS vs. BTRFS

В действительности под мои задачи «сполна» (вроде как :-) ) подходит и BTRFS:
— есть компрессия;
— поддержка raid1 (впоследствии потребовались функции raidz из ZFS);
— наличие в el6 (technology preview).

Но:
— BTRFS нестабильна и всё ещё не признана стабильной в mainline kernel (мои опыты примерно год назад на el6 исключили возможность применения данной файловой системы для моих задач — в основном одни баги и глюки);
— в BTRFS всё ещё нет дедупликации;
— в BTRFS нет поддержки ничего, кроме mirror, stripe, stripe + mirror;
— ZFS считается в Solaris стабильной достаточно давно;
— ZFS выглядит более зрело (субъективно, пожалуй), даже несмотря на то, что zfsonlinux — это порт с его потенциальными проблемами и нюансами.

Вместо заключения

Разработчики zfsonlinux на вопрос, чем им можно помочь часто отвечают «просто начните использовать zfsonlinux», поэтому, надеюсь, что эта статья позволит кому-то без затруднений это сделать.

Автор: umask00


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/16197

Ссылки в тексте:

[1] zfsonlinux.org: http://zfsonlinux.org

[2] Lustre: http://wiki.lustre.org/index.php/Main_Page

[3] LLNL: http://en.wikipedia.org/wiki/Lawrence_Livermore_National_Laboratory

[4] whois домена zfsonlinux.org: http://www.whois.net/whois/zfsonlinux.org

[5] эту национальную лабораторию США: http://www.llnl.gov/

[6] zfs-modules-dkms-0.6.0-rc11.noarch: https://github.com/downloads/zfsonlinux/zfs/zfs-modules-dkms-0.6.0-rc11.noarch.rpm

[7] spl-modules-dkms-0.6.0-rc11.noarch: https://github.com/downloads/zfsonlinux/spl/spl-modules-dkms-0.6.0-rc11.noarch.rpm

[8] DKMS: http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support

[9] zfs-0.6.0-rc11.src.rpm: https://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc11.src.rpm

[10] spl-0.6.0-rc11.src.rpm: https://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc11.src.rpm

[11] yum-репозиторий: http://yum.aclub.net/pub/linux/centos/6/umask-zfsonlinux/

[12] EPEL: http://fedoraproject.org/wiki/EPEL