CephインストールHOWTO

最近Ceph/RADOSまわりをごにょごにょしてるので、ちょっくらHOWTOでも書いておく。

用意するもの
  • 新しいディストリ。FedoraとかUbuntuが良いだろう。かなり新しめのカーネルを前提に書かれてるコードがありそうなので。
  • おそらくx86_64が無難。FUSE版Cephクライアント使おうとしたら、32bitだと問題があるからすぐに死ぬよ!って出てきた。
  • 空きブロックデバイスOSDのデータはext3に置くこともできるが、ジャーナルデータはむりぽ。なので、空きブロックデバイスが一つも無い場合はジャーナル無しで使うことに。
  • 適切なホスト名。ホスト名のみでIPが解決出来るよう、DNSかhostsが適切に設定されている必要あり。
  • 公開鍵認証で他ノードのrootアカウントに入れるようにしておく必要あり。
current余裕です

どーせ激しく開発版なのでcurrentを使っておかしい所は報告しよう。

(参考資料: http://ceph.newdream.net/wiki/Checking_out

$ git clone git://ceph.newdream.net/git/ceph.git
$ aptitude install automake autoconf automake gcc g++ libboost-dev libedit-dev libssl-dev \
 libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libatomic-ops-dev btrfs-tools
$ cd ceph
$ ./autogen.sh
$ ./configure --with-fuse --with-radosgw --with-libatomic-ops
$ make
$ sudo make install
Cephクラスタの設計

Cephファイルシステムを利用するにはMonitor, MDS, OSDの3種類のサーバが必要。
RADOSを使うだけならMonitor, OSDの2種類。


OSD(Object Storage Device)はデータの保存先。
当然ながら多い方が良い。データの可用性を持たせるには最低でも2台必要。
Btrfsの利用が推奨されているがext3も使える。
大きなディスクと大きなメモリ(キャッシュのため)、速いネットワークが必要。


MDS(MetaData Server)はファイルシステムメタデータ管理サーバ。
Cephの特徴として、管理対象のメタデータを負荷に応じディレクトリ単位で動的に分割し、複数のMDSでコヒーレントに管理出来る。
負荷が少なければ1,2台で良いらしい。
大きな大きなメモリ、速いCPU、速いネットワークが必要。


Monitorはクラスタの管理を行う。データは直接ローカルファイルシステムに置かれる。ファイルシステムの種類は何でも良い。
リソースはあまり使わない。
3台程度が多くの場合ちょうど良い。必ず奇数台にする必要がある。

台数が少ない場合は一つのノードにOSD, MDS, Monitor全てをインストールする事も可能。

設定

まず、/etc/ceph/ceph.confを作らなければならない。
この辺を参考にしつつ書いてみる。
今回は、3台のノードにOSD, MDS, Monitorを全部入れてみた。

[global]
	pid file = /var/run/ceph/$name.pid
	debug ms = 0
[mon]
	mon data = /data/mon$id
[mon0]
	host = srv1
	mon addr = xx.xx.xx.xx:6789
[mon1]
	host = srv2
	mon addr = xx.xx.xx.xx:6789
[mon2]
	host = srv3
	mon addr = xx.xx.xx.xx:6789

[mds]
	debug mds = 0
[mds0]
	host = srv1
[mds1]
	host = srv2
[mds2]
	host = srv3
[osd]
	sudo = true
	osd data = /data/osd$id
	debug osd = 0
	debug filestore = 0
[osd0]
	host = srv1
	btrfs devs = /dev/sda5
	osd journal = /dev/sda6
[osd1]
	host = srv2
	btrfs devs = /dev/srv2/osd
	osd journal = /dev/srv2/osdjournal
[osd2]
	host = srv3
	btrfs devs = /dev/sda6
	osd journal = /dev/sda7

設定ファイルと環境設定が適切ならば、これでmkcephfsが成功するはずである。

$ sudo mkcephfs -c /etc/ceph/ceph.conf --allhosts --mkbtrfs
    • allhostsを付けるとSSHでログインして全サーバに設定を行ってくれる。
    • mkbtrfsを付けるとbtrfsの初期化を行ってくれる。

出力メッセージを良く見て、エラーが出てたらそこを直してやり直し。
うまく行かなかったらCephのMLで聞いてみると良いと思う。

うまく行ったならinit scriptをインストールして、起動してみよう。

$ cd ceph
$ sudo cp src/init-ceph /etc/init.d/ceph
$ sudo chmod a+x /etc/init.d/ceph
$ sudo /etc/init.d/ceph --allhosts start

ここでも同じく--allhostsをつける。
出力メッセージにエラーが出ず、全ノードでcmon, cmds, cosdが起動している事、/data/osd$iにbtrfsがマウントされている事を確認する。

これでCeph/RADOSクラスタの構築は完了。簡単ですね。