並列分散ファイルシステムLustreを試してみた
- 速度が出なかったのは,100Mのハブに何故か繋がってたからでした.ということで速度書き直しました.
1台では容量が足りないという場合や,速度が足りないという場合用の並列ファイルシステム.最近クラスタやスパコンで使われるようになったlustreをインストールしてみました.既に2.0が出ていますが,ここでは多少ノウハウが溜まっている少し古い1.8の方をインストールしました.
- 準備
- インストール
- CentOS 5.5 (x86_64)を,サーバ設定でインストール
- NISを設定します.「CentOS サーバ設定のメモ」さんのページに良くまとまっているので,この通りに行っています.http://tmcosmos.org/linux/centos/co5_server.html
- Lustreのページ http://wiki.lustre.org/index.php/Main_Page から,Downloadに進んで,RedHat Enterprise の x86_64用に進み,以下のものを持ってきます.
- 全てのホストで,持ってきたrpmをインストールします(下のコマンド一覧参照).
- 全てのホストの/etc/modprobe.confに"options lnet networks=tcp0(eth0)"を追加します
- modprobe lnet をします(再起動してもOK)
- MGSサーバを作ります.mkfs.lustreコマンドがあるので,それを利用します(下のコマンド一覧参照).fsname は後の設定で使うので,分かりやすいものを.
- OSSサーバを作ります.mkfs.lustreで作成します.fsnameは参照するMGSサーバのものを作成.
- 必要なら,/etc/fstab を書き換えて自動マウントするようにします.OSSが起動するとき,MGSが無いとfailメッセージを出して終了してしまうので注意.
- クライアントからマウント.普通のファイルシステムと同じ感じで.(下記のコマンド参照)
まとめてコマンド
all% rpm -ivh kernel-2.6.18-194.3.1.el5_lustre.1.8.4.x86_64.rpm lustre-modules-1.8.4-2.6.18_194.3.1.el5_lustre.1.8.4.x86_64.rpm lustre-ldiskfs-3.1.3-2.6.18_194.3.1.el5_lustre.1.8.4.x86_64.rpm
all% rpm -ivh lustre-1.8.4-2.6.18_194.3.1.el5_lustre.1.8.4.x86_64.rpm
all% rpm -Uvh e2fsprogs-1.41.10.sun2-0redhat.rhel5.x86_64.rpm
mgs% /usr/sbin/mkfs.lustre --fsname=lustre --mgs --mdt /dev/sdb1
oss% /usr/sbin/mkfs.lustre --ost --fsname=lustre --mgsnode="oss1" /dev/sda1
client% mount -t lustre oss1@tcp0:/lustre /mnt/
確認.動作を試してみます.今回は,サーバを2台,クライアント1台構成で,MGSに160G, OSS3.2TB(以上2つが同じサーバ"oss1"上),OSS 2TB("oss2"上),あとクライアントという3台があります.いずれもOSSは/exportにマウントしました.
- dfしてみる(該当箇所のみ表示)
oss1% df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb1 163G 460M 154G 1% /mnt/mgs
/dev/sdb2 3.2T 471M 3.0T 1% /export
oss2% df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 2.0T 471M 1.9T 1% /export
client% df -h
Filesystem Size Used Avail Use% Mounted on
192.168.xxx.xxx@tcp0:/lustre
5.1T 941M 4.9T 1% /mnt
確かに,ほぼOSSノード2個がくっついた容量を示している.
client% lfs df -h
UUID bytes Used Available Use% Mounted on
UUID bytes Used Available Use% Mounted on
lustre-MDT0000_UUID 163.0G 459.9M 153.2G 0% /mnt[MDT:0]
lustre-OST0000_UUID 3.1T 470.8M 3.0T 0% /mnt[OST:0]
lustre-OST0001_UUID 2.0T 470.2M 1.9T 0% /mnt[OST:1]filesystem summary: 5.1T 941.0M 4.8T 0% /mnt
- ddで書き込んでみる.
client% dd if=/dev/zero of=/mnt/zero.dat bs=500M count=2
2+0 records in
2+0 records out
1048576000 bytes (1.0 GB) copied, 8.75246 seconds, 120 MB/s
NFSだと50MB/s弱なので,2倍以上出る!バックボーンは1Gbpsのetherなので、大体性能限界かな。
お遊びはこれからだ!
- まだストライピングしたり,並列書き込みしたり,台数増やしたり,ベンチマーク取ってない!とりあえず,設定しただけ.
注意点