このページでは,Cephをインストールする作業をまとめています.
インストール環境は,Ubuntu server 10.04 lucidで行っています.
また,OSD,MDS,Monitor全てを1台のノード上で動作させています.
Ceph をインストールする事前準備として,以下の設定をしておく必要があります.
ホスト名の設定は,各サーバが他のサーバの指定に用いるだけですので,DNSサーバに登録していなくてもhostsファイルに記述しているだけでも大丈夫です.
ただし,設定ファイルの記述にホスト名で記述する部分があるので,設定していない場合はエラーメッセージを表示してしまいます.
SSH鍵の設定は,インストール作業中に他のノードに対してコマンドを実行する必要があります.
その際に,Cephのコマンドが他のノードへrootアカウントでSSHでログインします.
rootアカウントでログインする際に公開鍵認証で他ノードにrootアカウントで入れない場合,コマンドが実行できずエラーメッセージが表示されます.
Cephをインストールする前に,Cephのコンパイルに必要なパッケージをインストールします.
合わせて,Cephのソースコードはgitで提供されているためgit-coreをインストールします.
$ sudo aptitude -y 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 libexpat1-dev git-core
Cephのソースコードをダウンロードし,コンパイル,インストールの作業を行います.
$ git clone git://ceph.newdream.net/git/ceph.git $ cd ceph $ ./autogen.sh $ ./configure --with-fuse --with-radosgw --with-libatomic-ops $ make $ sudo make install
まず、/etc/ceph/ceph.confを作成します.
$ sudo mkdir /etc/ceph $ touch /etc/ceph/ceph.conf
ceph.conf
[global] pid file = /var/run/ceph/$name.pid debug ms = 0 [mon] mon data = /data/mon$id [mon0] host = ceph1 mon addr = xx.xx.xx.xx:6789 [mon1] host = ceph2 mon addr = xx.xx.xx.xx:6789 [mon2] host = ceph3 mon addr = xx.xx.xx.xx:6789 [mds] debug mds = 0 [mds0] host = ceph1 [mds1] host = ceph2 [mds2] host = ceph3 [osd] sudo = true osd data = /data/osd$id osd journal = /data/osd$id/journal osd journal size = 100 debug osd = 0 debug filestore = 0 [osd0] host = ceph1 btrfs devs = /dev/sdb
[osd1]
host = ceph2 btrfs devs = /dev/sdb [osd2] host = ceph3 btrfs devs = /dev/sdb
$ sudo mkcephfs -c /etc/ceph/ceph.conf --allhosts --mkbtrfs
ここでも設定ファイルの反映と同じく,allhostsを付けると全サーバで起動コマンドを実行してくれます.
$ 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
デフォルトでは、/usr/local/etc/cephを読みに行く場合があります.
今回の例では/etc/cephに設定ファイルを作成したので,initスクリプトが設定ファイルを読みに行く際/etc/cephを読むように書き換えます.
/etc/init.d/cephの24行目あたり
# i hate autoconf: if [ "/usr/local/etc" = "/usr/etc" ]; then ETCDIR=/etc/ceph else ETCDIR=/etc/ceph # ETCDIR=/usr/local/etc/ceph fi fi
initスクリプトが正しく実行出来たかどうかは,全ノードでcmon,cmds,cosdが起動しているかどうかで確認できます.
$ ps -auxwww root 1572 0.4 13.1 1139704 1010192 ? Ssl 04:59 0:23 /usr/local/bin/cmon -i 0 -c /tmp/ceph.conf.1310 root 1883 0.0 0.0 243788 3988 ? Ssl 05:00 0:00 /usr/local/bin/cmds -i 0 -c /tmp/ceph.conf.1310 root 2518 0.0 0.4 362704 32356 ? Ssl 05:01 0:01 /usr/local/bin/cosd -i 0 -c /tmp/ceph.conf.1310
また/data/osd$iにbtrfsがマウントされている事でも確認できます.$iには,設定ファイルで記述した番号が入ります.