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

    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 и материалы по ZFS, которых в изобилии хватает в google.

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

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

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

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

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


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

    Итак, чтобы получить сервер с 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/5/umask/RPM-GPG-KEY-umask
    


    Зайти на страницу проекта EPEL и взять оттуда ссылку на пакет 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», поэтому, надеюсь, что эта статья позволит кому-то без затруднений это сделать.
    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 44
    • 0
      В действительности под мои задачи «сполна» (вроде как :-) ) подходит и BTRFS
      А там уже есть нормальный fsck? Или всё так же, как пишут на wiki.kernel.org, «btrfs may eat your data».
      • +1
        Уже по крайней мере не пишут, что его не существует: btrfs.wiki.kernel.org/index.php/Btrfsck
        • 0
          Когда-то (около полугода назад) восстанавливал терабайтный раздел под btrfs c помощью каких-то утилит после собоя питания, не помню где нашел, скомпилированные лежат. Так что данные не потерял. А теперь, если есть рабочий, хоть и новый fsck нужно будет попробовать конвертнуть свою ext4 в btrfs, спасибо за ссылку!
          • 0
            > А теперь, если есть рабочий, хоть и новый fsck нужно будет попробовать конвертнуть свою ext4 в btrfs, спасибо за ссылку!

            судя по вики на kernel.org BTRFS можно использовать на ядрах 3.4+, но я бы поостерёгся держать на ней ценные данные. И ядра 3.4+ в основном на десктопах распространены.
            • 0
              У меня как раз десктоп, ядро 3.6-rc7. Если что — делаю бэкапы, тестеры ведь везде нужны)
        • 0
          fsck сделали, но как-то уж очень весь процесс у BTRFS движется медленно.
        • 0
          Пару лет назад я пытался ее использовать на различных ядрах и дистрибутивах Linux.
          При высоком io данная фс показала себя совершенно нестабильно — т.е. при попытке, к примеру, закачать торрент на раздел с zfs я получал deadlock в течении 5-10 минут после старта закачки.
          На freebsd (на том же железе) такой проблемы как не было, так и нет.
          С другой стороны, под моей опекой есть сервер на debian (samba), на котором zfsonlinux использутся для хранения и зеркалирования пула с документами пользователей и его uptime на текущий момент — 226 суток.
          Интересно, устранены ли проблемы с дедлоками или нет в текущей версии?
          • 0
            я на сервере проводил эксперименты с ZFS, как раз на версии 0.6.0-rc11 и подобных проблем не случилось.
            Где-то в changelog'ах zfsonlinux я читал, что с дедлоками провели работу.

            Лучшый способ — это взять и проверить.
            • 0
              С другой стороны, на багтрекере репортуют вот о таких штуках при большом (для десктопа или домашнего серва) кол-ве оперативной памяти:
              There have been reports of deadlocks with ZFS when systems have large quantities of RAM, such as issues #417, #695, #837 and #922. Until now, none of these reports mentioned whether or not NUMA hardware was involved.

              github.com/zfsonlinux/zfs/issues/1000
          • 0
            Там уже есть собственно ZFS, а не только zpool?
            • 0
              Да, причем появился достаточно давно (с версии 0.6.0).
              С этой версии возможно не только создавать пулы/файловые системы, но и работат с ними, как с обычными фс (т.е. монтировать и использовать для хранения файлов).
              • 0
                Не очень понял вопроса.
                • 0
                  В этом смысле можно взять zpool и поверх него создать ext4, например.

                  Можно использовать ZFS традиционно в виде самостоятельной файловой системы.
              • 0
                интересно, но… а что мешает использовать стабильный солярис (openindiana) со стабильной zfs?
                кстати, а что про требования к памяти zol пишут, в частности по рекомендациям для dedup?
                из моего опыта (домашнего): 60Gb сстема с dedup, 2*2TB zpool под торренты и raidz из 3*1TB под данные: Prefetch начинает эффективно использоваться где-то после 20-22Gb ARC, при меньших объемах — только Demand.
                • 0
                  Ну… Я бы не назвал openindiana в достаточной мере стабильной. Или ситуация изменилась?
                  • 0
                    OpenIndiana сейчас достаточно стабильна и постепенно движется к состоянию «очень стабильна»
                    • 0
                      Уже год (примерно) использую в конторе. Полёт нормальный.
                      • 0
                        > Уже год (примерно) использую в конторе. Полёт нормальный.

                        OpenIndiana или zfsonlinux?
                        • 0
                          OpenIndiana 151a, недавно проапдейтился на 151a5.
                    • 0
                      Мешает Oracle.

                      Фактически сейчас Solaris стал сильно закрытой платформой, которую Oracle потихоньку убивает.
                      Тоже самое происходит и с MySQL.

                      Если раньше был OpenSolaris, коммьюнити, открытый процесс и разработки сначала отдавались коммьюнити, а только после стабилизации включались в комменческую ОС Solaris, то теперь нет ни одного порта ZFS pool v.33, процесс максимально скрыт от общественности, коммьюнити разогнали и т.п.
                      • 0
                        в OpenIndiana pool v.5000, отказались от «наборов» опций, сделали опции, включаемые отдельно.
                        в принципе, единственное, чего не хватает сейчас в zfs, разрабатываемом комьюнити, это шифрования. но его действительно нигде кроме оракла нет
                        • 0
                          zfs это вкусно и классно.
                          Но есть несколько проблем:
                          1. Использовать ее на серверах с Linux все же пока стремно, потому как сыро, хоть и есть такие замечательные проекты.
                          2. Использовать Solaris — не опенсорс. Использовать OpenIndiana — см. пункт 1.
                          3. Можно конечно использовать FreeBSD с ZFS. Эта операционная система после застоя начала развиваться как Chrome, хватать все самое передовое и называть его stable. Тот же ZFS, clang и т.д. Но в любом случае FreeBSD стекам еще очень далеко до ОС на базе Linux. А так же п.1.
                          • +1
                            3 пункт вы с потолка взяли? ZFS там уже вечность как есть, clang стабилен, и насколько мне известно, последняя OSX собрана как раз clang'ом (то этого только user-space собирали так). Кроме как на бажного DomU жаловаться мне нечего.
                            • 0
                              ZFS давно в ядре, но как давно его довели до юзабельного состояния?
                              А сколько еще будут доводить до стабильного?
                              Поиграться можно, в продакшен — пусть мыши кактус хавают.
                              clang даже разработчиками не считается законченным и он не полностью соответствует стандарту.
                              Когда 100% ПО будет им компилиться, тогда можно будет говорить что он хотя бы полностью рабочий.
                              Когда выпилят из реализации хотя бы 90% багов, можно будет говорить что он стабильный.
                              И повторю вам то что говорят во всех списках рассылки:
                              То что идет в OSX не настоящий clang, это отдельная ветка из которой далеко не все соответствует основному дереву.

                              FreeBSD все больше превращается из серверной меганадежной ОС в игрушку, по типу Ubuntu.
                              • 0
                                > ZFS давно в ядре, но как давно его довели до юзабельного состояния?

                                Юзабельный и стабильный уже давно.

                                > clang даже разработчиками не считается законченным и он не полностью соответствует стандарту.

                                Где?

                                > Когда 100% ПО будет им компилиться, тогда можно будет говорить что он хотя бы полностью рабочий.

                                Clang не виноват, что разработчики хаки для gcc используют.

                                > Когда выпилят из реализации хотя бы 90% багов, можно будет говорить что он стабильный.

                                лолшто?
                                • 0
                                  В 2009 он только перестал быть эксперементальным.
                                  Нормально его использовать стало можно только с FreeBSD 9.0.
                                  Т.е. это не выдумывать как извернуться чтобы ОС с ней нативно работала.
                                  Или вам загуглить кучу howto с этими извращениями?
                                  Забылось уже?

                                  На счет Clang просто оставлю эту ссылку:
                                  clang.llvm.org/cxx_status.html
                                  На счет хаков: тогда clang не виноват что стандарт C++ такой, а не другой.
                                  Это разработчики стандарта плохие.
                                  Разработчики FreeBSD суют Clang в среду в которой далеко не все ПО с ним работает.
                                  Вы правы это их вина.

                                  Лолвсе:
                                  llvm.org/bugs/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__all__&product=clang&content=
                                  • 0
                                    У меня zfs на машине стоит с тех пор как 8.0 была CURRENT и ничего, работает. Была проблема только ZFS on root. Это да, нормально появилось не так давно.

                                    > clang.llvm.org/cxx_status.html

                                    с++98 (который популярный) — Clang currently implements all of the ISO C++ 1998 standard (including the defects addressed in the ISO C++ 2003 standard)
                                    с++11 (который используется 3,5 монахами) — почти полностью работает.

                                    > На счет хаков: тогда clang не виноват что стандарт C++ такой, а не другой.

                                    Вы упороты? GCC отошли от стандарта. Код который компилируется GCC может больше ничем не компилироваться.

                                    > Это разработчики стандарта плохие.

                                    c++ не нужно.

                                    > Разработчики FreeBSD суют Clang в среду в которой далеко не все ПО с ним работает.

                                    порты которые не собираются clang'ом (читать как — софт который заточен только под gcc и компилиться только gcc) принудительно собирается gcc.

                                    > Лолвсе:
                                    Вам показать багтрекер gcc? В коде gcc разбирается два монаха. Поддерживать этот ад никто кроме этих двух монахов не может. FSF совсем двинулись на войне против BSD и Apple. Вполне логично, что clang активно внедряют.
                                    • 0
                                      Я использую ядро 3.6 у себя на десктопе еще не ознаает что эту кладезь глюков можно ставить на сервер.
                                      Посмотрите багтрекер стабильной версии GCC.
                                      Там нет такого зоопарка.
                                      • 0
                                        Вы бы почитали хоть тайтлы тикетов.

                                        > Я использую ядро 3.6 у себя на десктопе еще не ознаает что эту кладезь глюков можно ставить на сервер.

                                        Стоит на сервере, работает. Рядом еще стоит 10-CURRENT, стоит, работает.
                                        • +1
                                          CURRENT на сервере?
                                          Серьезно?
                                          Тогда говорить не о чем.
                                  • 0
                                    И еще.
                                    Только с 9-ки наконец портировали с Linux драйвера для новых 10GE и Infiniband.
                                    Это при том что эти технологии уже пару лет как используются в самом дешевом энтерпрайзе.
                                    И это далеко не первое что с огромным опозданием портируют с Linux.
                                    • 0
                                      > новых 10GE и Infiniband.
                                      > эти технологии уже пару лет
                                      хмм. И что дальше? А у линуксе все так же нет нормальной сетевой подсистемы. iptable все так же уныл. LXC еще более уныл. UE3 ВНЕЗАПНО быстрее работает на фряхе.

                                      > И это далеко не первое что с огромным опозданием портируют с Linux.

                                      Продолжай. Итого мы имеем то, что это линукс оказывается за все новое хватается и называет стабильным?
                                      • 0
                                        Чем уныл iptables? Бесконечной расширяемостью и гибкостью?
                                        LXC чем уныл? Тем что есть нативный KVM, XEN, OpenVZ? Или тем что нормальные группы во FreeBSD появились менее года назад?
                                        UE3 показатель только для игрушки, о чем я и говорил.

                                        В Linux OFED развивается с 2004 года, FreeBSD о его существовании этом только в этом году узнала.
                                        Это при том что половина суперкомпьютеров из Top500 построена на Infiniband.
                                        Во FreeBSD портируют свистоперделки не доведенные до ума.
                                        А реально необходимые вещи остаются вне их внимания до момента пока поезд ушел.

                                        Вот и на PS ее портировали.
                                        Тоже очень нужная фича…
                                        В общем правильно, надо FreeBSD ставить на приставки.
                                        Сейчас именно там ей и место.
                                        • 0
                                          > UE3 показатель только для игрушки, о чем я и говорил.

                                          Мы же сейчас о ОС в целом говорим.

                                          > LXC чем уныл?
                                          Всем.

                                          > Тем что есть нативный KVM,
                                          KVM не портировали из-за плохой архитектуры и не качественного кода

                                          > XEN, OpenVZ?

                                          Не нужны.

                                          > Это при том что половина суперкомпьютеров из Top500 построена на Infiniband.

                                          А мы тут все собираем суперкомпьютеры и нам есть дело до Infiniband

                                          > Во FreeBSD портируют свистоперделки не доведенные до ума.

                                          Лучшая (tm) файловая система на сегодня это свистелка пределка? Или компилятор с человеческой архитектурой который компилит код быстрее и качественнее это свистелка перделка?

                                          > А реально необходимые вещи остаются вне их внимания до момента пока поезд ушел.

                                          Мне только не хватало нормальной поддержки DomU в Xen'e, пришлось виртуалки на линуксе ставить.
                                          • 0
                                            Jail не нужен.
                                            Infiniband и 10GE нужны.
                                            Нет можно конечно сидеть как в каменном веке на коаксиале и играть во всякое старье и казуалки на UE3.
                                            Этим и займитесь.
                                            • 0
                                              > Jail не нужен.
                                              Виртуализация не нужна?

                                              > Infiniband и 10GE нужны.
                                              Кому? Мы все тут стоит супер компьютеры?

                                              > Нет можно конечно сидеть как в каменном веке на коаксиале и играть во всякое старье и казуалки на UE3.

                                              UE3 старье и казуалки? Отсыпьте.
                        • –1
                          Очень рекомендую Nexenta. В нашей конторе стоит уже около года и переживала всякое, пока все нормально. Для раскатки NAS'а более чем пристойное решение.
                        • 0
                          На lor'е писали про большое потребление памяти и плодящиеся процессы в zfsonlinux. Как оно вообще, пригодно для постоянного использования — не требует регулярного ручного вмешательства?
                          • 0
                            Можно поподробнее что именно писали на lor'е?

                            Возможно, что имелось ввиду, что zfsonlinux создаёт очень много процессов в ядре:


                            [z_rd_int/7]
                            [z_rd_int/8]
                            [z_rd_int/9]
                            [z_rd_int/10]
                            [z_rd_int/11]
                            [z_rd_int/12]
                            [z_rd_int/13]
                            [z_rd_int/14]
                            [z_rd_int/15]
                            [z_wr_iss/0]


                            но я пока не заметил, чтобы это мешало хоть сколько-то.

                            > Как оно вообще, пригодно для постоянного использования — не требует регулярного ручного вмешательства?

                            у меня пока недостаточно накоплено опыта по этому вопросу.
                            Но по моим тестам всё выглядит стабильно и это возможно обслуживать.
                            • +1
                              Нет, именно про потребряемую память.
                              www.linux.org.ru/forum/talks/8247631
                              >Я месяц назад пробовал на генте. Взял ненужный внешний винт, стал копировать туда фильмы и система через пару минут наметрво зависла.
                              >И еще жрет всю память, если её не оттюнить
                              >машина с 60 гигами памяти в один прекрасный момент начинает плодить неубиваемые процессы по причине зависания FS

                              Видимо, стоит написать статью про настройку и тюнинг zfsonlinux.
                              • 0
                                > именно про потребряемую память.

                                Да, провёл эксперименты на машине с 8ГБ памяти (до этого сервер был с 32ГБ памяти и с одной NUMA-node, а на этот раз я решил ещё и проверить что будет на сервере с более чем одной NUMA-node).
                                При высокой активности с ZFS (iozone) потребляет 6ГБ памяти.

                                Вот здесь есть указания как загружать модуль zfs чтобы ограничить потребление памяти:

                                osdir.com/ml/zfs-discuss/2012-02/msg00037.html

                                Есть один неприятный момент — по `free' не ясно, что потреблённая ZFS память относиться к cached, но `echo 3 > /proc/sys/vm/drop_caches' освобождает эту память.

                                В тестах аллокация памяти происходила явно из обеих NUMA-nodes и дедлоков замечено не было. Возможно нужно больше памяти и больше нод.
                                • 0
                                  Написал немного криво:

                                  > При высокой активности с ZFS (iozone) потребляет 6ГБ памяти.

                                  имелось ввиду, что 6ГБ памяти потребляет ZFS в ядре, а не iozone.
                          • 0
                            В zfsonlinux пока багов тоже прилично встречается, к сожалению :(
                            и с 3.6 ядром пока не работает.
                            Пользуюсь на ноуте с убунтой им, но на серверы ставить пока не рискую )
                            • 0
                              Вышел набор user-space утилит и модулей для ZFS+SPL, версия 0.6.0-rc12.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.