POHMELFS: NFS по-новому

    Те, кто следил за обновлениями ядра, могли заметить, что в релиз 2.6.30 была добавлена поддержка POHMELFS.
    Что же это такое — Похмельная файлуха?
    Изучение окрестностей странички проекта позволило предположить, что разработку ФС ведет московский программист Евгений Поляков (и только он!), у которого на том же сайте есть немало других интересных проектов, таких, например, как порт CARP под Linux. В общем, сложилось впечатление, что программист на редкость грамотный и упорный.
    Вернемся к PohmelFS. статья в Википедии подтверждает причастность похмелья к названию, которое для приличия расшифровывается как Parallel Optimized Host Message Exchange Layered File System. Документация на страничке проекта говорит о том, что в перспективе PohmelFS — распределенная ФС с избыточностью, контролем доступа и прочими прелестями, разрабатываемая так, чтобы не сильно отставать по производительности от локальных ФС. Этакая альтернатива разнообразным GFS, GlusterFS и прочим Coda. Но это все будет после интеграции проекта с двумя другими — DST и Elliptics. На текущий момент PohmelFS — это альтернатива старому недоброму NFS, почти всюду показывающая бо́ льшую производительность (пруфлинк).

    под хабракатом процесс настройки на небольшом зоопарке

    Вещь новая, неизвестная, как ею пользоваться — никто толком не знает. Я в Сети нашел один-единственный howto, и тот не особо толковый. Поэтому здесь публикую грамотный (на мой взгляд) метод элементарной настройки.

    Первое, что надо сделать — это скачать исходники ядра 2.6.30 и собрать ядро с модулем pohmelfs. На момент публикации драйвер имеел статус staging, поэтому его включение в menuconfig нетривиально. Нужно включить опцию Device Drivers -> Staging drivers и выключить Device Drivers -> Staging drivers -> Exclude Staging drivers from being built, после чего можно включать POHMELFS, находящийся там же.
    Следует отметить, что ядро надо обновлять только на клиенте. Серверная часть работает в userspace.

    Второе, что нужно для работы ФС — userspace утилиты и сервер. Нужно компилировать исходники. Я скачал отсюда последний снэпшот pohmelfs-server.git. Тем, кто будет делать так же, подскажу, что снэпшоты раздаются в формате tar.bz2, о чем нужно если не знать, то догадываться.
    Распаковываем, читаем README, подкладываем /usr/src/linux/drivers/staging/pohmelfs/netfs.h туда, куда рекомендует начало README, то есть, /usr/src/linux/fs/pohmelfs/netfs.h (это очень важно, поскольку на сервере этому файлу взяться неоткуда, а для сборки сервера он необходим). Аккуратно, путь к исходникам ядра может быть другим. После этого
    $ ./autogen.sh
    $ ./configure

    автоген может на что-нибудь пожаловаться, это лечится очевидным способом.
    А вот configure у меня под Gentoo ругался на невозможность найти инклюды POHMELFS, и только при чтении лога выяснилось, что проблема, на самом деле, не в netfs.h, а в bitsperlong.h, который он по каким-то неведомым причинам не нашел. Пришлось конфигурить так:
    $ CPPFLAGS=-I/usr/src/linux-2.6.30-git18/arch/x86/include ./configure --with-kdir-path=/usr/src/linux
    Далее можно делать make, тогда он соберет все, что может. Я пошел другим путем.
    На сервере сборка и установка выглядела так:
    $ cd server; make
    # cp fserver /usr/local/sbin

    На клиенте, в свою очередь:
    $ cd cfg; make; cd ../utils; make; cd ..
    # cp cfg/cfg /usr/local/sbin/pohmelcfg; cp utils/flush /usr/local/sbin/pohmelflush

    Это важное отступление от Makefile, поскольку теперь на сервере установлена только серверная часть, а на клиенте — только клиентская, а пока что ненужные инклюды не установлены вообще. Также переименованы клиентские бинарники в более понятные названия, поскольку, например, «cfg» абсолютно не говорит о том, что конфигурирует он только pohmelfs.
    Юзерспейс утилиты успешно собрались как на Gentoo x86_64, так и на Arch Linux i686.

    Наступает момент истины. Запускаем!
    Сначала запустим серверную часть. fserver работает в фореграунде, поэтому для начала сделаем вот так:
    # /usr/local/sbin/fserver -a 192.168.1.10 -r /mnt/HD_a2/ -w5 2>&1 >>/var/log/fserver.log &
    (Подставьте желаемые параметры, -w — это количество рабочих процессов)

    Далее — настройка и монтирование ФС на клиенте.
    # modprobe pohmelfs
    # pohmelcfg -A add -a 192.168.1.10 -p 1025 -i 1
    # mount -t pohmel -o idx=1 /mnt/pohmel

    Здесь -i для cfg и idx= для mount должны быть одинаковыми, по умолчанию 0. Как я понял, это просто ID монтируемой расшарки.

    У меня запуск сервера и кллиента не вызвал никаких трудностей, все сразу заработало.
    Маленький тест на производительность (файл весом в 700МБ):
    stolen@stolen ~/soft/pohmelfs-server.git $ time cat /mnt/pohmel/share/GRTMPVOL_RU_20.10.08.iso >/dev/null
    real 1m37.150s
    user 0m0.010s
    sys 0m1.270s

    stolen@stolen ~/soft/pohmelfs-server.git $ time cat /mnt/pohmel/share/GRTMPVOL_RU_20.10.08.iso >/dev/null
    real 0m0.591s
    user 0m0.003s
    sys 0m0.257s

    stolen@stolen ~/soft/pohmelfs-server.git $ time cat /mnt/upload/share/GRTMPVOL_RU_20.10.08.iso >/dev/null
    real 1m3.719s
    user 0m0.003s
    sys 0m0.400s

    Третье — NFS, немного выигравающий по чтению. По записи 100МБ POHMELFS оказался в 10 раз быстрее, видимо, за счет фонового I/O.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 86

      –18
      Когда прочитал в заголовке NFS, подумал про игрушку )
        +10
        Каждый все понимает в меру своей испорченности :)
          0
          Когда-то давным давно…
          notxakep.habrahabr.ru/blog/35525/
          P.S. хабр что-то с ним сделал — год назад вариантов было два, а сейчас 4 выдаёт и редактирование поста не помогает…
          0
          хорошая работа… вот бы еще кто сравнил с люстрой… хотя другая весовая категория…
          пс. второй тест одинаков с первым, а время разное… опечатка или файл так круто кэшируется?
            0
            я написал. Первое — чтение из сети, второе — запись, которая (предположительно) кешируется и продолжается в фоне.
              +1
              stolen@stolen ~/soft/pohmelfs-server.git $ time cat /mnt/pohmel/share/GRTMPVOL_RU_20.10.08.iso >/dev/null

              Что-то не похоже на запись :)

              Попробуйте ещё 2 раза один и тот же файл прочитать, поидее должно быть быстрее.
                0
                Это как раз чтение. Про запись я не стал писать подробно, там я использовал dd в файл на сервере.
                Тот же файл второй раз читается за доли секунды вне зависимости от ФС — сказывается кеширование на уровне обращения к файловому дереву на клиенте.
                  0
                  А, я Вас неправильно понял. То тестирование, которое здесь приведено, показывает время чтения файла с разных ФС. Второй запуск чтения с PohmelFS демонстрирует просто кеширование, которое в случае с NFS не хуже — по-видимому, кеш на уровне обращения приложения к ФС.
                    0
                    И неужели ядро 700 метров может закешить? Интересно куда?

                    Вообще интересны всякие тесты, типа там запись 100 маленьких файлов, или одного большого, устойчивость к вытыканию кабеля и тп.
                      0
                      Про мелкие файлы, кажется, есть у разработчика тесты. Про кабель пока не могу потестить, настраивал удаленно :)
                        0
                        клиентская машина с 4ГБ оперативы, из которых приложения занимают чуть более одного. Так что, теоретически можно 4 файла по 700М закешировать без проблем.
                    –1
                    пардон, за что минус?
                    за совершенно позитивный комментарий? хм… странно
                    пс, а где должно быть видно что cat /mnt/pohmel/share/GRTMPVOL_RU_20.10.08.iso >/dev/null в разных случаях то чтение то запись??? неочевидно, пардон.
                      0
                      минус не мой. Возместил :)
                  –8
                  POHMELFS (Parallel Optimized Host Message Exchange Layered File System) is an asynchronous cache coherent distributed file system developed by Russian Linux hacker Evgeniy Polyakov.

                  Вот почему как только линукс, так сразу хакер?
                    +12
                    Вы неправильно поняли. Он не потому хакер, что сидит под линуксом. Он хакер линукса.
                    Кажется, kernel-hacker-ами называют практически всех, кто что-то дописывает в ядро.
                      0
                      Хм, спасибо. не знал об этом применении этого слова.
                        +6
                        Вообще то, это и есть исконный смысл данного слова. А «хакер» в смысле «взломщик» появилось много позже из-за голивудщины
                          0
                          Про лесорубов уже все забыли?
                            0
                            Я имел в виду исконное в ITшной среде :)
                        +8
                        Хакерами, вроде, вообще всех называли раньше кто программил. Это в наше время это понятие сильно уже исковеркали. От части благодаря забугорным фильмам
                        +8
                        Хакер это не тот кто ворует у бабушек деньги с их visa platinum, а кто очень хорошо шарит в коддинге и испольщует нестандартные методы.
                          +10
                          во-во… я своим студентам начал оценки снижать. Говорю на первой лекции, что у нас есть злоумышленники, а хакеры — в кино.
                          0
                          на википедии забанили, мой юный друк?
                          0
                          а почему топик закрыт? может откроете?
                            +2
                            А зачем? Вещь специфична для линукса, а если открыть, то набегут всякие холиварщики и все испортят.
                            В прочем, если Вас кто-то еще поддержит, я открою.
                              +2
                              просто хотел дать линк не хаброчеловеку.
                                +3
                                Убедили. Сейчас поправлю.
                          –1
                          Автор, кстати, сейчас работает у нас, в «Яндексе».
                            +1
                            А раньше учился на физтехе. Было даже как-то захожу на общажный сервак по ssh, а он там в who есть :)
                              0
                              Я вчера на кофе с ним познакомился. Он рассказывал о планах интеграции с Elliptics Network.
                                0
                                *конфе.

                                Эффект, словно парень из будущего.
                              +1
                              Здорово. Я хочу тоже Яндексе работать…
                                0
                                  0
                                  Да я знаю. Ходил на собеседование. Но есть некоторые обстоятельства, по которым меня пока что не могут оформить (по крайней мере, HR-менеджер так сказала).
                                    0
                                    А вы напрямую попробуйте :-)
                                      0
                                      Это как? Просто на текущий момент сам думаю искать работу, ибо старая просто поперек горло ^_^
                                      Только вот как всегда, если судить по yandex, это знаем, это не знаем, это изучали, это вроде как не надо было…
                                        0
                                        Искать общих знакомых :) Или заводить :) А устраиваться на общих основаниях всегда гемор к сожалению…
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  +1
                                  У другой известной интернет-компании, кажется, есть EBFS.
                                    +1
                                    Ещё бы:

                                    bolk-dev ~ $ telnet money.yandex.ru 80
                                    Trying 213.180.204.32…
                                    Connected to money.yandex.ru.
                                    Escape character is '^]'.

                                    HTTP/1.1 400 Bad Request
                                    Connection: close
                                    Content-Length: 48
                                    Content-Type: text/html
                                    Date: Tue, 23 Jun 2009 13:25:09 GMT
                                    Last-Modified: Tue, 23 Jun 2009 13:25:09 GMT
                                    Server: BAIDA/1.0.0

                                    Bad request syntax or something strange happen
                                    Connection closed by foreign host.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                        0
                                        Я не переписывал :) За других не скажу :)
                                        0
                                        забавный сервак, единственный кто говорит «Chunked» с большой буквы, наступали на это в самописном клиенте
                                    0
                                    А есть ли утилиты для просмотра загрузки? Аналогичные nfsstat
                                      0
                                      Не встречал. Скорее всего, пока нет, но есть простор для творчества.
                                      +2
                                      Интересный пост, автору спасибо огромное. Я данный модуль встречал и около получаса думал что за похмелфс. Но руки погуглить так и недошли. Еще раз спасибо, теперь буду хоть чуток к нему ближе. +1
                                        0
                                        Ну то, что в Linux штатный NFS, э-э… ну скажм так, далек от оптимальности в плане быстродействия, это, по моему, ни для кого, интересующегося состоянием дел в этой области не секрет.
                                          +1
                                          Именно потому я и написал «старый недобрый NFS»
                                            –1
                                            Так что невелика доблесть — обогнать инвалида.

                                            Просто не стоило ставить знак равенства между NFS «вообще» и Linux NFS.

                                            Что же касается NFS «вообще», то против того, что он есть, буквально, «всюду», стандартизирован, и всеми понимаем, новой «игрушке» пока предложить нечего.
                                            «Убийцы NFS» приходят с частотой «убийц афонов», но примерно с тем же результатом.
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                0
                                                Вы имеете в виду, когда несколько клиентов пишут один и тот же файл?
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                    0
                                                    К какой версии NFS относится вопрос? 3, 4, 4.1?

                                                    Впрочем, ответ очевиден, по моему. Иначе бы NFS не использовалась бы _так_ широко.
                                                      0
                                                      Лично у меня в домашних условиях NFS4 падает гораздо чаще, чем NFS3. Про Lock Manager ничего не скажу, не сталкивался.
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                          0
                                                          У меня есть полностью противоположные сведения.
                                                            0
                                                            NFS не всегда выдерживает даже раздачу в 10 потоков через DC++. Что уж говорить про продакшн…
                                                              –1
                                                              О, да, задача! 10 потоков DC++ :)

                                                              Простите, я думал, что мы о по настоящему серьезных промышленных задачах говорим.

                                                              Темой «домашнего компьютера», извините, не интересовался, наверное в нем есть какие-то проблемы для NFS. ;)
                                                                +1
                                                                Ну так и я о том же. Если оно с таким пустяком нормально справиться не может, куда ему в серьезный проект…
                                                                Видел я и файлопомойку, основанную на NFS. Проблемы ровно те же — внезапно ломается по непонятным причинам.
                                                                  0
                                                                  Работает на 10К почтовых пользователях шарено по GigE, ничего не ломается. Нет конечно POHMELFS может и крута, но пока оно в разработке говорить о ней рано, слишком молода. По мне так NFS лучше чем SMB ;)
                                                                    +1
                                                                    Возможно, NFS стабилен на маленьких файлах.
                                                                    А про SMB лучше и не говорите :) Мне хватило одного кернел паника из-за link down.
                                                                      0
                                                                      Да нормально все с smb, не фантан по скорости, но для офиса вполне хватает.

                                                                      Другой вопрос, что нормальной альтернативы нет :(

                                                                      Вот если бы poxmelfs можно было бы внедрить в корп структуру, были бы клиенты под все ОСИ зла, вот было бы неплохо.

                                                                      P.S Кстати как у нее с ACL?
                                                                    +3
                                                                    Еще раз. Возможно для «файлопомойки» есть непреодлимые трудности. Подозреваю вида «прокладка между креслом админа и клавиатурой» ;)

                                                                    Тем не менее в мире есть по настоящему большие проекты, живущие полностью на NFS.

                                                                    Датацентр Oracle в Остине: Oracle 9i, 10g, 11 на Linux по NFS. 3 петбайта данных, 12 тысяч серверов (на 2005 год, новее данные не публиковались)
                                                                    www.oracle.com/broadband/demo/adc/resources/adc_fact.html
                                                                    www.youtube.com/watch?v=fjnkfLkYNis
                                                                    Свыше 1000 виртуальных машин на 35 серверах VMware ESX3 в компании Invesco.
                                                                    Хранилище данных всем известного Facebook.
                                                                    Flickr, как и вообще подавляющая часть Yahoo!..

                                                                    Но это, конечно не 10 потоков DC++ :)
                                                                      +2
                                                                      Дал бы еще кто инструкции по тонкой настройке. На кривость рук сослаться всегда можно.
                                                                      Кстати, возможно, сильно влияет качество сетевых карт — на дорогих экземплярах и latency меньше, и буфер больше, и качество приемника и передатчика должно быть выше.
                                                                      Это могло бы объяснить нестабильность NFS дома на дешевых реалтеках/нфорсах/свичах и в продакшне на дешевых серверах с не такими уж и хорошими интегрированными сетевухами.
                                                                        +3
                                                                        У меня большие подозрения что там от NFS одно название уже осталось… GPL конечно чтут, но есть многое на свете. Действительно, в плане той же настройки и прочего окружения
                                                                          0
                                                                          На конце стораджа там точно не Linux, о чем я и говорил с самого начала. Там NetApp. Это такой софтверно-железный NAS на своей собственной OS и FS.

                                                                          Кривенький NFS в Линуксе, ну уж что уродилось. Есть прямее, но не в Линуксе. Или вернее в Линуксе тоже можно доточить, говорят. Как пример тот же Oracle на Linux.

                                                                          Вон, говорят, в OpenFiler уже получше. Хотя в основе там CentOS, но рук, как я знаю, приложено было много, в том числе и к NFS.
                                                                            0
                                                                            Не зря в Oracle 11 теперь свой собственный клиент NFS (DirectNFS) внутри.

                                                                            Но вообще же это очень по русски — не суметь настроить NFS и написать вместо этого свою файловую систему :)
                                                                          +1
                                                                          Поправлю сам себя по Остину:

                                                                          на 2007 год:
                                                                          22 тысячи серверов, добавляется примерно 100 в неделю.
                                                                          9,5 PB стораджа (NFS)
                                                                          Свыше 1,7 миллионов пользователей
                                                                          Крупнейшая инсталляция Oracle в мире.

                                                                          14 мегаватт резервных дизелей питания ;)
                                                                            0
                                                                            Админы наверное картошку и яичницу жарят, не выходя из гермозоны %)
                                                          0
                                                          Э-э… Чего? 8-)
                                                    0
                                                    Сейчас активно ведется разработка Parallel NFS.
                                                      0
                                                      По данным разработчика, недописанный PohmelFS работает быстрее, чем недописанный Parallel NFS. Исключение — Random read, где PohmelFS очень сильно проигрывает.
                                                        0
                                                        Если вы про pNFS АКА NFS v4.1 то разрабтка уже, насколько я знаю, прошла стандартизацию и готова в продакшн.
                                                        +1
                                                        автор, дай ебилды.
                                                          0
                                                          нету :)
                                                          Да и не очень умею писать их, если честно. А при той недописанности, которая присуща проекту, вообще смысла в нем не вижу, ради двух-то бинариков.
                                                            0
                                                            дело не в недописанности, не в смысле, не в двух бинарниках. дело в порядке. gentoo это порядок, в отличие остальных дистров где принято ставить через configure make install.
                                                            придетсо на досуге саоммоу писть ебилд.
                                                              0
                                                              Насколько я могу судить о дистрах, среди линуксов таким свойством обладает только LFS, который и дистром-то не является. Ну, может быть, еще слака, которая идеологически и линуксом-то не особо является.
                                                                0
                                                                да думаю если щас зайти на вики любого дистра, там там в очень многих статьях будут решения вроде configure / make. у убунты таких точно полно, на арче видел, и вообще.
                                                                  +1
                                                                  Если криворукий автор статьи написал «сделайте make install», то это ещё не говорит о том, что в этом дистре «принято ставить через make install». В пакетных дистрах принято ставить пакетами. Специально для самосборов, которые не хотят заморачиваться «правильной» сборкой, существует checkinstall. Если какой-то автор статьи его не осилил — это проблемы автора статьи, а не дистрибутива.
                                                                    0
                                                                    если вики оффициальный, то это проблема дистра.испорченные мозги юзаров — это тоже проблема дистра.
                                                                      +1
                                                                      Можно вопрос?
                                                                      Вы перелопатили вики всех дистров, что так уверенно заявляете «gentoo это порядок, в отличие остальных дистров где принято ставить через configure make install»?
                                                                      Или просто взяли пару «подходящих» и экстраполировали на все остальные?
                                                                        0
                                                                        Да, всех.
                                                                          +1
                                                                          Можно линк на официальную вики Дебиана, где говорят «сделайте make install»?
                                                                            0
                                                                            Дебиан это тоже такой дистрибутив бывает?
                                                                              +1
                                                                              Вопросов больше не имею.

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

                                                        Самое читаемое