メモ: AWSのAmazon Linux上でGlusterFSをソースコードからビルドする
GlusterFS(http://www.gluster.org/)は、複数サーバの複数ディレクトリを指定して、1つの大きなボリュームとして扱えるOSSのファイルシステムツールです。実装はCです。少し前にRedHatさんが買収して、高機能版をRedHat Storageとして販売もしています。ただし、今回使ったのは、無償のコミュニティエディションです。
参考資料
- 3.3のコードに同梱されているINSTALLファイル
- ドキュメント(ただしGlusterFS 3.2のもの) 3.3. Installing GlusterFS from Source
手順
コードを入手して、tarを解凍し、できたディレクトリに移動します。
$ cd ~ $ mkdir build $ cd build $ wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/glusterfs-3.3.0.tar.gz $ tar zxzvf glusterfs-3.3.0.tar.gz $ cd glusterfs-3.3.0
ドキュメントによると、次のパッケージが必要です。
ひとまず、何もない状態からconfigureを叩いていって、怒られるたびに足りないパッケージをインストールしました。
configureが通るまでに必要だったものは、次のとおりです。
$ sudo yum install gcc flex bison openssl-devel
configureを実行すると、次のような結果になります。
$ sudo ./configure
...(略)...
GlusterFS configure summary
===========================
FUSE client : yes
Infiniband verbs : no
epoll IO multiplex : yes
argp-standalone : no
fusermount : no
readline : no
georeplication : yes
makeすると、上で「yes」のものがビルドされます。
ドキュメントにしたがって、足りないものも入れました。
$ sudo yum install portmap fuse libtool
# libtoolを入れれば、autoconf とautomakeが自動的にインストールされます。
最初にconfigureが通った時点と、この時点とで、ビルド対象は同じままです。configureの結果は、上に挙げた状態のままで、「yes」のものは増えません。「no」のものは、その環境に必要がないからビルドされないのだと思います。
argp-standalone、readline、fusermountは、すでにAmazon Linuxに入っていました。Infiniband verbsは、GlusterFSのハードウェア要件を見るとInfinibandがサポートされるのに対して、EC2インスタンスが対応していないので、ビルドされないのでしょう。
The following are the supported networks:
というわけで、ビルド。…と思ったら、makeがないと怒られたので、入れました。
$ sudo yum install make
あらためて。
$ sudo make $ sudo make install
すんなりビルドできて素晴らしい。
コマンドを叩いて、GlusterFSのバージョンを確認できれば、インストール完了です。
$ glusterfs --version
設定の話は、また今度書きます。(たぶん)