Помельфс: Nfs По-Новому

Те, кто следил за обновлениями ядра, возможно, заметили, что поддержка POHMELFS была добавлена в выпуске 2.6.30. Что это - файл похмелья? Исследование окрестностей страницы позволил нам предположить, что разработкой ФС занимается московский программист Евгений Поляков (и только он!), у которого на этом же сайте есть много других интересных проектов, таких как CARP-порт для Linux .

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

Давайте вернемся к ПохмельФС .

статья Википедия подтверждает причастность к названию похмелья, которое для приличия расшифровывается как Параллельная оптимизированная многоуровневая файловая система обмена сообщениями между хостами .

Документация на странице проекта предполагает, что в будущем PohmelFS — это распределенная файловая система с резервированием, контролем доступа и другими удобствами, разработанная для того, чтобы не сильно отставать от локальных файловых систем по производительности.

Это альтернатива различным GFS, GlusterFS и прочим Coda. Но все это произойдет после интеграции проекта с двумя другими — летнее время И Эллиптика .

На данный момент PohmelFS является альтернативой старой плохой NFS, практически везде показывающей лучшую производительность( проверочная ссылка ).

Ниже представлен процесс настройки небольшого зоопарка.

Вещь новая, неизведанная, никто толком не знает, как ею пользоваться.

В Интернете я нашел только одно руководство, и оно не очень умное.

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

Первое, что нужно сделать, это загрузить исходные коды ядра 2.6.30 и собрать ядро с помощью модуля pohmelfs. На момент публикации драйвер находился в статусе staging, поэтому включить его в менюконфигурацию нетривиально.

Вам необходимо включить опцию Драйверы устройств -> Промежуточные драйверы И выключить Драйверы устройств -> Промежуточные драйверы -> Исключить промежуточные драйверы из сборки.

, после чего можно включить POHMELFS, расположенный там.

Следует отметить, что ядро необходимо обновить.

только на клиенте.

Серверная часть работает в пользовательском пространстве.

Второе, что вам нужно для работы ФС — это утилиты пользовательского пространства и сервер.

Вам необходимо скомпилировать исходники.

Я загрузил отсюда последний снимок 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

Автоген может на что-то жаловаться, это лечится очевидным способом.

Но мой конфиг под 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= для монтирования должны быть одинаковыми, по умолчанию — 0. Насколько я понимаю, это просто идентификатор монтируемого общего ресурса.

Запуск сервера и клиента у меня не вызвал никаких затруднений, все заработало сразу.

Небольшой тест производительности (файл 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 раз быстрее, видимо, за счет фонового ввода-вывода.

Теги: #linux #настройка Linux #новый #nfs #nfs #Pohmelfs

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.