kvm/RBD(RADOS Block Device) に成功した
長かった…
基本的には、wikiを参照。こいつの不正確な情報のせいで苦労したけど
コンフィグ
テスト用のコンフィグはこんな感じ。ceph1-3全てでMon, MDS, OSDを起動する。RBDだとMDSはいらないかも。
[global] debug ms = 0 [mon] mon data = /data/mon$id debug ms = 0 [mon0] host = ceph1 mon addr = 192.168.101.41:6789 [mon1] host = ceph2 mon addr = 192.168.101.42:6789 [mon2] host = ceph3 mon addr = 192.168.101.43: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 osd class tmp = /var/lib/ceph/tmp [osd0] host = ceph1 btrfs devs = /dev/vdb [osd1] host = ceph2 btrfs devs = /dev/vdb [osd2] host = ceph3 btrfs devs = /dev/vdb
事前準備
gitでソースを持ってきてmakeした場合、/var/lib/ceph(/tmp)が存在しないので、予めceph1-3全てで作っておく。あるいは、osd class tmp = "..." で共通して存在するディレクトリを指定しても良い。
# mkdir -p /var/lib/ceph/tmp
RBDの準備作業
ここのコマンドは全てceph1(cephノード上)で実行。
まずはcephのコマンドを使ってOSDを初期化する。
# mkcephfs -c /usr/local/etc/ceph/ceph.conf --allhosts --mkbtrfs
んで起動。"--allhosts"を付けているので、勝手に全マシンで必要なデーモンが起動する。
# /etc/init.d/ceph -c /usr/local/etc/ceph/ceph.conf --allhosts start
次に、cephにrbdクラスをロードする。
# cclass -a Loading class: /usr/local/lib/rados-classes/libcls_rbd.so.1.0.0: rbd 1.2 x86-64 read 304122 bytes from /usr/local/lib/rados-classes/libcls_rbd.so.1.0.0 10.10.01_15:37:11.288453 mon <- [class,add,rbd,1.2,x86-64,changed] 10.10.01_15:37:12.567040 mon1 -> 'updated' (0)
んで有効化。
# ceph class activate rbd 1.2 10.10.01_15:37:19.698959 mon <- [class,activate,rbd,1.2] 10.10.01_15:37:20.780942 mon1 -> 'updated' (0)
radosのプールを表示してみる。
# rados lspools data metadata casdata rbd
rbdを使う側の作業
ここからはrados/rbdを利用する側のマシンで。事前にwikiを見てパッチ適用版のqemu-kvm環境を作っておく。
で、実際にqemuで使えるイメージを作る。
# /usr/local/bin/qemu-img create -f rbd rbd:data/kvmtest 8G Formatting 'rbd:data/kvmtest', fmt=rbd size=8589934592 cluster_size=0
あとはqemuへのオプションでこのrbdを指定して、いつも通りqemu-kvmを起動すればよい。
自分の環境では、次のようなオプションでFedora13のインストールに成功した。
#!/bin/bash QEMU="/usr/local/bin/qemu-system-x86_64" MEM=2048 $QEMU -boot d \ -drive format=rbd,file=rbd:data/kvmtest \ -cdrom "/root/vm/osimg/Fedora-13-x86_64-DVD.iso" \ -m $MEM \ -k ja \ -usb \ -usbdevice tablet \ -localtime
んで、ざっと性能テスト。といっても、cephノードがどれもVMで動いているからアテになりません。誰か実機で試してくれないかなぁ。id:syuu1228とか[twitter:@syuu1228]とか。
・書き込み # dd if=/dev/zero of=/out.dat bs=1M count=2048 2147483648 bytes (2.1 GB) copied, 464.509 s, 4.6MB/s ・読み出し # dd if=/out.dat of=/dev/null bs=1M count=1024 1073741824 bytes (1.1 GB) copied, 96.7442 s, 11.1 MB/s
…ですよねー('A`)