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.
沒有留言:
張貼留言