cephadmで作ってみた.
CephはOSの上にcephを構築する手順です. https://docs.ceph.com/en/latest/install/にある「Ceph can also be installed manually.」で行ったもの.
っでここは「RECOMMENDED METHODS」となるCephadmを使って構築したらの巻. docker/podmanなコンテナ技術をベースにその上にcephを構築してます.
OSの上に載せるか、docker/podmanなコンテナ技術の上に載せるかの違いですね. アップデートは後者が楽みたい. っがそもそもおっかなくてupdateなんてしたくないなぁ〜な本音があるけど.
っで構成表
ホスト名 | 役目 | IPアドレス | backend | OS | ストレージ | CPU threads |
ceph01 | Ceph Manager Ceph Metadata Server Ceph Monitor | 192.168.0.47/24 | Rockylinux9.4 | system(16GB) /var/lib/ceph(8GB,monitor) | 8 threads(monitor:4+metadata:2+manager:1+ ほか) | |
ceph02 | Ceph Manager Ceph Metadata Server Ceph Monitor | 192.168.0.48/24 | system(16GB) /var/lib/ceph(8GB,monitor) | 8 threads(monitor:4+metadata:2+manager:1+ ほか) | ||
ceph-osd1 | Ceph OSDs Ceph Monitor | 192.168.0.49/24 | 10.10.10.49/24 | system(16GB) /var/lib/ceph(8GB,monitor) OSD(50GB:SSD:meta) OSD(50GB:HDD:data) | 7 threads(moitor:4t+osd:2[ssd]*1+osd:1[hdd]*1) | |
ceph-osd2 | Ceph OSDs | 192.168.0.50/24 | 10.10.10.50/24 | system(16GB) OSD(50GB:SSD:meta) OSD(50GB:HDD:data)+OSD(50GB:HDD:data)+OSD(40GB:SSD:block)+OSD(20GB:SSD:wal) | 4 threads(osd:2[ssd]*1+osd:1[hdd]*2) | |
ceph-osd3 | Ceph OSDs | 192.168.0.51/24 | 10.10.10.51/24 | system(16GB) OSD(50GB:SSD:meta) OSD(50GB:HDD:data)+OSD(50GB:HDD:data)+OSD(50GB:HDD:data)+OSD(60GB:SSD:block) | 5 threads(osd:2[ssd]*1+osd:1[hdd]*3) |
要求threadsはOSDで1つのssdあたり2つ、hddなら1つ. Monitorなら追加で4つ. monitorは4.metadataは2. managerは1としてます.
参照https://www.redbooks.ibm.com/redpieces/pdfs/redp5721.pdf
メモ Ceph/cephadm/memo
nfs Ceph/cephadm/nfs
smb Ceph/cephadm/smb
cephのクライアント以外の全てのceph関連ノードに podman と lvm2 を入れます. podmanの代わりにdockerでも構いません. その際はpodmanは削除します
dnf install podman lvm2 -y
*SELinuxとfirewalldは有効のままでもいいみたい.
cephadmで構築を進めるのですが、Rockylinux9にcephadmパッケージを含むリポジトリ「centos-release-ceph-squid」が使えそうなのでそれを使います. リポジトリの中身は「dnf list available --disablerepo=* --enablerepo=centos-ceph-squid」で確認可
[root@ceph01 ~]# dnf install centos-release-ceph-squid.noarch -y
[root@ceph01 ~]# dnf install cephadm python3-jinja2 python3-pyyaml -y
[root@ceph01 ~]# cephadm version
cephadm version 19.2.2 (0eceb0defba60152a8182f7bd87d164b639885b8) squid (stable)
[root@ceph01 ~]#
っでcephクラスターを作るのですが、cephadmを実行するとそのノードは Ceph Manager 兼 Ceph Monitor ノードになります.
同時に「cluster network」を指定できて、この「cluster network」はOSDデーモン間のレプリケーション、リカバリ、ハートビート向けの回線となる
cephクライアントとかへの本業サービス向けを「public network」というみたい
dashboard-password-noupdateで初回時強制パスワード変更を回避できます
initial-dashboard-passwordで初期パスワードを定義できます. ここでは admin としてます
skip-monitoring-stackでmonitoringなサービス(prometheus, grafana, alertmanager, node-exporter)の構築がskipします
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.0.47 --cluster-network 10.10.10.0/24 --dashboard-password-noupdate --initial-dashboard-password adminpass
:
(数分かかる. この間にpodmanは(docker)イメージを取得して各種コンテナを起動します)
:
Ceph Dashboard is now available at:
URL: https://ceph01.sybyl.local:8443/
User: admin
Password: adminpass
:
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 4ce725c6-eb0d-11ef-980a-bc24112ffd94
[global]
fsid = 4ce725c6-eb0d-11ef-980a-bc24112ffd94
mon_host = [v2:192.168.0.47:3300/0,v1:192.168.0.47:6789/0]
[root@ceph01 ~]#
[root@ceph01 ~]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBTn69n56mfHhAAyWLweVu2d+tiRVXziBQA+g==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[root@ceph01 ~]#
[root@ceph01 ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
194ea598beb8 quay.io/ceph/ceph:v19 -n mon.ceph01 -f ... 4 minutes ago Up 4 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-mon-ceph01
41ccb729d616 quay.io/ceph/ceph:v19 -n mgr.ceph01.ocy... 4 minutes ago Up 4 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-mgr-ceph01-ocyoth
8947d2cc21b0 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.ceph-ex... 3 minutes ago Up 3 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-ceph-exporter-ceph01
44f36542aa6e quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.crash.c... 3 minutes ago Up 3 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-crash-ceph01
f6443e798c84 quay.io/prometheus/node-exporter:v1.7.0 --no-collector.ti... 3 minutes ago Up 3 minutes 9100/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-node-exporter-ceph01
1d1c8f0f7845 quay.io/prometheus/prometheus:v2.51.0 --config.file=/et... 2 minutes ago Up 2 minutes 9090/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-prometheus-ceph01
80c2ecd947c4 quay.io/prometheus/alertmanager:v0.25.0 --cluster.listen-... About a minute ago Up About a minute 9093/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-alertmanager-ceph01
9751d2482439 quay.io/ceph/grafana:10.4.0 About a minute ago Up About a minute 3000/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-grafana-ceph01
[root@ceph01 ~]#
この段階でDashboardにアクセスできます.
設定ファイルとキーリングがあれば「cephadm shell」経由でコンテナ内でコマンドが実行できる.
例えば「ceph -s」は「cephadm shell -- ceph -s」とする. っが面倒. 「ceph-common」パッケージを入れれば「cephadm shell」を使わずダイレクトに「ceph」コマンドが使える.
[root@ceph01 ~]# cephadm add-repo --release squid <-- 「/etc/yum.repos.d/」にceph.repo , epel.repo らが追加される
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.
[root@ceph01 ~]# cephadm install ceph-common
Installing packages ['ceph-common']...
[root@ceph01 ~]# ceph -s
(「cephadm shell -- ceph -s」と同義)
作りたての状態では
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 6m)
mgr: ceph01.ocyoth(active, since 3m)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
健康状態(health)はOSDが3つ以上ないので警告状態とある. monとmgrは共にceph01が担当の様子.
一応dashboardからみるとこんな感じ 自動的にfirewallを調整してportを追加してくれます
cephクラスターの仕様を調整します. まずは初期のサービス構成を出力してみる
[root@ceph01 ~]# ceph orch ls --export
:
---
service_type: mgr
service_name: mgr
placement:
count: 2
---
service_type: mon
service_name: mon
placement:
count: 5
---
:
[root@ceph01 ~]#
とmonが5つ、mgrが2つを想定している. ここでcephにホスト追加すると勝手にサービス(monitor, manager, osd)を順次登録してしまう. 必要な数だけ.
なので初めにそれらが機能しないように制限を加えます
[root@ceph01 ~]# ceph orch set-unmanaged mon
[root@ceph01 ~]# ceph orch set-unmanaged mgr
[root@ceph01 ~]# ceph orch apply osd --all-available-devices --unmanaged=true
この変更で各サービスの構成に「unmanaged: true」が追加される 確認は「ceph orch ls --export」で
追加対象のホストはpodman/dockerが入っている事が前提. っで初めのceph01マシンからrootで操作されるようにsshキー(/etc/ceph/ceph.pub)を各計算機に入れる必要があります. 「/root/.ssh/authorized_keys」にキーが追加されます
(ceph02での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02 * ssh-copy-id コマンドは openssh-clients パッケージに存在する普通のプログラム.
その後に追加作業を行います
[root@ceph01 ~]# ceph orch host add ceph02 192.168.0.48 *「ceph orch host add ceph02」でも可. ipはfile,dnsから取れるみたい.
(これでssh経由で相手先[ceph02]に必要なコンテナが用意されます)
(確認)
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48 <--- 追加されました
2 hosts in cluster
[root@ceph01 ~]#
と新規ホスト ceph02 が登録されましたが、この時点ではceph02にはまだ役割が与えられてないです
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum ceph01 (age 11m)
mgr: ceph01.ocyoth(active, since 9m)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
[root@ceph01 ~]#
ceph02側では下記のコンテナが動いてます
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abd4ee012633 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.ceph-ex... 2 minutes ago Up 2 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-ceph-exporter-ceph02
9f578867c476 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.crash.c... 2 minutes ago Up 2 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-crash-ceph02
c45b9da15c29 quay.io/prometheus/node-exporter:v1.7.0 --no-collector.ti... 2 minutes ago Up 2 minutes 9100/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-node-exporter-ceph02
[root@ceph02 ~]#
ここでは ceph01とceph02 には Ceph Manager と Ceph Monitor と Ceph Metadata Server の役目を負わせることにしました.
ceph02にCeph Manager の役目を持たせるために、managerの構成表のみを書き出して修正を加えます. 「count」指定を「hosts」にしてmanagerが動くホストを指名します. 加えて「extra_container_args」で使用するcpu数を制限させます.
単に「ceph orch apply mgr --placement="ceph01,ceph02"」でもいいのですが、「extra_container_args」の指定方法がないので mgr.yaml で定義して反映させてます.
[root@ceph01 ~]# ceph orch ls --service_name=mgr --export > mgr.yaml
[root@ceph01 ~]# cat mgr.yaml
service_type: mgr
service_name: mgr
placement:
count: 2
unmanaged: true
[root@ceph01 ~]# vi mgr.yaml
service_type: mgr
service_name: mgr
placement:
hosts: <-- ここ以下を修正します
- ceph01
- ceph02
extra_container_args:
- "--cpus=1"
[root@ceph01 ~]# ceph orch apply -i mgr.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mgr.yaml
すると ceph02 で mgr のコンテナが自動的に用意される
[root@ceph02 ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abd4ee012633 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.ceph-ex... 6 minutes ago Up 6 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-ceph-exporter-ceph02
9f578867c476 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.crash.c... 6 minutes ago Up 6 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-crash-ceph02
c45b9da15c29 quay.io/prometheus/node-exporter:v1.7.0 --no-collector.ti... 6 minutes ago Up 6 minutes 9100/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-node-exporter-ceph02
ad3cf182f0e6 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n mgr.ceph02.uui... 2 minutes ago Up 2 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-mgr-ceph02-uuiyno
[root@ceph02 ~]#
そして「ceph -s」の出力でも mgr として ceph02 が加わってstandbys状態に入りました.
[root@ceph01 ~]# ceph -s
:
services:
mon: 1 daemons, quorum ceph01 (age 16m)
mgr: ceph01.ocyoth(active, since 13m), standbys: ceph02.uuiyno <-- ここ. ceph01.ocyothの「ocyoth」はランダム文字列みたい.
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
Ceph Metadata Serverの役割付与は OSD の設定後にします.
まだmonを3つ作ってませんが、その構成員となる ceph-osd1 を加えます.
加え方は ceph02 と同じように事前にpodman/dockerらを入れて、ceph01から追加作業を行います
(ceph-osd1での事前措置)
dnf install podman lvm2 -y
----ここまで----
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd1
そしてceph-osd1をcephに参加させます
[root@ceph01 ~]# ceph orch host add ceph-osd1 192.168.0.49
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49 <--- 追加されました
3 hosts in cluster
[root@ceph01 ~]#
参加とともに自動的にpodman/dokcerコンテナが用意されます.
[root@ceph-osd1 ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb74264a7d9b quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.ceph-ex... 2 minutes ago Up 2 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-ceph-exporter-ceph-osd1
bf5fbc1b0b48 quay.io/ceph/ceph@sha256:41d3f5e46ff7de28544cc8869fdea13fca824dcef83936cb3288ed9de935e4de -n client.crash.c... 2 minutes ago Up 2 minutes ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-crash-ceph-osd1
aa870e47cf6c quay.io/prometheus/node-exporter:v1.7.0 --no-collector.ti... 2 minutes ago Up 2 minutes 9100/tcp ceph-4ce725c6-eb0d-11ef-980a-bc24112ffd94-node-exporter-ceph-osd1
[root@ceph-osd1 ~]#
ここでmonを提供するマシンが3台揃ったので、monitorを設定します
[root@ceph01 ~]# ceph orch ls --service_name=mon --export > mon.yaml
[root@ceph01 ~]# cat mon.yaml
service_type: mon
service_name: mon
placement:
count: 5
unmanaged: true
[root@ceph01 ~]# vi mon.yaml
service_type: mon
service_name: mon
placement:
hosts:
- ceph01
- ceph02
- ceph-osd1
extra_container_args:
- "--cpus=4"
[root@ceph01 ~]# ceph orch apply -i mon.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mon.yaml
これでceph02とceph-osd1にmonのコンテナが追加されます
「ceph -s」で確認するとこんな感じ
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 3s) <-- ceph01, ceph02, ceph-osd1 と3つ揃いました.
mgr: ceph01.ocyoth(active, since 20m), standbys: ceph02.uuiyno
osd: 0 osds: 0 up, 0 in
:
[root@ceph01 ~]#
一応dashboardの「Administration -> Services」では下記のように表示される
ceph-osd2とceph-osd3 を参加させます.
ceph-osd1と同じようにpodman/dockerを入れておきます「dnf install podman lvm2 -y」. その上で
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd2
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd3
[root@ceph01 ~]# ceph orch host add ceph-osd2 192.168.0.50
[root@ceph01 ~]# ceph orch host add ceph-osd3 192.168.0.51
[root@ceph01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.0.47 _admin
ceph02 192.168.0.48
ceph-osd1 192.168.0.49
ceph-osd2 192.168.0.50
ceph-osd3 192.168.0.51
5 hosts in cluster
[root@ceph01 ~]#
ceph-osd2, ceph-osd3それぞれpodman/dockerが自動的にデプロイされて動きます
前段で「ceph orch apply osd --all-available-devices --unmanaged=true」としたので OSDsは自動登録させないようにしてます
osdに関しては、osd1つに2 threads 持たせたいのでまずはその修正を行います
[root@ceph01 ~]# ceph orch ls --service_type=osd --export > osd.yaml
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: all-available-devices
service_name: osd.all-available-devices
placement:
host_pattern: '*'
unmanaged: true
spec:
data_devices:
all: true
filter_logic: AND
objectstore: bluestore
extra_container_args:
- "--cpus=2"
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i osd.yaml
また、osd.yamlで10TB-12TBのHDDは「data_devices」として、SSDは「db_devices」、250GBのSSDは「wal_devices」と定義もできますが、ミスったら嫌なので個別指定にしたいと思います
bluestoreで作成するのですが、data_devices(HDDね)のみ指定するのもあれば、WAL(wal_devices)/DB(db_devices)デバイスを駆使した作成もできる
下記は"例"としてOSDの作り方を示します. 本来なら同じdata_devices, block.db, block.wal を持たせるのかなと. デバイスがHDDかSSDかは「cat /sys/block/sdc/queue/rotational」で確認できます
(ceph-osd1: /dev/sdc[SSD(meta)], /dev/sdd[HDD(data)] をそれぞれosdとして登録)
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd1:data_devices=/dev/sdc,/dev/sdd <-- OSDが2つ作られます. block.db と block.wal は用意してません
(ceph-osd2: /dev/sdb[SSD(meta)]はそのままosdとして登録. /dev/sdc[HDD(data)]と/dev/sdd[HDD(data)]は /dev/sde[SSD(db)] をblock.db、/dev/sdf[SSD(wal)]をblock.walとしてosdを作る. BlueStoreを活用してます)
(wal_deveiceは事前にdata_device分だけ領域を作っておく必要があります. パーティションかLVMで作っておきます)
(ここでは /dev/sdfがwal_deviceで2つのdata_device(sdcとsdd)向けに作るので2分割です)
[root@ceph-osd2 ~]# pvcreate /dev/sdf
[root@ceph-osd2 ~]# vgcreate wal /dev/sdf
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG wal
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG wal
(そのうえでceph01から操作します)
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_devices=/dev/sdc,/dev/sdd,db_devices=/dev/sde,wal_devices=/dev/wal/0,/dev/wal/1 <-- db_devicesは自動的にdata_device数に等分割されます
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd2:data_devices=/dev/sdb
(ceph-osd3: /dev/sd[bcd]がdata_device[data]で/dev/sdeが3つのdata_device[data]のblock.db、そして/dev/sdfはdata_device[meta]としてます. block.walは用意しないです)
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_devices=/dev/sdb,/dev/sdc,/dev/sdd,db_devices=/dev/sde
[root@ceph01 ~]# ceph orch daemon add osd ceph-osd3:data_devices=/dev/sdf
この後に ceph-osdXでosdのコンテナが立ち上がります.
状況は下記になります
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.53714 root default
-3 0.09760 host ceph-osd1
1 hdd 0.04880 osd.1 up 1.00000 1.00000
0 ssd 0.04880 osd.0 up 1.00000 1.00000
-7 0.18558 host ceph-osd2
2 hdd 0.06839 osd.2 up 1.00000 1.00000
3 hdd 0.06839 osd.3 up 1.00000 1.00000
4 ssd 0.04880 osd.4 up 1.00000 1.00000
-10 0.25397 host ceph-osd3
5 hdd 0.06839 osd.5 up 1.00000 1.00000
6 hdd 0.06839 osd.6 up 1.00000 1.00000
7 hdd 0.06839 osd.7 up 1.00000 1.00000
8 ssd 0.04880 osd.8 up 1.00000 1.00000
[root@ceph01 ~]# ceph orch device ls
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
ceph01 /dev/sr0 hdd QEMU_DVD-ROM_QM00003 10.7G No 11m ago Has a FileSystem
ceph-osd1 /dev/sdc ssd QEMU_HARDDISK_drive-scsi2 50.0G No 6m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd1 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50.0G No 6m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd2 /dev/sdb ssd QEMU_HARDDISK_drive-scsi1 50.0G No 3m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd2 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50.0G No 3m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd2 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50.0G No 3m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd2 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 40.0G No 3m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd2 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 20.0G No 3m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd3 /dev/sdb hdd QEMU_HARDDISK_drive-scsi1 50.0G No 68s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd3 /dev/sdc hdd QEMU_HARDDISK_drive-scsi2 50.0G No 68s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd3 /dev/sdd hdd QEMU_HARDDISK_drive-scsi3 50.0G No 68s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd3 /dev/sde ssd QEMU_HARDDISK_drive-scsi4 60.0G No 68s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
ceph-osd3 /dev/sdf ssd QEMU_HARDDISK_drive-scsi5 50.0G No 68s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
[root@ceph01 ~]#
デバイスの性格からCLASSが自動的に割り当てられます. 規定で[HDD]と[SSD]が用意されている. 手動で変更を望むなら「ceph osd crush set-device-class hdd|ssd osd.X」と実行する
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 5h)
mgr: ceph01.nuffcu(active, since 6h), standbys: ceph02.foawmo
osd: 9 osds: 9 up (since 11m), 9 in (since 12m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 100 GiB used, 449 GiB / 550 GiB avail
pgs: 1 active+clean
[root@ceph01 ~]#
OSDを用意すると勝手にpool(.mgr)が作られる. 「ceph osd lspools」で得られます
次にサービス配置の最後にmdsを加えますが、これはプール(後述)を作成してその後に「ceph fs new <fs_name> <metadata> <data>」の後で定義する
追加作業していないのに以前の情報を残したストレージには「wipefs」コマンドで対処する. その後「ceph orch device zap ceph-osd3 /dev/sdb --force」で消して再度追加します
OSDのサービス構成(osd.yaml)を修正して適用する方法もある.
前段は個別に手動でHDD/SSDらを組み込んでいるが、ほぼ同じ構成のOSD nodeならcephに追加したと同時にHDD/SSDらが登録されるのが楽. あとミスも減る.
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 5/5 9m ago 8h *
mgr 2/2 9m ago 6h ceph01;ceph02
mon 3/3 9m ago 8h ceph01;ceph02;ceph-osd1
osd.all-available-devices 0 - 8h <unmanaged>
[root@ceph01 ~]# ceph orch rm osd.all-available-devices
Removed service osd.all-available-devices
[root@ceph01 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 5/5 5s ago 8h *
mgr 2/2 5s ago 6h ceph01;ceph02
mon 3/3 5s ago 8h ceph01;ceph02;ceph-osd1
[root@ceph01 ~]#
[root@ceph01 ~]# vi osd.yaml
service_type: osd
service_id: ceph-osd1-ssd
service_name: osd.ceph-osd1-ssd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 0
---
service_type: osd
service_id: ceph-osd1-hdd
service_name: osd.ceph-osd1-hdd
placement:
hosts:
- ceph-osd1
spec:
data_devices:
rotational: 1
---
service_type: osd
service_id: ceph-osd2-ssd
service_name: osd.ceph-osd2-ssd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdb
---
service_type: osd
service_id: ceph-osd2-hdd
service_name: osd.ceph-osd2-hdd
placement:
hosts:
- ceph-osd2
spec:
data_devices:
paths:
- /dev/sdc
- /dev/sdd
db_devices:
paths:
- /dev/sdf
wal_devices:
paths:
- /dev/sde
---
service_type: osd
service_id: ceph-osd3-ssd
service_name: osd.ceph-osd3-ssd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdf
---
service_type: osd
service_id: ceph-osd3-hdd
service_name: osd.ceph-osd3-hdd
placement:
hosts:
- ceph-osd3
spec:
data_devices:
paths:
- /dev/sdb
- /dev/sdc
- /dev/sdd
wal_devices:
paths:
- /dev/sde
[root@ceph01 ~]#
とhost毎にPATHまで指定して定義してますが、同じ構成のOSDなら「placement:」を「host_pattern: 'ceph-osd*'」とかでパターンにして定義することも可能です.
っで作った仕様をテストしてみます
[root@ceph01 ~]# ceph orch apply -i osd.yaml --dry-run
(略
################
OSDSPEC PREVIEWS
################
+---------+---------------+-----------+----------+----------+----------+
|SERVICE |NAME |HOST |DATA |DB |WAL |
+---------+---------------+-----------+----------+----------+----------+
|osd |ceph-osd1-ssd |ceph-osd1 |/dev/sdc |- |- |
|osd |ceph-osd1-hdd |ceph-osd1 |/dev/sdd |- |- |
|osd |ceph-osd2-ssd |ceph-osd2 |/dev/sdb |- |- |
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdc |/dev/sdf |/dev/sde |
|osd |ceph-osd2-hdd |ceph-osd2 |/dev/sdd |/dev/sdf |/dev/sde |
|osd |ceph-osd3-ssd |ceph-osd3 |/dev/sdf |- |- |
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdb |- |/dev/sde |
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdc |- |/dev/sde |
|osd |ceph-osd3-hdd |ceph-osd3 |/dev/sdd |- |/dev/sde |
+---------+---------------+-----------+----------+----------+----------+
[root@ceph01 ~]#
と意図したようにblueStoreが出来そうなので「--dry-run」を外して適用します
[root@ceph01 ~]# ceph orch apply -i osd.yaml
Scheduled osd.ceph-osd1-ssd update...
Scheduled osd.ceph-osd1-hdd update...
Scheduled osd.ceph-osd2-ssd update...
Scheduled osd.ceph-osd2-hdd update...
Scheduled osd.ceph-osd3-ssd update...
Scheduled osd.ceph-osd3-hdd update...
[root@ceph01 ~]#
cephFSの作成には「データ用」「メタデータ用」の2つのプールが必要です。
そしてプールの作成には、「HDD由来」、「SSD由来」とデバイスの違いでの作成や、データ冗長性を定めるpool typeとしての「replicated」「erasure-coded」方法があり、これらの組み合わせでプールを作ります.
まずここでは「メタデータ用」には「SSD由来」で「replicated」を適用します. メタ情報は迅速に読ませたいので「SSD由来」のデバイスで作ります. メタデータ向けのpool typeは目下「replicated」しか対応していない
そのためのCRUSH配置ルールを作ります
[root@ceph01 ~]# ceph osd crush rule create-replicated meta-ssd default host ssd
ceph osd crush rule create-replicated NAME ROOT FAILURE_DOMAIN CLASS
*NAME: 名称
*ROOT: CRUSH 階層のルート
*FAILURE_DOMAIN: 障害ドメイン, 切り分け. host とか rack とか.
*CLASS: ストレージデバイスクラス. hdd とか ssd とか.
[root@ceph01 ~]# ceph osd crush rule ls
障害ドメインを「host」にすると「ceph config get osd osd_pool_default_size」の値は規定で3なので3台のOSDが必要となります
「データ用」には「replicated」で行うとストレージの1/3しか使えなくなるので、容量効率のために「erasure-coded」をpool typeとして使います.
「erasure-coded」はRAID5/6な感じで パリティー ブロックが用意されます. データ2つに1つのパリティ、データ5つに2つのパリティとか用意できる. 5つに2つなら 5/7 な実容量. 10個で2つなら 10/12 となる. OSDノード数分にデータを分散させ、停止していいノード数をパリティとか
既定の「erasure-coded」は
[root@ceph01 ~]# ceph osd erasure-code-profile get default
k=2
m=2
plugin=jerasure
technique=reed_sol_van
[root@ceph01 ~]#
と2つのデータに2つのパリティを用意することになっていて、2/4の実容量でしょうか. ここではosdが3台なのでデータ2(k)、パリティ1(m)なイレイジャーコードプロファイルを作ります. あとこのルールを使うとストレージはHDDのみとさせます.
ほかの例: https://www.redbooks.ibm.com/redpieces/pdfs/redp5721.pdfの94ページ.
[root@ceph01 ~]# ceph osd erasure-code-profile set k2-m1-profile k=2 m=1 crush-failure-domain=host crush-device-class=hdd
[root@ceph01 ~]# ceph osd erasure-code-profile ls
default
k2-m1-profile
[root@ceph01 ~]#
「メタデータ用」プールには、 レプリカの crush rule「meta-ssd」でプールを作り
「データ用」プールには、erasure-codedのイレイジャーコードプロファイル「k2-m1-profile」でHDD由来のプールを作ることにします
OSDを組み込むと「.mgr」といわれるcephシステム側のpoolが作成される. これはそのままとして
[root@ceph01 ~]# ceph osd lspools
1 .mgr
[root@ceph01 ~]#
まず「メタデータ用」プールを作る
[root@ceph01 ~]# ceph osd pool create emfs-meta 64 meta-ssd
pool 'emfs-meta' created
[root@ceph01 ~]#
「64」はpg_num. 詳細は難しい. 参照https://docs.ceph.com/en/reef/rados/operations/placement-groups/#placement-groups とか https://www.ibm.com/docs/ja/storage-ceph/7?topic=groups-placement-group-count
,https://documentation.suse.com/ja-jp/ses/7.1/html/ses-all/ceph-pools.html
次に「データ用」のプールを作成します.
こちらはイレイジャーコードを使い、先ほど作成した「k2-m1-profile」で作ります
[root@ceph01 ~]# ceph osd pool create emfs-data erasure k2-m1-profile
pool 'emfs-data' created
[root@ceph01 ~]# ceph osd pool ls (「ceph osd lspools」でも同様の結果が表示される)
.mgr
emfs-meta
emfs-data
[root@ceph01 ~]# ceph osd pool set emfs-data allow_ec_overwrites true <-- cephfsの場合これが必要
[root@ceph01 ~]# ceph osd pool set emfs-data bulk true
SSDだけのosdで構築したpoolはメタデータ用向けに最適です
次に作ったpoolの性格を充てます. cephfsにはcephfs、RBD向けならrbd, RGWならrgwと.
[root@ceph01 ~]# ceph osd pool application enable emfs-meta cephfs
enabled application 'cephfs' on pool 'emfs-meta'
[root@ceph01 ~]# ceph osd pool application enable emfs-data cephfs
enabled application 'cephfs' on pool 'emfs-data'
[root@ceph01 ~]#
各poolの詳細は「ceph osd pool get <pool名> all」で得られる. 各項目の値はhttps://documentation.suse.com/ja-jp/ses/7.1/html/ses-all/ceph-pools.html#ceph-pools-values参照
[root@ceph01 ~]# ceph osd pool get emfs-data all
size: 3
min_size: 2
pg_num: 1
pgp_num: 1
crush_rule: emfs-data
hashpspool: true
allow_ec_overwrites: true
nodelete: false
nopgchange: false
nosizechange: false
write_fadvise_dontneed: false
noscrub: false
nodeep-scrub: false
use_gmt_hitset: 1
erasure_code_profile: k2-m1-profile
fast_read: 0
pg_autoscale_mode: on
eio: false
bulk: true
[root@ceph01 ~]#
ここで様子を見ると
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 16h)
mgr: ceph01.ocyoth(active, since 16h), standbys: ceph02.uuiyno
osd: 8 osds: 8 up (since 10h), 8 in (since 10h)
data:
pools: 3 pools, 66 pgs
objects: 2 objects, 577 KiB
usage: 291 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
となる
https://docs.ceph.com/en/latest/cephfs/createfs/
ようやく下準備が完了して、ファイルシステムを作ります
まずはMDSサービスをデプロイします
[root@ceph01 ~]# vi mds.yaml
service_type: mds
service_id: emfs <-- 作成するファイルシステム名を記載します
placement:
hosts:
- ceph01
- ceph02
[root@ceph01 ~]# ceph orch apply -i mds.yaml --dry-run
[root@ceph01 ~]# ceph orch apply -i mds.yaml
(mdsのコンテナ状態を確認)
[root@ceph01 ~]# ceph orch ps --daemon_type=mds
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
mds.emfs.ceph01.datuel ceph01 running (16s) 13s ago 16s 15.2M - 19.2.2 f2efb0401a30 9cc691407ece
mds.emfs.ceph02.kicdez ceph02 running (18s) 14s ago 18s 15.2M - 19.2.2 f2efb0401a30 a2d63395b0b1
[root@ceph01 ~]#
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data <--これでファイルシステムを作成します
Error EINVAL: pool 'emfs-data' (id '3') is an erasure-coded pool. Use of an EC pool for the default data pool is discouraged; see the online CephFS documentation for more information. Use --force to override.
[root@ceph01 ~]#
とエラーが言われる. cephfsは「replicated」で用意されたdata/metaが基本としていて、そっちの方が早いそうな. っが、大容量を賄いたいので「erasure-coded」を使っている. その場合は「--force」を用いることが必要みたい.
[root@ceph01 ~]# ceph fs new emfs emfs-meta emfs-data --force
もし
Pool 'emfs-data' (id '3') has pg autoscale mode 'on' but is not marked as bulk.
Consider setting the flag by running
# ceph osd pool set emfs-data bulk true
new fs with metadata pool 2 and data pool 3
と言われたら「ceph osd pool set emfs-data bulk true」を実行してmefs-dataのbulkを有効にして再度「ceph fs new emfs emfs-meta emfs-data --force」を実施します.
なぜ必要かはPGを理解する必要があるかも. https://docs.ceph.com/en/reef/rados/operations/placement-groups/
[root@ceph01 ~]# ceph fs ls
name: emfs, metadata pool: emfs-meta, data pools: [emfs-data ]
[root@ceph01 ~]# ceph -s
:
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 18h)
mgr: ceph01.ocyoth(active, since 18h), standbys: ceph02.uuiyno
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 12h), 8 in (since 12h)
:
[root@ceph01 ~]#
mdsを複数用意することが求められる. MDSのフェイルオーバーです. 用意できないなら
ceph fs set emfs standby_count_wanted 0
ceph fs set cephfs standby_count_wanted 0
でその警告は停止します
*バックエンドの「10.10.10.x」に接続する必要はありません.
cephのパッケージをインストールします. rockylinux8ならrpmbuildでパッケージを作る必要あり Ceph/cephadm/memo#z560055c
(rockylinux9なら)
dnf install centos-release-ceph-squid.noarch epel-release -y
dnf install ceph-common -y
その後「ceph 構成ファイル」(/etc/ceph/ceph.conf) と「キーリング」を用意します.
「ceph 構成ファイル」はcephadmが実行できる場所で作らせて、クライアントに「/etc/ceph/ceph.conf」として配置させる.
[root@ceph-client ~]# ssh root@ceph01 "ceph config generate-minimal-conf" | tee /etc/ceph/ceph.conf
(中身は)
[root@ceph-client ~]# cat /etc/ceph/ceph.conf
# minimal ceph.conf for 4ce725c6-eb0d-11ef-980a-bc24112ffd94
[global]
fsid = 4ce725c6-eb0d-11ef-980a-bc24112ffd94
mon_host = [v2:192.168.0.49:3300/0,v1:192.168.0.49:6789/0] [v2:192.168.0.47:3300/0,v1:192.168.0.47:6789/0] [v2:192.168.0.48:3300/0,v1:192.168.0.48:6789/0]
[root@ceph-client ~]#
「キーリング」は
「ceph fs authorize <filesystem> client.<CephX user> / rw」で得られる. <filesystem>はここではemfs. <CephX user>はPOSIXアカウントとは関係なく r9 としてみた.
[root@ceph-client ~]# ssh root@ceph01 "ceph fs authorize emfs client.r9 / rwp" | tee /etc/ceph/ceph.client.r9.keyring
[client.r9]
key = AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA==
caps mds = "allow rwp fsname=emfs"
caps mon = "allow r fsname=emfs"
caps osd = "allow rw tag cephfs data=emfs"
[root@ceph-client ~]#
*quotaを使うなら「p」を追加して「rwp」とします.
「キーリング」が入ったファイル名は上記の「ceph.client.r9.keyring」か「ceph.keyring」にします.
っでmount
[root@ceph-client ~]# mkdir -p /emfs
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:6789,ceph-osd1:6789:/ /emfs -o name=r9,fs=emfs
(とか)
[root@ceph-client ~]# mount -t ceph ceph01:6789,ceph02:6789,ceph-osd1:6789:/ /emfs -o nowsync,name=r9,fs=emfs <--非同期オプション
(とか)
[root@ceph-client ~]# mount -t ceph r9@.emfs=/ /emfs
[root@ceph-client ~]# df -Tht ceph
Filesystem Type Size Used Avail Use% Mounted on
192.168.0.47:6789,192.168.0.48:6789,192.168.0.49:6789:/ ceph 253G 0 253G 0% /emfs
[root@ceph-client ~]#
*rockylinux9とかkernelが新しいと「r9@4ce725c6-eb0d-11ef-980a-bc24112ffd94.emfs=/」がmount先の表記になります
autofsでの表記は下記になります
[root@ceph-client ~]# cat /etc/auto.master
/- /etc/auto.home --timeout=60
[root@ceph-client ~]# cat /etc/auto.home
/emfs -fstype=ceph r9@.emfs=/
[root@ceph-client ~]#
/etc/fstabでmount表記なら
[root@ceph-client ~]# cat /etc/fstab
:
r9@.emfs=/ /emfs ceph rw 0 0
[root@ceph-client ~]#
作成した「キーリング」は「ceph auth ls」で確認できます
[root@ceph01 ~]# ceph auth ls
: ("ceph fs authorize emfs client.r9 / rwp"の場合)
client.r9 [client.r9]
key: AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA== key = AQDUEsNn70N+LhAAYU16+oki2YWAk/40VZRwsA==
caps: [mds] allow rwp fsname=emfs caps mds = "allow rwp fsname=emfs"
caps: [mon] allow r fsname=emfs caps mon = "allow r fsname=emfs"
caps: [osd] allow rw tag cephfs data=emfs caps osd = "allow rw tag cephfs data=emfs"
:
[root@ceph01 ~]#
削除は「ceph auth rm client.r9」で行えます.
クライアント側に置かれる「ceph.client.r9.keyring」とフォーマットが若干異なります,
1. cephを利用しているクライアントを全てシャットダウン.
2. 「ceph -s」でhealthが「HEALTH_OK」でかつ、pgsの値がすべて「active+clean」であることを確認
3-1. ceph-mdsのフェイルオーバーを先を1つにする
[root@ceph01 ~]# ceph fs set emfs max_mds 1
3-2. ファイルシステムを停止させる(その1)
[root@ceph01 ~]# ceph fs fail emfs
emfs marked not joinable; MDS cannot join the cluster. All MDS ranks marked failed.
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
↓
mds: 0/1 daemons up (1 failed), 2 standby
:
[root@ceph01 ~]#
3-3. ファイルシステムを停止させる(その2)
[root@ceph01 ~]# ceph fs set emfs joinable false
emfs marked not joinable; MDS cannot join as newly active.
[root@ceph01 ~]#
4. OSDの機能停止
[root@ceph01 ~]# ceph osd set noout
[root@ceph01 ~]# ceph osd set norecover
[root@ceph01 ~]# ceph osd set norebalance
[root@ceph01 ~]# ceph osd set nobackfill
[root@ceph01 ~]# ceph osd set nodown
[root@ceph01 ~]# ceph osd set pause
[root@ceph01 ~]# ceph -s
:
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
↓
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 38h), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,norebalance,norecover
:
[root@ceph01 ~]#
5. OSDホストを順次停止
[root@ceph01 ~]# ssh root@ceph-osd1 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd2 "shutdown -h now"
[root@ceph01 ~]# ssh root@ceph-osd3 "shutdown -h now"
6. MONホストを順次停止
[root@ceph01 ~]# ssh root@ceph02 "shutdown -h now"
7. MGRホストを停止
[root@ceph01 ~]# shutdown -h now
前段の逆を行います
1. MGRホストをboot
2. MONホストをboot
3. OSDホストをboot
4. MGRホストにてOSDの各種機能を有効化
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
pauserd,pausewr,nodown,noout,nobackfill,norebalance,norecover flag(s) set
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 6m)
mgr: ceph01.ocyoth(active, since 6m), standbys: ceph02.uuiyno
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 6m), 8 in (since 38h)
flags pauserd,pausewr,nodown,noout,nobackfill,norebalance,norecover
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 1.0 GiB used, 399 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph01 ~]#
[root@ceph01 ~]# ceph osd unset noout
[root@ceph01 ~]# ceph osd unset norecover
[root@ceph01 ~]# ceph osd unset norebalance
[root@ceph01 ~]# ceph osd unset nobackfill
[root@ceph01 ~]# ceph osd unset nodown
[root@ceph01 ~]# ceph osd unset pause
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_ERR
1 filesystem is degraded
1 filesystem is offline
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 8m)
mgr: ceph01.ocyoth(active, since 8m), standbys: ceph02.uuiyno
mds: 0/1 daemons up (1 failed), 2 standby
osd: 8 osds: 8 up (since 8m), 8 in (since 38h)
data:
volumes: 0/1 healthy, 1 failed
pools: 3 pools, 66 pgs
objects: 24 objects, 586 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean
[root@ceph-mgr ~]#
5. ファイルシステムを有効にする
[root@ceph01 ~]# ceph fs set emfs joinable true
emfs marked joinable; MDS may join as newly active.
[root@ceph01 ~]# ceph -s
cluster:
id: 4ce725c6-eb0d-11ef-980a-bc24112ffd94
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 11m)
mgr: ceph01.ocyoth(active, since 11m), standbys: ceph02.uuiyno
mds: 1/1 daemons up, 1 standby
osd: 8 osds: 8 up (since 11m), 8 in (since 38h)
data:
volumes: 1/1 healthy
pools: 3 pools, 66 pgs
objects: 24 objects, 587 KiB
usage: 231 MiB used, 400 GiB / 400 GiB avail
pgs: 66 active+clean