[[Ceph/概要]]

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

** 事前準備 [#md342c19]
Ceph をインストールする事前準備として,以下の設定をしておく必要があります.
- 各サーバへのホスト名を設定~
- 各サーバへのSSHログインに用いる公開鍵の設定~

ホスト名の設定は,各サーバが他のサーバの指定に用いるだけですので,DNSサーバに登録していなくてもhostsファイルに記述しているだけでも大丈夫です.~
ただし,設定ファイルの記述にホスト名で記述する部分があるので,設定していない場合はエラーメッセージを表示してしまいます.

SSH鍵の設定は,インストール作業中に他のノードに対してコマンドを実行する必要があります.~
その際に,Cephのコマンドが他のノードへrootアカウントでSSHでログインします.~
rootアカウントでログインする際に公開鍵認証で他ノードにrootアカウントで入れない場合,コマンドが実行できずエラーメッセージが表示されます.~

** パッケージのインストール [#m23809ad]
Cephをインストールする前に,Cephのコンパイルに必要なパッケージをインストールする.~
合わせて,Cephのソースコードはgitで提供されているためgit-coreをインストールする.
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のダウンロード,インストール [#lb18812a]
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

* 設定ファイルの作成 [#a329cd7e]
まず、/etc/ceph/ceph.confを作成する.
まず、/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

* 設定ファイルの反映 [#l69ffe71]

 $ sudo mkcephfs -c /etc/ceph/ceph.conf --allhosts --mkbtrfs

--allhostsはSSH経由で全サーバに設定を行うオプション
--mkbtrfsはbtrfsの初期化を行うオプション

* Cephの起動 [#ee467d6e]
ここでも設定ファイルの反映と同じく,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スクリプトの書き換え [#iace2098]
デフォルトでは、/usr/local/etc/cephを読みに行く場合がある.~
今回の例では/etc/cephに設定ファイルを作成したので,initスクリプトが設定ファイルを読みに行く際/etc/cephを読むように書き換える.~
デフォルトでは、/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

* 起動の確認 [#pd48d7ef]
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