#author("2025-04-25T08:43:12+00:00","default:sysosa","sysosa")
#author("2025-04-25T09:49:39+00:00","default:sysosa","sysosa")
''CephFS OSDs''
[[https://ceph.readthedocs.io/en/latest/start/intro/>+https://ceph.readthedocs.io/en/latest/start/intro/]]によれば
#code(nonumber){{
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を用意します

***下準備 [#ed703943]
cephリポジトリを登録して
#code(nonumber){{
[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のパッケージをインストールします
#code(nonumber){{
[root@ceph-osd1 ~]# dnf install epel-release -y && dnf install ceph-osd ceph-volume
}}
加えてfirewallにcephの穴を作ります
#code(nonumber){{
[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 へ運びます.

#code(nonumber){{
[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
}}

***ストレージの準備 [#ze9130b7]

cephFSの構築を目的にしているので&color(crimson){data};領域と&color(magenta){meta};領域が必要になります. &color(magenta){meta};領域はssdらの早いデバイスが好ましいのでSSDのみで構成するようにしています.
加えてデータの本体となるストレージ(HDD)に、DB デバイス(block.db)[データ内部のメタデータを保存するデバイス]とWAL(write-ahead-log)デバイス(block.wal)[内部ジャーナルまたは write-ahead ログを保存するデバイス]を組み合わせて作る事が出来る. これがBlueStore構成と呼ぶみたい.

ここでは、本来全て同じ構成のblueStore(block.db/block.walの保持の有無)でで作るべきなのですが、作り方を示すためにそれぞれ異なるblueStoreを用意してみる.

|BGCOLOR(YELLOW):ホスト名|BGCOLOR(YELLOW):名目|BGCOLOR(YELLOW):block|BGCOLOR(YELLOW):&color(orangered){block.db};|BGCOLOR(YELLOW):&color(orange){block.wal};|BGCOLOR(YELLOW):備考|
|ceph-osd1|&color(magenta){meta};向け|/dev/sdc(50GB,SSD)| | ||
|~|&color(crimson){data};向け|/dev/sdd(50GB.HDD)|||block.dbもblocl.walも持たない |
|ceph-osd2|&color(magenta){meta};向け|/dev/sdc(50GB,SSD)| | ||
|~|&color(crimson){data};向け|/dev/sdb(50GB,HDD)&br;/dev/sde(50GB,HDD)|/dev/db/0 (/dev/sdf由来)&br;/dev/db/1 (/dev/sdf由来)|/dev/wal/0 (/dev/sdd由来)&br;/dev/wal/1 (/dev/sdd由来)|block.dbとblock.walはLVMで提供|
|ceph-osd3|&color(magenta){meta};向け|/dev/sdf(50GB,SSD)| | ||
|~|&color(crimson){data};向け|/dev/sdb(50GB,HDD)&br;/dev/sdc(50GB,HDD)&br;/dev/sdd(50GB,HDD)|/dev/db/0 (/dev/sde由来)&br;/dev/db/1 (/dev/sde由来)&br;/dev/db/2 (/dev/sde由来)|| block.dbのみ提供されて、/dev/sde(60GB,SSD)をLVMで3分割して使用|

-単純にストレージデバイス単体でblueStoreを作る(ceph-osd1のdataとmeta、ceph-osd2のmetaとceph-osd3のmeta)
#code(nonumber){{
[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
}}


-dataとblock.db、block.walの3つを組み合わせたblueStoreを作る(ceph-osd2)
dataとなるHDDは2つあるので、block.db向けの/dev/sdbはlvmで2分割、block.wal向けの/dev/sddのlvmで2分割します
#code(nonumber){{
[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
}}
次にosdを作ります
#code(nonumber){{
[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
}}

-dataが3デバイスでblock.dbが1デバイスのblueStore(ceph-osd3)
block.dbデバイスを3つに分割します.
#code(nonumber){{
[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
}}
次にosdを作ります
#code(nonumber){{
[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
}}



***ストレージデバイスの確認 [#g5803926]

#code(nonumber){{
[root@ceph01 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
-1         0.16599  root default
-3         0.16599      host ceph-osd2
 0    hdd  0.04880          osd.0           up   1.00000  1.00000
 2    hdd  0.06839          osd.2           up   1.00000  1.00000
 1    ssd  0.04880          osd.1           up         0  1.00000
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 ~]#
}}

***osdの削除 [#c295cb74]
managerノードにて
#code(nonumber){{
[root@ceph01 ~]# ceph osd out 0 1 2
}}
その後
#code(nonumber){{
[root@ceph-osd2 ~]# systemctl stop ceph-osd@0 ceph-osd@1 ceph-osd@2
}}
#code(nonumber){{
[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 ~]#
}}
#code(nonumber){{
[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
}}

***monitor側では [#l877e301]
ceph-osd1、ceph-osd2、ceph-osd3をOSDとして組み込んで「ceph -s」で確認すると下記のようになる.

#code(nonumber){{
[root@ceph-mgr ~]# ceph -s
  cluster:
    id:     c2d06c20-9197-40b4-a8c4-1a0604936ce8
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph-mgr,ceph-mds,ceph-osd1 (age 5h)
    mgr: ceph-mgr(active, since 14h)
    osd: 3 osds: 3 up (since 3h), 3 in (since 3h)
    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, 449 KiB
    usage:   93 MiB used, 48 GiB / 48 GiB avail
    objects: 2 objects, 577 KiB
    usage:   100 GiB used, 449 GiB / 549 GiB avail
    pgs:     1 active+clean

[root@ceph-mgr ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
-1         0.04678  root default
-5         0.01559      host ceph-osd1
 1    ssd  0.01559          osd.1           up   1.00000  1.00000
-3         0.01559      host ceph-osd2
 0    ssd  0.01559          osd.0           up   1.00000  1.00000
-7         0.01559      host ceph-osd3
 2    ssd  0.01559          osd.2           up   1.00000  1.00000
[root@ceph-mgr ~]#
}}


***OSDの追加/削除 [#v56a95f0]
[[https://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/>+https://docs.ceph.com/docs/mimic/rados/operations/add-or-rm-osds/]]


***HDDが不良の際 [#n6dbab4c]
[[https://docs.ceph.com/en/latest/rados/operations/add-or-rm-osds/#replacing-an-osd>+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>+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]]
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS