Ceph
目次
Cephとは
分散ファイルシステム
必要機器
最低PCが3台 今回は4台の機器を使う事にしました。
計画
arm1 192.168.100.1 BeagleBone Black (管理用)
osmc1 192.168.100.101 RaspberryPi2B (HDD提供用)
osmc2 192.168.100.102 RaspberryPi2B (HDD提供用)
osmc3 192.168.100.103 RaspberryPi2B (HDD提供用)
bbb1 192.168.100.104 BeagleBone Black (後で追加予定)
bbb2 192.168.100.105 BeagleBone Black (後で追加予定)
bbb3 192.168.100.106 BeagleBone Black (後で追加予定)
管理用PCの仕様
BeagleBone Black 管理用
OS:Ubuntu CPU:ARM RAM:512M LAN:100M USB LAN:100M
HDD提供用PCの仕様
Raspberry Pi ×3 HDD提供用
OS:OSMC(デビアン系) CPU:ARM RAM:1G LAN:100M USB HDD:500G
拡張予定のPCの仕様
BeagleBone Black HDD拡張用
OS:Ubuntu CPU:ARM RAM:512M LAN:100M USB HDD:2T
前準備
IPアドレスの設定
Hostsの設定
rootログインの設定
rootでいきなりログイン出来る様に設定してしまう。
rootのパスワードを設定します。これでいきなりsshでrootでログイン出来る様になります。
sudo su passwd root 設定するパスワードを2回入力
OSMCは、これでいきなりログイン出来る様になりました。
Ubuntuは頑固でrootのパスワードを設定してもsshでいきなりrootログインはさせてくれなかった。
そこで、設定を変更しました。
sudo su nano /etc/ssh/sshd_config
次の行を見つけ出し変更する。
PermitRootLogin without-password 変更前 ↓ PermitRootLogin yes 変更後
変更後、sshを再起動する。
service ssh restart
SSHパスワード無し鍵の設定
インストール中に何度もパスワードを入力するのは大変、なのでrootで互いに入れるようにしておきます。
1台目で鍵を作って、それを配ります。
cd ~ ssh-keygen ssh-copy-id root@osmc1 ssh-copy-id root@osmc2 ssh-copy-id root@osmc3
配る為に、最初はパスワードを聞いて来ます。今回だけ頑張って入力してください。
Cephのセットアップ
管理用PCで全て行う
まず、ceph-deployをインストールします。
apt-get install ceph-deploy
次にセットアップデータがカレントに出来る仕様の様なので適当なフォルダーを作ってその中で作業を行う。
cd mkdir ceph cd ceph ceph-deploy new osmc1 osmc2 osmc3 ceph-deploy install osmc1 osmc2 osmc3 arm1 ceph-deploy mon create-initial
これでmonが3台のPCにインストール出来たはずだ。monの状態を確認してみよう。
ceph mon stat
HDD提供開始
osdを設定します。
ceph-deploy osd prepare osmc1:/mnt/sda1 ceph-deploy osd prepare osmc2:/mnt/sda1 ceph-deploy osd prepare osmc3:/mnt/sda1 ceph-deploy osd activate osmc1:/mnt/sda1 ceph-deploy osd activate osmc2:/mnt/sda1 ceph-deploy osd activate osmc3:/mnt/sda1
これでosdの設定が出来ました。osdの状態を確認してみましょう。
ceph osd stat
mdsの設置
mdsを設置します。
ceph-deploy mds create osmc1 osmc2 osmc3
これでmdsの設置が出来ました。mdsの状態を確認してみましょう。
ceph mds stat
最後に全体の状態の確認
mon,osd,mdsの設定が終わったら、全体の確認をします。
ceph health
Cephのコマンドまとめ
全体の状態を見る
全体の状態を見る
ceph health
全体の状態を詳しく見る
ceph health detail
osdの状態を見る
osdの状態を見る
ceph osd stat
osdの状態を詳しく見る
ceph osd tree
monの状態を見る
monの状態を見る
ceph mon stat
mdsの状態を見る
mdsの状態を見る
ceph mds stat
ceph-deployのコマンドまとめ
調査中の為、暫くお待ちください。
CephFSでのマウント
cronでマウント
レプリケーション数を変更するには
標準状態でインストールすると、レプリケーションは3になっていた。
つまり、三重化し耐障害性を高めている。ちょっとやりすぎかも。
そこで、二重化に変更してみた。
ceph osd pool set data size 2 ceph osd pool set metadata size 2 ceph osd pool set rbd size 2
このコマンドで即座に、変更される様だ。ceph -wは、もう使わない?
今回は、poolデータ三種類とも二重化に変更したが、rdbだけ四重化とか出来る。
レプリケーション数は多い方が安全だが、多いと書き込み量が増えて速度が落ちる様だ。
2~3ぐらいでいいでしょう。3から2に変更した事により1.5倍ぐらい速度アップした感じです。
Raspberry Pi での注意事項
OSMCをOSとして使う場合
OSMCの場合、カーネルに問題が有り、CephFSマウントは出来ませんでした。
RaspbianをOSとして使う場合
Raspbian標準のcephパッケージはかなり古いそうです。以下を実行し最新の状態にするとよい。
apt-get update apt-get upgrade wget --no-check-certificate -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add - echo deb http://ceph.com/debian-firefly/ wheezy main | sudo tee /etc/apt/sources.list.d/ceph.list
sources.listの編集
nano /etc/apt/sources.list
変更前
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
変更後
deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi
更に
apt-get update apt-get upgrade apt-get dist-upgrade
Raspbianの場合、カーネルに問題が有りCephFSマウントは出来ませんでした。
カーネルをコンパイルする事により解決するそうですが、コンパイルには12時間ほどかかるらしい。
時計の時刻のズレ
内蔵クロックが無いので起動時に、タイムサーバで調整する様だが、Cephのルールが厳しすぎる。
0.05秒以上のズレはダメみたいです。monサーバ同士で調整し最終的には、ピッタリ一致するようですが、調整に凄く時間がかかります。家の場合、最大5秒のズレがあった様で、調整には30分程度かかりました。
root@arm1:~# ceph health detail HEALTH_WARN clock skew detected on mon.osmc2, mon.osmc3 mon.osmc2 addr 192.168.100.102:6789/0 clock skew 2.42326s > max 0.05s (latency 0.0367512s) mon.osmc3 addr 192.168.100.103:6789/0 clock skew 0.16542s > max 0.05s (latency 0.103259s)