Cephも大規模になれば1OSDノード12本 HDDとしても10ノードで 120 本と膨大になる.
WD Ultrastar DC HC580 な製品は 最大250万時間 の MTBF を持つ。
単純にこのHDDを100本で運用していると、
100台 x 24時間 x 365日 --> 876,000時間
MTBFが 250万時間 なので、1時間あたりの故障率は 1/2,500,000
これに総稼働時間をかけると1年間に予想される故障台数(期待値 λ)が求められて
λ = 876,000 / 2,500,000 --> 0.3504 台
故障の発生がポアソン分布に従うと仮定すると、1年間に1台も故障しない(0台である)確率は e^-λ で表されます。
「1台以上が壊れる確率」は、全体(100%)から「0台の確率」を引くことで算出できます。
P(X≥1) = 1 -e^-0.3504 = 1 - 0.7044 = 0.2956
100台で運用なら 1年以内に少なくとも1本以上飛ぶ確率は約3割
これが100万時間 MTBF で 100台なら58.4%で1年間運用で「1本飛ぶかどうか半々」
まぁー確率の話です.
っで HDDが飛んだ場合の対処を記すます
(proxmoxで仮想環境でテストしてます)
事象発生(proxmoxでOSDノードのHDDを選択して detach 操作を行う)
cephで確認
[root@ceph-mgr ~]# ceph -s
cluster:
id: 9ce2eb0a-355d-11f1-a713-bc241165abf5
health: HEALTH_WARN
Failed to apply 1 service(s): osd.osd03_custom
1 failed cephadm daemon(s)
Degraded data redundancy: 7/114 objects degraded (6.140%), 6 pgs degraded, 166 pgs undersized
(略
[root@ceph-mgr ~]# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.29279 root default
-3 0.09760 host ceph-osd01
1 hdd 0.04880 osd.1 up 1.00000 1.00000
0 ssd 0.04880 osd.0 up 1.00000 1.00000
-7 0.09760 host ceph-osd02
3 hdd 0.04880 osd.3 up 1.00000 1.00000
2 ssd 0.04880 osd.2 up 1.00000 1.00000
-10 0.09760 host ceph-osd03
5 hdd 0.04880 osd.5 down 0 1.00000 <-- 飛んだHDD
4 ssd 0.04880 osd.4 up 1.00000 1.00000
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
:
osd.5 ceph-osd03 error 5m ago 2w - 2202M <unknown> <unknown> <unknown>
[root@ceph-mgr ~]#
これでosd.5のHDDが問題と分かる.
この状態ではまだCRUSHには残っていて「壊れてるけど、まだクラスタ的には配置対象」状態. これを「もう使わない」とします
[root@ceph-mgr ~]# ceph osd out 5
osd.5 is already out.
[root@ceph-mgr ~]#これでデータ再配置(recovery)が始まる.
次にCephから論理削除します
[root@ceph-mgr ~]# ceph osd purge 5 --yes-i-really-mean-it
purged osd.5
[root@ceph-mgr ~]#でもコンテナが生きてますので
[root@ceph-mgr ~]# ceph orch daemon rm osd.5 --force
Removed osd.5 from host 'ceph-osd03'
[root@ceph-mgr ~]#としてコンテナも削除します. 「ceph orch ps」で確認します
そして、実機 ceph-osd03 で問題のHDDスロットからHDDを抜いて、交換して差し込む
[root@ceph-osd03 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 16G 0 disk
tqsda1 8:1 0 1M 0 part
tqsda2 8:2 0 1G 0 part /boot
tqsda3 8:3 0 128M 0 part [SWAP]
tqsda4 8:4 0 1K 0 part
mqsda5 8:5 0 14.9G 0 part /var/lib/containers/storage/overlay
/
sdb 8:16 0 50G 0 disk
mqceph--ed4c4549--46eb--42f0--8059--31ad1b70c4f3-osd--block--fe0cbd5c--f15f--4189--b8ed--3ea4268462d9 253:0 0 50G 0 lvm
sdd 8:48 0 51G 0 disk
[root@ceph-osd03 ~]#となったので、追加したHDDは/dev/sddとなる.
ceph Tentacle 以前はそのノードで「ceph-volume lvm create --data /dev/sdd」とか「ceph orch daemon add osd ceph-osd03:/dev/sdd」で追加出来たけど、
Tentacle では設計書で行うみたい。
今ある設計書は
[root@ceph-mgr ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
crash 7/7 7m ago 2w *
mds.emfs 2/2 27s ago 2w count:2;label:mds
mgr 2/2 27s ago 2w count:2;label:mgr
mon 3/3 27s ago 2w count:3;label:mon
node-exporter ?:9100 7/7 7m ago 24h *
osd.osd01_custom 2 7m ago 2w ceph-osd01
osd.osd02_custom 2 27s ago 2w ceph-osd02
osd.osd03_custom 1 2m ago 2w ceph-osd03
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph orch ls --service_name=osd.osd03_custom --export | tee osd03_custom.yml
service_type: osd
service_id: osd03_custom
service_name: osd.osd03_custom
placement:
hosts:
- ceph-osd03
spec:
data_devices:
paths:
- /dev/sdb
- /dev/sdc
filter_logic: AND
objectstore: bluestore
[root@ceph-mgr ~]#と作った「osd03_custom.yml」を修正してcephにapplyします。
[root@ceph-mgr ~]# cat osd03_custom.yml
service_type: osd
service_id: osd03_custom
service_name: osd.osd03_custom
placement:
hosts:
- ceph-osd03
spec:
data_devices:
paths:
- /dev/sdb
- /dev/sdd
filter_logic: AND
objectstore: bluestore
[root@ceph-mgr ~]# ceph orch apply -i osd03_custom.yml
Scheduled osd.osd03_custom update...
[root@ceph-mgr ~]#確認します
[root@ceph-mgr ~]# ceph -s
cluster:
id: 9ce2eb0a-355d-11f1-a713-bc241165abf5
health: HEALTH_OK
:
[root@ceph-mgr ~]#
[root@ceph-mgr ~]# ceph orch ps
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
:
osd.4 ceph-osd03 running (39h) 3m ago 2w 92.9M 2202M 20.2.1 fb63cba66eea d79a0144a3dc
osd.5 ceph-osd03 running (3m) 3m ago 3m 36.1M 2202M 20.2.1 fb63cba66eea 04e9f9e6d050
[root@ceph-mgr ~]#と復旧しました。Ceph/Prometheusも設定していれば「Resolved」とメールが届きます

問題とした osd.5 はどこにあるのか
[root@ceph-mgr ~]# ceph device ls
DEVICE HOST:DEV DAEMONS WEAR LIFE EXPECTANCY
:
ATA_Micron_5300_MTFDDAK3T8TDS_XXXXXXXXXXXX ceph-osd01:sdb osd.10 osd.5 osd.6 osd.7 osd.8 osd.9 0% <--- block.db として利用
:
ATA_WDC_WUH722020BLE6L4_XXXXXXAE ceph-osd01:sdi osd.5 <--- block.data 本命
:
[root@ceph-mgr ~]#これで交換すべきHDDのシリアル番号とどのノードに存在しているのかが分かる.
ここで大きな問題。シリアル番号、/dev/sdi と分かったところで、エンクロージャのどこにそれがあるか分かるすべがない。
ledctlやlsscsiを駆使すればわかるかなと思ったのですが、むりっぽい。
地味であるが、事前にこのスロットにはこのシリアルのHDDがあると台帳に記すか、テプラでslotに張っていくしかないみたい
だた、もしMBもしくは追加のHBAでHDDと繋がているなら、そのHBAのツール経由でHDDのLEDを点灯させられる。
[root@ceph-osd03 ~]# lspci
:
01:00.0 Serial Attached SCSI controller: Broadcom / LSI SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)
:
[root@ceph-osd03 ~]#とあれば、Broadcom さんのサイトに行って「sas3ircu」を貰う。
そして
[root@ceph-osd03 ~]# ./sas3ircu LIST
Avago Technologies SAS3 IR Configuration Utility.
Version 17.00.00.00 (2018.04.02)
Copyright (c) 2009-2018 Avago Technologies. All rights reserved.
Adapter Vendor Device SubSys SubSys
Index Type ID ID Pci Address Ven ID Dev ID
----- ------------ ------ ------ ----------------- ------ ------
0 SAS3008 1000h 97h 00h:01h:00h:00h 15d9h 0808h <--- ceph-osd03には1枚しかコントローラーが存在しないと判明
SAS3IRCU: Utility Completed Successfully.
[root@ceph-osd03 ~]#
[root@ceph-osd03 ~]# ./sas3ircu 0 DISPLAY
:
Device is a Hard disk
Enclosure # : 2
Slot # : 6
PI Supported : No
SAS Address : 5003048-0-2bc9-5f86
State : Ready (RDY)
Size (in MB)/(in sectors) : 19074047/39063650303
Manufacturer : ATA
Model Number : WDC WUH722020BL
Firmware Revision : W540
Serial No : XXXXXXAE <-- 見つけた!
Unit Serial No(VPD) : XXXXXXAE
GUID : 5000cca41edb2276
Protocol : SATA
Drive Type : SATA_HDD
:
[root@ceph-osd03 ~]#とスロット番号が6であることがこれでわかる. なので下記でLEDを点灯させ確定する
[root@ceph-osd03 ~]# ./sas3ircu 0 LOCATE 6 ON <-- 1枚目のコントローラーの6番スロットのLEDを点灯させる
(消灯)
[root@ceph-osd03 ~]# ./sas3ircu 0 LOCATE 6 OFF