Ceph開発環境とは?
Ceph のように複数のサーバをまたいで稼働する分散システムは、動作検証やちょっとしたパラメータ修正を検証したい際でも動作環境を構築するのが、とても手間がかかります。
このような手間を小さくする方法として、Ceph では、開発環境を簡単に構築するための script を利用することができます。本ドキュメントでは、script を使って1台のホスト上に Ceph 開発環境を構築する手順について、まとめます。
何が便利なの?
例えば、Ceph の設定パラメータを tuning したいときに、効果や影響を見たいときに Ceph 開発環境が手元にあれば、すぐに評価ができて便利です。
また、Ceph 開発環境は Debug log がデフォルトで沢山出力されるようになっているため、プログラムの動作パスを追って動作の仕掛けを勉強する用途にも向いています。
参考情報
- Mimic (ceph version 13.x)
- Luminous (ceph version 12.x)
- Jewel (ceph version 11.x)
開発環境の作り方
OSパッケージの初期インストール
次のパッケージを始めにインストールしておきます。
- Ubuntu18.04
sudo update
sudo apt install build-essential cmake python-tox
- CentOS7
sudo yum update
sudo yum install git cmake gcc-c++ python-tox
ソースコードのダウンロード及びビルド
git clone https://github.com/ceph/ceph
cd ceph
# Jewel の場合
git checkout jewel
# Luminous の場合
git checkout luminous
# submodule を checkout する
git submodule update --init --recursive
# build を実施する
./run-make-check.sh
開発環境を起動する
Jewel の場合
cd src
./vstart.sh -d -n -x
Luminous の場合
cd build
make vstart
../src/vstart.sh -d -n -x
動作確認
Jewel の場合
# status 確認
./ceph osd pool stats
./ceph osd pool stats cephfs_data
./rados df
# rados write テスト
./rados mkpool mypool
./rados -p mypool bench 10 write -b 123
# rados file upload テスト
./rados -p mypool put objectone <somefile>
./rados -p mypool put objecttwo <anotherfile>
./rados -p mypool ls
Luminous の場合
# status 確認
bin/ceph -s
bin/ceph osd pool stats
bin/rados df
bin/rados mkpool mypool
bin/rados -p mypool bench 10 write -b 123
開発環境を停止する
Jewel の場合
./stop.sh
Luminous の場合
../src/stop.sh
fio ベンチマーク
Jewel の場合
./rbd create --image-feature layering --size 10240 test01
CEPH_CONF=./ceph.conf fio --direct=1 --rw=randwrite --bs=512 --ioengine=rbd --pool=rbd --rbdname=test01 --thread=1 --group_reporting=1 --time_based=1 --numjobs=1 --iodepth=128 --runtime=120 --randrepeat=0 --norandommap=1 --refill_buffers=1 --name=randw
まとめ
Ceph 開発環境を使えば、bluestore やスケールアウト性能を検証するのは難しいですが、あまりハードウェアやネットワークには依存しないような内容についてはお手軽に検証ができてとても便利です。
お手元の AWS EC2 など、Public Cloud に Ceph 開発環境の EBS Volume を用意しておくのも良いかもしれません。必要な Spec としては、Volume 100GB、memory 8GB以上(swap 併用でもOK)、CPU 4VCPU以上 程度あれば問題なく動作しそうです。