2007年02月14日

クラスタファイルシステム「lustre」を触ってみます

はてなブックマークに登録

負荷分散環境では必須ともいえるネットワークストレージですが、皆様の環境ではどのようなものをお使いでしょうか。
「ファイル共有なんてなくしてしまえっ!!」って言いたくなることも時々あったりしますが(笑)、画像などの素材データ類はDBに格納するよかファイルとして扱う方が運用上楽だったりするので、そう簡単に抹殺するわけにもいきません。
DSASではDRBDで冗長化したNFSサーバ(もちろんLinuxベース)をネットワークストレージとして使っていますが、構成上どうしても特定のサーバに負荷が集中しがちになるのが悩みの種です。
特にせっぱ詰まって困ってる訳ではないのですが「どーしたもんかなあ」と物思いにふけっていると、いつもお世話になっている協力会社の方から「lustreってのもあるよん」と教えてもらったので軽く調べてみました。これはなかなか楽しそうなクラスタファイルシステムじゃあないですか!

lustreの詳細についてはこちらを参照して頂くとして、どんなものなのかを簡単に説明すると「数台のサーバをひとつのファイルサーバとしてみせるための仕組み」です。lustreではメタデータを管理するサーバ(MDS)とデータを格納するサーバ(OST)とが分かれており、複数台のOSTをMDSが管理する構成になっているのでクライアントが増えてもI/O性能が低下しないのが特徴だそうです。
とはいえ、実際に見てみないとどんなものなのかわからないので、自分のマシン(Debian)上で動かしてみることにしました。

なにはともあれ、まずはソースをダウンロードして展開します。


# wget http://clusterfs-pub.com/customer/public-releases/production/1.4.9/lustre-1.4.9.tar.gz
# tar zxvf lustre-1.4.9.tar.gz -C /usr/src
# cd /usr/src/lustre-1.4.9/
# ls -la
drwxrwxrwx 7 20000 20000 640 2007-02-13 21:43 .
drwxrwsr-x 18 root src 576 2007-02-13 21:43 ..
-rw-rw-r-- 1 20000 20000 18483 2004-12-20 08:06 COPYING
-rw-rw-r-- 1 20000 20000 48 2005-09-30 05:04 ChangeLog
-rw-rw-r-- 1 20000 20000 129 2004-12-20 08:06 README
-rw-rw-r-- 1 20000 20000 111249 2007-02-07 17:34 aclocal.m4
-rw-rw-r-- 1 20000 20000 863 2006-06-08 01:42 autoMakefile.am
-rw-rw-r-- 1 20000 20000 26844 2007-02-07 17:35 autoMakefile.in
drwxrwxrwx 3 20000 20000 952 2007-02-07 17:39 build
-rwxr-xr-x 1 20000 20000 2774 2007-02-07 17:35 compile
-rwxr-xr-x 1 20000 20000 42037 2007-02-07 17:34 config.guess
-rw-rw-r-- 1 20000 20000 7103 2007-02-07 17:34 config.h.in
-rwxr-xr-x 1 20000 20000 30221 2007-02-07 17:34 config.sub
-rwxrwxr-x 1 20000 20000 433751 2007-02-07 17:35 configure
-rw-rw-r-- 1 20000 20000 245 2005-11-16 21:39 configure.ac
-rwxr-xr-x 1 20000 20000 13866 2007-02-07 17:35 depcomp
-rwxr-xr-x 1 20000 20000 7122 2007-02-07 17:34 install-sh
drwxrwxrwx 8 20000 20000 736 2007-02-07 17:39 libsysio
drwxrwxrwx 11 20000 20000 424 2007-02-07 17:39 lnet
drwxrwxrwx 26 20000 20000 824 2007-02-07 17:40 lustre
-rwxr-xr-x 1 20000 20000 10266 2007-02-07 17:34 missing
-rwxr-xr-x 1 20000 20000 1988 2007-02-07 17:34 mkinstalldirs
drwxrwxrwx 3 20000 20000 392 2007-02-07 17:39 snmp



とりあえずREADMEをみてみます。


# cat README
Instructions for building, configuring and running Lustre can be found at:
http://projects.clusterfs.com/lustre/LustreHowto.



とのことなので LustreHowtoLustreManual あたりを参照しつつビルド方法を探していると、どうやらカーネルにパッチを当てる必要があるっぽいです。


# ls -la lustre/kernel_patches/series/
drwxrwxrwx 2 20000 20000 760 2007-02-07 17:40 .
drwxrwxrwx 8 20000 20000 312 2007-02-07 17:40 ..
-rw-rw-r-- 1 20000 20000 682 2006-09-11 13:23 2.6-fc3.series
-rw-rw-r-- 1 20000 20000 1027 2006-11-01 10:24 2.6-rhel4-titech.series
-rw-rw-r-- 1 20000 20000 999 2006-10-18 06:02 2.6-rhel4.series
-rw-rw-r-- 1 20000 20000 606 2007-02-02 11:09 2.6-sles10.series
-rw-rw-r-- 1 20000 20000 391 2006-12-29 11:37 2.6-suse-newer.series
-rw-rw-r-- 1 20000 20000 419 2006-03-30 02:30 2.6-suse.series
-rw-rw-r-- 1 20000 20000 538 2006-10-10 11:08 2.6.12-vanilla.series
-rw-rw-r-- 1 20000 20000 1309 2006-10-10 11:08 hp-pnnl-2.4.20
-rw-rw-r-- 1 20000 20000 389 2006-08-30 12:15 ldiskfs-2.6-fc3.series
-rw-rw-r-- 1 20000 20000 350 2006-09-30 17:01 ldiskfs-2.6-fc5.series
-rw-rw-r-- 1 20000 20000 464 2006-06-21 00:53 ldiskfs-2.6-rhel4.series
-rw-rw-r-- 1 20000 20000 405 2007-01-27 05:58 ldiskfs-2.6-sles10.series
-rw-rw-r-- 1 20000 20000 483 2006-10-20 13:46 ldiskfs-2.6-suse.series
-rw-rw-r-- 1 20000 20000 449 2006-05-26 01:55 ldiskfs-2.6.12-vanilla.series
-rw-rw-r-- 1 20000 20000 1779 2006-12-16 01:32 rhel-2.4.21
-rw-rw-r-- 1 20000 20000 1313 2006-10-10 11:08 suse-2.4.21-cray
-rw-rw-r-- 1 20000 20000 1433 2006-12-16 01:32 vanilla-2.4.24
-rw-rw-r-- 1 20000 20000 1303 2006-10-10 11:08 vanilla-2.4.29
-rw-rw-r-- 1 20000 20000 1357 2006-10-10 11:08 vanilla-2.4.29-uml



さらに Changelog をみてみると、対応カーネルは

2.6.16.21-0.8 (SLES10)
2.6.9-42.0.3EL (RHEL 4)
2.6.5-7.276 (SLES 9)
2.4.21-47.0.1.EL (RHEL 3)
2.6.12.6 vanilla (kernel.org)

だそうなので kernel.org から linux-2.6.12.6.tar.gz をダウンロードして展開します。


# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.6.tar.gz
# tar zxvf linux-2.6.12.6.tar.gz -C /usr/src



quiltコマンドでパッチを当てます。


# cd /usr/src/linux-2.6.12.6/
# ln -s ../lustre-1.4.9/lustre/kernel_patches/series/2.6.12-vanilla.series series
# ln -s ../lustre-1.4.9/lustre/kernel_patches/patches patches
# quilt push -av



パッチを適用したカーネルをビルドします。


# make menuconfig
# make
# make install
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.6
# cp System.map /boot/System.map-2.6.12.6
# vi /boot/grub/menu.lst



lustreをビルドします。


# cd /usr/src/lustre-1.4.9/
# ./configure --with-linux=/usr/src/linux-2.6.12.6
# make
# make install



新しいカーネルで再起動した後、付属の動作確認用(?)のスクリプトでローカルマウントしてみます。


# mkdir /mnt/lustre
# cd /usr/share/lustre/examples/
# sh llmount.sh
# df -m /mnt/lustre
Filesystem 1M-ブロック 使用 使用可 使用% マウント位置
local 367 17 331 5% /mnt/lustre



とりあえずこれでlustreが動く環境ができあがったっぽいです。
とはいえ、まだまだわからないことだらけなので、これから地味に設定方法等を調べつつ、動作や性能を検証していきたいなあと思っています。

klab_gijutsu2 at 19:46│Comments(2)TrackBack(1)

トラックバックURL

この記事へのトラックバック

1. 安全・確実・大容量・高速なファイルシステム  [ Tadahira's blog ]   2007年02月20日 12:44
googleのgmailで使われているファイルシステム google file ...

この記事へのコメント

1. Posted by yos-takahashi   2007年02月20日 22:43
Lustreは1.6系(まだBeta版ですが)を試したほうがよろしいですよ。設定方法は1.4系に比べてかなり楽になります。1.6系は動的拡張が可能など機能面でも良い点があるためお勧めします。

文中に「データを格納するサーバ(OSS)」とありますが、データを格納するサーバを示すのはOSTです。(Object Storage Targets)
2. Posted by Yasui   2007年02月21日 15:05
yos-takahashiさん、コメントありがとうございます。今後の事を考えると1.6を触りながら開発動向を追った方がよさそうな感じがしますね。

>データを格納するサーバを示すのはOSTです。(Object Storage Targets)

失礼しました、本文を修正しました。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 
Blog内検索
Archives
このブログについて
DSASとは、KLab が構築し運用しているコンテンツサービス用のLinuxベースのインフラです。現在5ヶ所のデータセンタにて構築し、運用していますが、我々はDSASをより使いやすく、より安全に、そしてより省力で運用できることを目指して、日々改良に勤しんでいます。
このブログでは、そんな DSAS で使っている技術の紹介や、実験してみた結果の報告、トラブルに巻き込まれた時の経験談など、広く深く、色々な話題を織りまぜて紹介していきたいと思います。
最新コメント