GlusterFSでクラスタファイルシステムを構築

以前、クラスタストレージであるGlusterFSを、Maildir形式のメールサーバ使えないか調べていたが、1000Base-Tのネットワーク環境では、システムコールに非常に時間がかかる(キャッシュされない)ことが分かり、あきらめた。 しかしながら、少数のファイルしかない VMイメージの保存用には問題ないと思われる。またGlusterFS v3.1.2から、GlusterのNFS領域をXenServerで利用できるようになったらしい。 そこで、XenServer上のVM (OpenSUSE)でGlusterFSを動作させ、それをXenServerのSR (Storage Repository)として利用したいと思う。 ※無駄が多いけど、VM上で構築しておけばノードの追加が楽なので。 ※試して使い物にならない程遅ければ、XenServer上に直接GlusterFSをインストールすることにする。 ※なお、Oracle VM Server for x86 2.2.1で試している方がいましたので、それを参考にします。 http://nkjmkzk.net/?p=1691 開発用ツールをインストール [code] # zypper install autoconf automake libtool gcc make flex bison readline-devel [/code] GlusterFSのソースのダウンロード [code] # cd /usr/local/src # wget http://download.gluster.com/pub/gluster/glusterfs/3.1/LATEST/glusterfs-3.1.2.tar.gz # tar zxvf glusterfs-3.1.2.tar.gz [/code] コンパイル [code] # cd glusterfs-3.1.2 # ./configure ~~~略~~~ GlusterFS configure summary =========================== FUSE client : yes Infiniband verbs : no epoll IO multiplex : yes argp-standalone : no fusermount : no readline : yes # make # make install ※デフォルトでは、/usr/local/ 以下にインストールされる。 [/code] ldconfigコマンドで共有ライブラリのキャッシュを作り直す。 [code] # /sbin/ldconfig # /usr/local/sbin/glusterfs –version glusterfs 3.1.2 built on Mar 6 2011 15:26:49 Repository revision: v3.1.1-64-gf2a067c Copyright (c) 2006-2010 Gluster Inc. <http://www.gluster.com> GlusterFS comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of GlusterFS under the terms of the GNU Affero General Public License. [/code] 引き続き初期設定を行う。 各サーバで、以下のデーモンが起動されるようにしておく [code] ※なぜか起動しなかったため、起動スクリプトに以下の修正を行った。 # diff -u /tmp/glusterd glusterd — /tmp/glusterd 2011-03-06 11:44:37.077995074 +0900 +++ glusterd 2011-03-06 11:43:23.375896074 +0900 @@ -24,7 +24,8 @@ start() { echo -n $"Starting $BASE:" – startproc $GLUSTERD + $GLUSTERD + # startproc $GLUSTERD return $? } # /sbin/chkconfig glusterd on # /etc/init.d/glusterd start # vi /etc/hosts 192.168.11.102 gluster1.furelo.jp gluster1 192.168.11.103 gluster2.furelo.jp gluster2 [/code] 各サーバ間のpeerを張る。(片方向にpeerを張るだけで良い。自身とのpeerは不要。) [code] [gluster1]# /usr/local/sbin/gluster peer probe gluster2.furelo.jp Probe successful [/code] peer状況を確認する。 [code] # /usr/local/sbin/gluster peer status Number of Peers: 1 Hostname: gluster2.furelo.jp Uuid: 7ecd445c-601a-4cc7-bd48-568f97d3ee14 State: Peer in Cluster (Connected) [/code] 各サーバで、GlusterFSが利用する領域(BRICK)を作成する。 [code] # mkdir /var/brick # mkdir /var/brick/backup ※任意のディレクトリをBRICKに指定できるが、今回は、/var/brick ディレクトリに大容量のパーティションをマウントし、このサブディレクトリを各用途で利用することにする。 [/code] 任意の一台で、以下のコマンドを入力し、バックアップ領域をRAID1構成にする。 [code] # /usr/local/sbin/gluster volume create BACKUP_VOL \ replica 2 \ transport tcp \ gluster1.furelo.jp:/var/brick/backup \ gluster2.furelo.jp:/var/brick/backup # /usr/local/sbin/gluster volume info # /usr/local/sbin/gluster volume start BACKUP_VOL # /usr/local/sbin/gluster volume info [/code] 各サーバでglusterfs をfuseでマウントする。 [code] # mount -t glusterfs localhost:BACKUP_VOL /var/backup ※もし、NFSでマウントする場合、GlusterのNFS機能がTCPのみのサポートなので、以下の様に行う。 # mount -t nfs -o mountproto=tcp localhost:/BACKUP_VOL /var/backup [/code] 認識されているか確認する。 [code] # df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/system-root 6631976 2277552 4017528 37% / devtmpfs 509812 108 509704 1% /dev tmpfs 524464 4 524460 1% /dev/shm /dev/xvda1 69410 23664 42162 36% /boot /dev/xvdb1 516054864 1565272 488275532 1% /var/brick localhost:BACKUP_VOL 412843904 203136 391669632 1% /var/backup [/code] ※なお、既存データがある場合、self-heal機能を使って同期を行う必要がある。 ※self-heal機能を使うには、一度すべてのファイルにアクセスすればいい。 [code] # du /var/backup/ [/code] 問題なければ、起動時に自動マウントするようにする。 [code] # vi /etc/hosts ※GlusterFSでマウントする場合、以下の様な設定を追加する localhost:BACKUP_VOL /var/backup glusterfs acl,user_xattr,_netdev 3 0 ※NFSでマウントする場合、以下の様な設定を追加する。 localhost:/BACKUP_VOL /var/backup nfs _netdev,mountproto=tcp,rsize=8192,wsize=8192 3 0 [/code] NFSやCIFSの場合だと、専用に起動スクリプト S05nfs や S04cifs があるので自動マウントしてくれるようなのだが、 GlusterFSの様な、その他のネットワークファイルシステムについては考慮されてないようだ。 適当に以下の様に行った。 [code] # vi /etc/init.d/after.local /bin/mount -a -t nfs /bin/mount -a -t glusterfs # chmod a+x /etc/init.d/after.local [/code] しかし、NFSの場合、以下のエラーが出てマウントされなかった。 GlusterFSでは問題なかったので、GlusterFSを使うことにし、原因は調べてない。 [code] Master Resource Control: Running /etc/init.d/after.local mount.nfs: mounting localhost:/BACKUP_VOL failed, reason given by server: No such file or directorydone [/code] ※なお、一度作ったボリューム設定を削除したい場合以下の様に行う。 [code] # /usr/local/sbin/gluster volume stop BACKUP_VOL # /usr/local/sbin/gluster volume delete BACKUP_VOL [/code]
カテゴリー: Technology タグ: , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)