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アドレスbackendOSストレージCPU threads
ceph01Ceph Manager
Ceph Metadata Server
Ceph Monitor
192.168.0.47/24Rockylinux9.4system(16GB)
/var/lib/ceph(8GB,monitor)
8 threads(monitor:4+metadata:2+manager:1+ ほか)
ceph02Ceph Manager
Ceph Metadata Server
Ceph Monitor
192.168.0.48/24system(16GB)
/var/lib/ceph(8GB,monitor)
8 threads(monitor:4+metadata:2+manager:1+ ほか)
ceph-osd1Ceph OSDs
Ceph Monitor
192.168.0.49/2410.10.10.49/24system(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-osd2Ceph OSDs192.168.0.50/2410.10.10.50/24system(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-osd3Ceph OSDs192.168.0.51/2410.10.10.51/24system(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

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 ManagerCeph 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にアクセスできます.

cephコマンドを入れる

設定ファイルとキーリングがあれば「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を追加してくれます
2024y12m02d_215248138.png

既定のサービス構成

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」で

構成員を追加(ceph02)

追加対象のホストは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 ~]#

構成員(ceph02)に役割を持たせる

ここでは ceph01とceph02 には Ceph Manager  と Ceph MonitorCeph 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 の設定後にします.

構成員を追加(ceph-osd1)

まだ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」では下記のように表示される
2024y12m03d_014555586.png

残りの構成員を参加させる

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が自動的にデプロイされて動きます

OSD設定

前段で「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設定(その2)

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 ~]#

プールのCRUSH配置ルール(crush rule)作成

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

でその警告は停止します

client接続

*バックエンドの「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」とフォーマットが若干異なります,

システム停止手順

参照先:
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/3/html/administration_guide/understanding-process-managemnet-for-ceph#powering-down-and-rebooting-a-red-hat-ceph-storage-cluster-management

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
最新の60件
2025-05-24 2025-05-22 2025-05-21 2025-05-20 2025-05-19 2025-05-18 2025-05-17 2025-05-14 2025-05-13 2025-05-12 2025-05-11 2025-05-08 2025-05-07 2025-05-06 2025-05-05 2025-05-04 2025-05-03 2025-04-27 2025-04-26 2025-04-25 2025-04-24 2025-04-17 2025-04-13 2025-04-02 2025-04-01 2025-03-31 2025-03-29 2025-03-28 2025-03-27 2025-03-26 2025-03-23 2025-03-22 2025-03-20

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-05-08 (木) 02:45:35