2009年6月12日 星期五

POHMELFS install on Gentoo Linux

POHMELFS 據說最近才進 2.6.30 kernel. Parallel Optimized Host Message Exchange Layered File System 的縮寫,是一套 Parallel network filesystem.

kernel: 2.6.30


Step1.
取得相關 source.
pohmelfs 可以直接由它官方網站上取得
$ git clone http://www.ioremap.net/git/pohmelfs.git
或是從最新的 linux kernel (2.6.30)
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.bz2


Step2.
kernel 編譯。
如果你是從 official kernel 2.6.30 編譯的話,請在 Device Drivers -> Staging drivers 選取 POHMELFS filesystem support.

如果你是 clone 它的原始 source, 請到 File systems -> Network File Systems 選取 POHMELFS filesystem support.

kernel 編譯完記得重開機。


Step3.
取得 userspace utils 並編譯。
$ cd /usr/src
$ git clone http://www.ioremap.net/git/pohmelfs-server.git
$ cd pohmelfs-server
3.1. patch 相關檔案 (如果你是用它官方的 pohmelfs.git kernel 就不需 patch 了)
============================================
--- cfg/cfg.c.orig      2009-06-11 20:32:32.000000000 +0800
+++ cfg/cfg.c   2009-06-11 20:32:45.000000000 +0800
@@ -39,7 +39,7 @@

 #include "swab.h"

-#include <fs/pohmelfs/netfs.h>
+#include <netfs.h>
 #include <linux/connector.h>

 #include "fserver.h"
==================================================
--- include/fserver.h.orig      2009-06-11 20:33:13.000000000 +0800
+++ include/fserver.h   2009-06-11 20:33:23.000000000 +0800
@@ -36,7 +36,7 @@
 };
 #endif

-#include <fs/pohmelfs/netfs.h>
+#include <netfs.h>

 #include "list.h"
 #include "rbtree.h"
=============================================
--- utils/flush.c.orig  2009-06-11 20:33:43.000000000 +0800
+++ utils/flush.c       2009-06-11 20:33:53.000000000 +0800
@@ -43,7 +43,7 @@

 #include "swab.h"

-#include <fs/pohmelfs/netfs.h>
+#include <netfs.h>

 #include <openssl/hmac.h>
 #include <openssl/evp.h>
=============================================
3.2. 編譯。
$ ./autogen.sh
$ ./configure --with-kdir-path=/usr/src/linux/drivers/staging/pohmelfs (指定 netfs.h header 位置)
$ make
$ make install
3.3. 模組載入。
$ modprobe pohmelfs
$ lsmod
Module                  Size  Used by
pohmelfs               66116  0
$ dmesg
pohmelfs: module is from the staging directory, the quality is unknown, you have been warned.


Step4.
啟動 storage server 及掛載測試!
4.1. 啟動 server
$ fserver -r /mnt/pohmelfs -w1 (on node26)
Server is now listening at 0.0.0.0:1025.
$ fserver -r /mnt/pohmelfs -w1 (on node27)
Server is now listening at 0.0.0.0:1025.
4.2. client 掛載
$ cfg -A add -a 140.110.x.26 -p 1025 -i1 (on node28)
$ mount -t pohmel -o "idx=1" none /mnt/pohmelfs (on node28)
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
none                   34G  2.9G   32G   9% /mnt/pohmelfs
$ cfg -A add -a 140.110.x.27 -p 1025 -i1 (on node28)
這樣 node28 可以同時存取 node26 及 node27 export dir.
請注意,先加入一個 node, mount 後再陸續加入其他 node, 否則無法掛載,說明請參考這裡
4.3. 確認
$ cfg -A show -i1 (on node28)
Config Index = 1
Family    Server IP                                            Port
AF_INET   140.110.x.26                                          1025
AF_INET   140.110.x.27                                          1025


說明:
當在 client node(node28) 寫檔案時,會寫到兩台 server node(node26, node27)
當在 client node(node28) 讀檔案時,會從兩台 server node 讀取資料。
建議目前不要用在 production 環境上 XD


參考:
pohmelfs-server source 裡的 README.

沒有留言:

張貼留言