CephFS OSDs
https://ceph.readthedocs.io/en/latest/start/intro/によれば
Ceph OSDs: An Object Storage Daemon (Ceph OSD, ceph-osd) stores data, handles data replication, recovery, rebalancing,
and provides some monitoring information to Ceph Monitors and Managers by checking other Ceph OSD Daemons for a heartbeat.
At least three Ceph OSDs are normally required for redundancy and high availability.
(deepL先生訳)
Ceph OSD: オブジェクトストレージデーモン(Ceph OSD、ceph-osd)は、データを格納し、データのレプリケーション、リカバリ、リバランシングを処理します、
他のCeph OSDデーモンのハートビートをチェックすることで、Cephモニタとマネージャに監視情報を提供します。
通常、冗長性と高可用性のために少なくとも3つのCeph OSDが必要です。
他のOSDホストと連携してデータの保存、レプリケーション、リカバリ、リバランスを行う.
こちらも「At least 3 Ceph OSDs are normally required for redundancy and high availability.」とあり運用時は3台以上必要.
このOSDですが、下記の2つの意味合いがあるようで、ドキュメントを読む際は軽く注意かなと
OSD:Object Storage Daemo
OSD:Object Storage Device
ここではceph-osd1、ceph-osd2、ceph-osd3でOSDを用意します
cephリポジトリを登録して
[root@ceph-osd1 ~]# vi /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-squid/el9/$basearch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-squid/el9/noarch
enabled=1
priority=2
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.asc
[root@ceph-osd1 ~]#
OSDのパッケージをインストールします
[root@ceph-osd1 ~]# dnf install epel-release -y && dnf install ceph-osd ceph-volume
加えてfirewallにcephの穴を作ります
[root@ceph-osd1 ~]# firewall-cmd --add-service=ceph --permanent && firewall-cmd --reload
その後に monitor の ceph01から「/etc/ceph/ceph.conf」と「/var/lib/ceph/bootstrap-osd/ceph.keyring」 を ceph-osd1 へ運びます.
[root@ceph01 ~]# scp /etc/ceph/ceph.conf root@ceph-osd1:/etc/ceph/ceph.conf
[root@ceph01 ~]# scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@ceph-osd1:/var/lib/ceph/bootstrap-osd/ceph.keyring
[root@ceph01 ~]# ssh ceph-osd1 chown -R ceph. /etc/ceph
[root@ceph01 ~]# ssh ceph-osd1 chown -R ceph. /var/lib/ceph
cephFSの構築を目的にしているのでdata領域とmeta領域が必要になります. meta領域はssdらの早いデバイスが好ましいのでSSDのみで構成するようにしています.
加えてデータの本体となるストレージ(HDD)に、DB デバイス(block.db)[データ内部のメタデータを保存するデバイス]とWAL(write-ahead-log)デバイス(block.wal)[内部ジャーナルまたは write-ahead ログを保存するデバイス]を組み合わせて作る事が出来る. これがBlueStore構成と呼ぶみたい.
ここでは、本来全て同じ構成のblueStore(block.db/block.walの保持の有無)でで作るべきなのですが、作り方を示すためにそれぞれ異なるblueStoreを用意してみる.
ホスト名 | 名目 | block | block.db | block.wal | 備考 |
ceph-osd1 | meta向け | /dev/sdc(50GB,SSD) | |||
data向け | /dev/sdd(50GB.HDD) | block.dbもblocl.walも持たない | |||
ceph-osd2 | meta向け | /dev/sdc(50GB,SSD) | |||
data向け | /dev/sdb(50GB,HDD) /dev/sde(50GB,HDD) | /dev/db/0 (/dev/sdf由来) /dev/db/1 (/dev/sdf由来) | /dev/wal/0 (/dev/sdd由来) /dev/wal/1 (/dev/sdd由来) | block.dbとblock.walはLVMで提供 | |
ceph-osd3 | meta向け | /dev/sdf(50GB,SSD) | |||
data向け | /dev/sdb(50GB,HDD) /dev/sdc(50GB,HDD) /dev/sdd(50GB,HDD) | /dev/db/0 (/dev/sde由来) /dev/db/1 (/dev/sde由来) /dev/db/2 (/dev/sde由来) | block.dbのみ提供されて、/dev/sde(60GB,SSD)をLVMで3分割して使用 |
[root@ceph-osd1 ~]# ceph-volume inventory
Device Path Size Device nodes rotates available Model name <--「rotates」がFalseとなるのがSSD
/dev/sdc 50.00 GB sdc False True QEMU HARDDISK
/dev/sdd 50.00 GB sdd True True QEMU HARDDISK
:
[root@ceph-osd1 ~]#
[root@ceph-osd1 ~]# ceph-volume lvm create --bluestor --data /dev/sdc <-SSD meta
[root@ceph-osd1 ~]# ceph-volume lvm create --bluestor --data /dev/sdd <-HDD data
[root@ceph-osd2 ~]# ceph-volume lvm create --bluestor --data /dev/sdc <-SSD meta
[root@ceph-osd3 ~]# ceph-volume lvm create --bluestor --data /dev/sdf <-SSD meta
[root@ceph-osd2 ~]# ceph-volume inventory
Device Path Size Device nodes rotates available Model name
/dev/sdb 50.00 GB sdb True True QEMU HARDDISK
/dev/sdc 50.00 GB sdc False True QEMU HARDDISK
/dev/sdd 20.00 GB sdd False True QEMU HARDDISK
/dev/sde 50.00 GB sde True True QEMU HARDDISK
/dev/sdf 40.00 GB sdf False True QEMU HARDDISK
:
[root@ceph-osd2 ~]#
[root@ceph-osd2 ~]# pvcreate /dev/sdf <-- block.db向け
[root@ceph-osd2 ~]# vgcreate db /dev/sdf
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG db
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG db
[root@ceph-osd2 ~]# pvcreate /dev/sdd <-- block.wal向け
[root@ceph-osd2 ~]# vgcreate wal /dev/sdd
[root@ceph-osd2 ~]# lvcreate -n 0 -l 50%VG wal
[root@ceph-osd2 ~]# lvcreate -n 1 -l 50%VG wal
[root@ceph-osd2 ~]# ceph-volume lvm create --bluestore --data /dev/sdb --block.db /dev/db/0 --block.wal /dev/wal/0
[root@ceph-osd2 ~]# ceph-volume lvm create --bluestore --data /dev/sde --block.db /dev/db/1 --block.wal /dev/wal/1
[root@ceph-osd3 ~]# ceph-volume inventory
Device Path Size Device nodes rotates available Model name
/dev/sdb 50.00 GB sdb True True QEMU HARDDISK
/dev/sdc 50.00 GB sdc True True QEMU HARDDISK
/dev/sdd 50.00 GB sdd True True QEMU HARDDISK
/dev/sde 60.00 GB sde False True QEMU HARDDISK
/dev/sdf 50.00 GB sdf False True QEMU HARDDISK
:
[root@ceph-osd3 ~]#
[root@ceph-osd3 ~]# pvcreate /dev/sde
[root@ceph-osd3 ~]# vgcreate db /dev/sde
[root@ceph-osd3 ~]# lvcreate -n 0 -l 33%VG db
[root@ceph-osd3 ~]# lvcreate -n 1 -l 33%VG db
[root@ceph-osd3 ~]# lvcreate -n 2 -l 33%VG db
[root@ceph-osd3 ~]# ceph-volume lvm create --bluestore --data /dev/sdb --block.db /dev/db/0
[root@ceph-osd3 ~]# ceph-volume lvm create --bluestore --data /dev/sdc --block.db /dev/db/1
[root@ceph-osd3 ~]# ceph-volume lvm create --bluestore --data /dev/sdd --block.db /dev/db/2
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.53654 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
4 hdd 0.06839 osd.4 up 1.00000 1.00000
5 hdd 0.06839 osd.5 up 1.00000 1.00000
2 ssd 0.04880 osd.2 up 1.00000 1.00000
-10 0.25337 host ceph-osd3
6 hdd 0.06819 osd.6 up 1.00000 1.00000
7 hdd 0.06819 osd.7 up 1.00000 1.00000
8 hdd 0.06819 osd.8 up 1.00000 1.00000
3 ssd 0.04880 osd.3 up 1.00000 1.00000
[root@ceph01 ~]#
managerノードにて
[root@ceph01 ~]# ceph osd out 0 1 2
その後
[root@ceph-osd2 ~]# systemctl stop ceph-osd@0 ceph-osd@1 ceph-osd@2
[root@ceph01 ~]# ceph osd purge 0 --yes-i-really-mean-it
[root@ceph01 ~]# ceph osd purge 1 --yes-i-really-mean-it
[root@ceph01 ~]# ceph osd purge 2 --yes-i-really-mean-it
[root@ceph01 ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0 root default
-3 0 host ceph-osd2
[root@ceph01 ~]#
[root@ceph-osd2 ~]# ceph-volume lvm zap /dev/sdb --destroy
[root@ceph-osd2 ~]# ceph-volume lvm zap /dev/sdc --destroy
[root@ceph-osd2 ~]# ceph-volume lvm zap /dev/sdd --destroy
ceph-osd1、ceph-osd2、ceph-osd3をOSDとして組み込んで「ceph -s」で確認すると下記のようになる.
[root@ceph-mgr ~]# ceph -s
cluster:
id: c2d06c20-9197-40b4-a8c4-1a0604936ce8
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph01,ceph02,ceph-osd1 (age 65m)
mgr: ceph01(active, since 88m)
osd: 9 osds: 9 up (since 55m), 9 in (since 56m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 577 KiB
usage: 100 GiB used, 449 GiB / 549 GiB avail
pgs: 1 active+clean
[root@ceph-mgr ~]#
https://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/
https://docs.ceph.com/en/latest/rados/operations/add-or-rm-osds/#replacing-an-osd
とか
https://access.redhat.com/documentation/ja-jp/red_hat_ceph_storage/4/html/operations_guide/replacing-an-osd-drive-while-retaining-the-osd-id_ops