FhGFS始めました。

始めましたといっても検証しているだけです。すいません

FhGFS、正式にはFraunhoferFSとのことでハイパフォーマンスを想定した分散並列ファイルシステム。

GlusterFSのようにフォールトトレラントな分散並列ファイルシステムではなく、
どこかのサーバが停止すれば障害となります。現状のバージョンでは運用でカバーするしかなさそうです。

特徴としてはストライピングによる高速化とメタデータサーバの分散化による高速化
GlusterFSに比べて小さいファイルでもパフォーマンスを発揮します。
グラフィカルなツールで管理やモニタリングが可能な点もGlusterFSにはない機能です。

とにかく、実際に試してみないとわからないので

インストール&パフォーマンス比較を行ってみます。

まずは役割を確認します。

■役割

5つの役割が存在します。

1.Management service server(fhgfs-mgmt)

management,metadata,storage,clientへシステムコンフィグレーションを提供するサーバ

2.Metadata servers(fhgfs-meta)

メタデータを保管するサーバ

3.Storage servers(fhgfs-storage)

実データを保管するサーバ

4.Graphical administration and monitoring system server(fhgfs-admon)

グラフィカルなJAVAのツールからこのサーバを経由してFhGFSの管理やパフォーマンスグラフのモニタリングを行う

5.Clients(fhgfs-helperd,fhgfs-client)

データをmountするサーバ。

■サーバの準備

パブリッククラウド上でサーバを立ち上げます。すべて下記の環境で立ち上げます。
CentOS-6.4 64bit 20GB 4CPU 4GB

各サーバでrootで公開鍵の登録を行いiptablesとselinuxは切っておきます。

1 * Management server 192.168.0.101
2 * Metadata servers 192.168.0.151-152
8 * Storage servers 192.168.0.201-208
1 * Admon server 192.168.0.251
1 * Clients 192.168.0.51
1 * 作業サーバ(インターネットへのGWにもなっています) 192.168.0.1

の計14台を構築しました。クラウドならこの段階まで10分以内で構築可能です。

作業サーバのhostsを登録します。

192.168.0.101 s01 mgmt001
192.168.0.151 s02 meta001
192.168.0.152 s03 meta002
192.168.0.201 s04 str001
192.168.0.202 s05 str002
192.168.0.203 s06 str003
192.168.0.204 s07 str004
192.168.0.205 s08 str005
192.168.0.206 s09 str006
192.168.0.207 s10 str007
192.168.0.208 s11 str008
192.168.0.251 s12 admon001
192.168.0.51 s13 client001

すべてのサーバに配布もしておきます。

# for i in `seq -w 1 13`; do scp hosts s$i:/etc/; done

準備は以上です。

■パッケージインストール

パッケージのインストールはすべて作業サーバから行います。

# wget -P /etc/yum.repos.d/ http://www.fhgfs.com/release/latest-stable/dists/fhgfs-rhel6.repo
# for i in `seq -w 1 13`; do scp /etc/yum.repos.d/fhgfs-rhel6.repo s$i:/etc/yum.repos.d/; done

Management server向け

# ssh mgmt001 yum -y install fhgfs-mgmtd

Metadata servers向け

# for i in `seq 1 2`; do ssh meta00$i yum -y install fhgfs-meta; done

Storage servers向け

# for i in `seq 1 8`; do ssh str00$i yum -y install fhgfs-storage; done

Admon server向け

# ssh admon001 yum -y install fhgfs-admon

Clients向け

# ssh client001 yum -y install fhgfs-client fhgfs-helperd fhgfs-utils

■InfiniBand用の設定

今回はイーサネット環境ですので設定しません。

■各環境設定(各環境で設定)

Management server向け

# ssh mgmt001
# vi /etc/fhgfs/fhgfs-mgmtd.conf
storeMgmtdDirectory=/data/fhgfs/fhgfs_mgmtd

Metadata server向け

# ssh meta001とmeta002
# vi /etc/fhgfs/fhgfs-meta.conf
storeMetaDirectory=/data/fhgfs/fhgfs_meta
sysMgmtdHost=mgmt001

Storage server向け

# ssh str001からstr008
# vi /etc/fhgfs/fhgfs-storage.conf
storeStorageDirectory=/data/fhgfs/fhgfs_storage
sysMgmtdHost=mgmt001

Admon server向け

# ssh admon001
# vi /etc/fhgfs/fhgfs-admon
sysMgmtdHost=mgmt001

Clients向け

# ssh client001
# vi /etc/fhgfs-client.conf
sysMgmtdHost=mgmt001
# vi /etc/fhgfs/fhgfs-mounts.conf
/mnt/fhgfs /etc/fhgfs/fhgfs-client.conf

■サービススタート(作業サーバから)

# ssh mgmt001 /etc/init.d/fhgfs-mgmtd start
# for i in `seq 1 2` ssh meta00$i /etc/init.d/fhgfs-meta start; done
# for i in `seq 1 2` ssh str00$i /etc/init.d/fhgfs-storage start; done
# ssh admon001 /etc/init.d/fhgfs-admon start
# ssh client001 /etc/init.d/fhgfs-helperd start
# ssh client001 /etc/init.d/fhgfs-client start

問題なければこれでclinetでdfすると

[root@client001 ~]# df -h /mnt/fhgfs
Filesystem Size Used Avail Use% Mounted on
fhgfs_nodev 106G 29G 78G 27% /mnt/fhgfs

このようになっているはずです。mountされ使えるようになっています。

■メタデータとストレージデータの冗長化

メタデータの冗長化(client環境にて)

# fhgfs-ctl --mirrormd /mnt/fhgfs

この設定でメタデータが2重化されます。ただしフォールトトレランスではなく復旧には手動での作業が必要です。

ストレージデータの冗長化

# fhgfs-ctl --setpattern --raid10 --chunksize=1m --numtargets=4 /mnt/fhgfs

raid10設定とすることでデータの2重化が可能。ただし復旧は手動での作業です。

■admon server

admonサーバは8000番ポートで待ちうけてます。

今回は作業サーバにインターネットからのポートフォワーディングによって自身の環境から繋ぎます。

GWサーバ(eth0:external eth1:internal)にてマスカレードとポートフォワーディングの設定を行っています。

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -I FORWARD -i eth1 -o eth0 -j ACCEPT
# iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8000 -j DNAT --to 192.168.0.2:8000
# iptables-save > /etc/sysconfig/iptables

あとは、http://作業サーバのIP:8000

ツールのダウンロードリンクが表示されますのでダウンロード

ダウンロードしたJAVAツールを起動させログインすれば下記のようなモニタリングや各種管理が可能となります。

初期のログインはAdministrator:adminでのログイン

admon

■パフォーマンス比較 GlusterFS(stripe 4 replica 2) vs FhGFS(raid10)

dd、catやlsを利用したパフォーマンス比較です。

 

 filesystem write(1M 1000個) write(1M 10000個) write(5G 1個)  read(5G 1個)  ls(1000個のファイル)  ls(10000個のファイル)
 FhGFS  91s  196s  90s  55s  0.5s  5.6s
 Glusterfs  186s  430s  186s  49s  1.2s  14s

これを見るとFhGFSのほうが書き込みと小さいファイルが得意。

小さいファイルで書き込みパフォーマンスが必要かつ障害がある程度許容されるサービスに限定すれば使いどころはあるかなあ。

Glusterfsのほうがインストールも設定も運用も簡単でバランスは良いように思います。