#author("2026-07-17T09:10:25+00:00","default:sysosa","sysosa") #author("2026-07-17T09:29:32+00:00","default:sysosa","sysosa") 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で仮想環境でテストしてます) ***HDD対応 [#ac6b6fbb] 事象発生(proxmoxでOSDノードのHDDを選択して detach 操作を行う) cephで確認 #code(nonumber){{ [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には残っていて「壊れてるけど、まだクラスタ的には配置対象」状態. これを「もう使わない」とします #code(nonumber){{ [root@ceph-mgr ~]# ceph osd out 5 osd.5 is already out. [root@ceph-mgr ~]# }} これでデータ再配置(recovery)が始まる. 次にCephから論理削除します #code(nonumber){{ [root@ceph-mgr ~]# ceph osd purge 5 --yes-i-really-mean-it purged osd.5 [root@ceph-mgr ~]# }} でもコンテナが生きてますので #code(nonumber){{ [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を抜いて、交換して差し込む #code(nonumber){{ [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 では設計書で行うみたい。 今ある設計書は #code(nonumber){{ [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します。 #code(nonumber){{ [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 ~]# }} 確認します #code(nonumber){{ [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」とメールが届きます &ref(2026y04m29d_170548427.png,nolink,70%); &ref(2026y04m29d_173347227.png,nolink,70%); ***問題のHDDはどこにあるの?物理的に [#l05568e6] 問題とした osd.5 はどこにあるのか #code(nonumber){{ [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を点灯させられる。 #code(nonumber){{ [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」を貰う。 そして #code(nonumber){{ [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を点灯させ確定する #code(nonumber){{ [root@ceph-osd03 ~]# ./sas3ircu 0 LOCATE 2:6 ON <-- 1枚目のコントローラーの6番スロットのLEDを点灯させる (60秒間なら 「./sas3ircu 0 LOCATE 2:6 ON wait 60」) (消灯) [root@ceph-osd03 ~]# ./sas3ircu 0 LOCATE 2:6 OFF }} ぁーー残念なことにこれはsas-HDDなら使えるみたい..sataは無理っぽい. なのでHDD slotにはHDDのシリアルNoをテプラで張る. これが一番見たい.