Ceph/概要

Cephのインストール

このページでは,Cephをインストールする作業をまとめています.
インストール環境は,Ubuntu server 10.04 lucidで行っています.
また,OSD,MDS,Monitor全てを1台のノード上で動作させています.

事前準備

Ceph をインストールする事前準備として,以下の設定をしておく必要があります.

  • 各サーバへのホスト名を設定
  • 各サーバへのSSHログインに用いる公開鍵の設定

ホスト名の設定は,各サーバが他のサーバの指定に用いるだけですので,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のダウンロード,インストール

Cephのソースコードをダウンロードし,コンパイル,インストールの作業を行います.
ここでのインストールでは,Fuseを用いてCephを利用するようにしています. Fuseを用いるとユーザ空間で動作する代わりにファイルアクセス時にコンテキストスイッチが発生します. そのためカーネル空間で動作する場合と比較して性能が落ちます.

$ 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はSSH経由で全サーバに設定を行うオプション
  • mkbtrfsはbtrfsの初期化を行うオプション

Cephの起動

ここでも設定ファイルの反映と同じく,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

initスクリプトの書き換え

デフォルトでは、/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には,設定ファイルで記述した番号が入ります.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-09-21 (火) 01:43:50 (3255d)