1. Tổng quan
Trong vận hành Ceph, tình huống một node OSD bị hỏng đột ngột là rủi ro thực tế. Thông thường, cluster sẽ tiến hành recovery/rebalance dữ liệu. Tuy nhiên, với replication thấp (ví dụ repl=2), việc để cluster tự recovery có thể kéo dài và tiềm ẩn nguy cơ mất dữ liệu nếu một OSD khác hỏng trong lúc này.
Một giải pháp an toàn và nhanh hơn là rút toàn bộ ổ đĩa OSD từ node hỏng và gắn sang một node mới. Các OSD này sẽ được khởi động lại với ID cũ, giữ nguyên dữ liệu mà không cần rebuild toàn bộ.
Quy trình bên dưới mô tả chi tiết cách giả lập CEPH-LAB-NODE76 hỏng, chuyển OSD sang CEPH-LAB-NODE77 và dọn sạch node cũ.
2. Chuẩn bị
2.1. Điều kiện tiên quyết:
- Cluster quản lý bằng cephadm/container.
- Nắm được thông tin replication, ví dụ replication factor = 2.
- Các OSD sử dụng BlueStore LVM.
- Node mới cài OS sạch (khuyến nghị Ubuntu 22.04 trùng với node cũ), đồng bộ time, cài sẵn cephadm, ceph-volume, lvm2,…
2.2. Sơ đồ logic:
- Node 76 được đánh dấu DOWN (hỏng).
- Node 77 nằm ở cùng vị trí đó, được bổ sung để thay thế node 76.
- Các node 71–73 chịu trách nhiệm quorum (mon/mgr) và dịch vụ rgw.
- Các node 74,75,77 là OSD-only.
+----------------------+
| Client/RGW |
+----------+-----------+
|
========== Public Network ==========
|
+----------------+ +----------------+ +----------------+
| CEPH-LAB-NODE71| | CEPH-LAB-NODE72| | CEPH-LAB-NODE73|
| mon, mgr, rgw | | mon, mgr, rgw | | mon, mgr, rgw |
| _admin, osd | | _admin, osd | | _admin, osd |
+----------------+ +----------------+ +----------------+
| | |
-----------------------------------------------------------------
| | |
+----------------+ +----------------+ +----------------+
| CEPH-LAB-NODE74| | CEPH-LAB-NODE75| | CEPH-LAB-NODE76|
| osd | | osd | | osd (DOWN) |
+----------------+ +----------------+ +----------------+
X (node hỏng)
|
>>> Thay thế bằng >>>
|
+----------------+
| CEPH-LAB-NODE77|
| osd |
+----------------+
2.3. Lưu ý quan trọng khi swap OSD từ node hỏng sang node mới.
Nhớ set luster flags
- noout: ngăn Ceph mark OSD out khi nó down lâu. Nếu không set, sau vài phút Ceph sẽ coi OSD đó out và trigger recovery hàng loạt.
- norecover: ngăn Ceph tự động phục hồi dữ liệu khi thấy thiếu replica. Điều này quan trọng nếu bạn biết mình sẽ đưa các OSD cũ lên lại trong thời gian ngắn.
- nobackfill: ngăn Ceph backfill dữ liệu sang OSD mới.
- noscrub, nodeep-scrub: tạm tắt scrub/deep-scrub để giảm I/O phụ, tránh cluster bận việc không cần thiết.
- Lưu ý: Những flag này chỉ nên để trong thời gian ngắn (tính bằng giờ). Nếu để lâu và có thêm một OSD khác hỏng, cluster sẽ không tự bảo vệ được.
Không dùng lệnh purge hoặc rm OSD
Không dùng:
ceph osd purge <id>
ceph orch daemon rm osd.<id>
Lý do là những lệnh này sẽ xóa OSD ID khỏi cluster, dẫn tới mất mapping với dữ liệu trên đĩa. Trong tình huống swap đĩa, ta chỉ muốn kích hoạt lại
OSD với ID cũ.
Chỉ dùng:
ceph-volume lvm activate --all
hoặc ceph-volume lvm activate <id> <fsid>
để OSD quay lại.
Kiểm tra kỹ trước khi remove host cũ
- Đảm bảo toàn bộ OSD từ node cũ đã up,in trên node mới (
ceph osd tree
,ceph orch ps --host <newnode>
). - Nếu remove host cũ quá sớm, Ceph có thể coi các OSD đó đã biến mất và trigger recovery không cần thiết.
CRUSH map và device class
- Sau khi OSD lên trên node mới, cần kiểm tra chúng đã nằm đúng bucket trong CRUSH tree chưa.
- Nếu trước đó node cũ thuộc root
blk-pool
hoặcobj-pool
, hãy move node mới vào đúng root:
ceph osd crush move <node_name> root=<root_name>
Kiểm tra device class (ssd/hdd/nvme). Nếu Ceph nhận sai loại, dùng:
ceph osd crush set-device-class <class_name> osd.<id>
Đảm bảo môi trường node mới
Node mới cần đồng bộ thời gian (chrony/ntp).
Cài đúng phiên bản cephadm, podman, ceph-volume để tương thích với cluster.
Các đĩa phải expose raw, không đi qua RAID hoặc partition sai.
Thời điểm unset flags
Chỉ unset khi đã chắc chắn:
- Toàn bộ OSD cũ đã up,in trên node mới.
ceph -s
không báo PG degraded hoặc backfilling.
Khi unset flags, cluster sẽ trở về chế độ vận hành bình thường.
Backup và thử nghiệm trước
Nếu có điều kiện, hãy thử quy trình này trong lab trước khi áp dụng production.
2.4. Thông tin phần cứng mình show để các bạn có cái nhìn tổng quan của node CEPH-LAB-NODE76 trước khi mình shutdown nó.
Tham khảo thông tin về hardware của node CEPH-LAB-NODE76 (demo bằng ảo hóa VMWare).
shell> dmidecode -t1
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Version: None
Serial Number: VMware-42 00 57 80 5a e5 fa be-d5 52 c4 f8 2c 60 91 7a
UUID: 80570042-e55a-befa-d552-c4f82c60917a
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified
Đây là thông tin về OS node CEPH-LAB-NODE76.
shell> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
Danh danh disk node CEPH-LAB-NODE76, có 3 disk tham gia làm nhiệm vụ OSD của Ceph, mỗi disk được chia thành 3 phân vùng, mỗi phân vùng sẽ là 1 OSD.
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 62M 1 loop /snap/core20/1587
loop1 7:1 0 79.9M 1 loop /snap/lxd/22923
loop3 7:3 0 50.8M 1 loop /snap/snapd/25202
loop4 7:4 0 89.4M 1 loop /snap/lxd/31333
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 48G 0 lvm /var/lib/containers/storage/overlay
/
sdb 8:16 0 30G 0 disk
├─ceph--2eb0a830--c3e6--4657--a367--08ed8baf5697-osd--block--16fe3fc6--e824--4c11--a52c--ff2369a8936c 253:1 0 10G 0 lvm
├─ceph--2eb0a830--c3e6--4657--a367--08ed8baf5697-osd--block--2eab432a--e8ad--45a5--bfad--98c1c2319816 253:2 0 10G 0 lvm
└─ceph--2eb0a830--c3e6--4657--a367--08ed8baf5697-osd--block--f0aefc36--4189--4097--b849--162f81837246 253:3 0 10G 0 lvm
sdc 8:32 0 30G 0 disk
├─ceph--2931863d--cfea--482b--9d65--c0b943c32372-osd--block--68090eb5--d119--4649--a9a1--a14e435d6988 253:4 0 10G 0 lvm
├─ceph--2931863d--cfea--482b--9d65--c0b943c32372-osd--block--0467454d--acc8--4434--9227--7f433751cec7 253:5 0 10G 0 lvm
└─ceph--2931863d--cfea--482b--9d65--c0b943c32372-osd--block--5ac7304b--75b0--4957--8e84--714d682259ca 253:6 0 10G 0 lvm
sdd 8:48 0 30G 0 disk
├─ceph--e6e419da--44d7--4587--b8e2--e3320ee5a6d7-osd--block--a2f28c73--9268--4eae--9e9f--fa5507d0e744 253:7 0 10G 0 lvm
├─ceph--e6e419da--44d7--4587--b8e2--e3320ee5a6d7-osd--block--905f7444--7309--412e--9c80--cce69c4cd45d 253:8 0 10G 0 lvm
└─ceph--e6e419da--44d7--4587--b8e2--e3320ee5a6d7-osd--block--d8045774--7b48--432e--955b--90724fcef4fa 253:9 0 10G 0 lvm
sr0 11:0 1 1024M 0 rom
Danh sách container của Ceph node CEPH-LAB-NODE76
shell> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
85ad1b19abbb 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n client.crash.C... 9 minutes ago Up 9 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-crash-CEPH-LAB-NODE76
63374fdfb0cd 10.237.7.73:5000/prometheus/node-exporter:v1.3.1 --no-collector.ti... 9 minutes ago Up 9 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-node-exporter-CEPH-LAB-NODE76
aa6000d13129 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.45 -f --se... 8 minutes ago Up 8 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-45
9868b2a889e7 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.46 -f --se... 8 minutes ago Up 8 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-46
539b679f80d7 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.47 -f --se... 8 minutes ago Up 8 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-47
38e19ba550a0 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.48 -f --se... 8 minutes ago Up 8 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-48
3fca88beed5a 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.49 -f --se... 7 minutes ago Up 7 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-49
bee8ce735a7e 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.50 -f --se... 7 minutes ago Up 7 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-50
fb6a775fb9c6 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.51 -f --se... 7 minutes ago Up 7 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-51
ab7ef4a78dd5 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.52 -f --se... 7 minutes ago Up 7 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-52
059d4729995f 10.237.7.73:5000/ceph/ceph@sha256:e0abe7661b390c43f10bbd95f68d016ccd45c8119f4f3374dcca2714df236055 -n osd.53 -f --se... 6 minutes ago Up 6 minutes ago ceph-02e6fe3c-72c7-11f0-9003-45eb18128e69-osd-53
2.5. Verify cluster khi node CEPH-LAB-NODE76 bị down trước khi thêm node CEPH-LAB-NODE77.
Sau khi mình shutdown node CEPH-LAB-NODE76. Sử dụng lệnh ceph -s
cho ta thấy kết quả như sau:
- Tất cả các container daemon trên node 76 (crash, node-exporter, osd.45–osd.53) đều trong trạng thái host is offline.
- Tổng cộng 9 OSD trên node 76 down, dẫn tới tình trạng cluster chỉ còn 45/54 OSD up.
- Trạng thái cluster: HEALTH_WARN, với cảnh báo 1 hosts fail cephadm check, 9 osds down, 1 host down.
- Hậu quả: 84 PG bị undersized, dữ liệu vẫn duy trì nhưng mất cân bằng và giảm redundancy.
Nguyên nhân gốc vẫn xoay quanh việc node CEPH-LAB-NODE76 không reachable với cluster do mình cố tình shutdown host.
shell> ceph -s
cluster:
id: 02e6fe3c-72c7-11f0-9003-45eb18128e69
health: HEALTH_WARN
1 hosts fail cephadm check
9 osds down
1 host (9 osds) down
Degraded data redundancy: 84 pgs undersized
services:
mon: 3 daemons, quorum CEPH-LAB-NODE71,CEPH-LAB-NODE72,CEPH-LAB-NODE73 (age 12d)
mgr: CEPH-LAB-NODE71.dmmtko(active, since 3w), standbys: CEPH-LAB-NODE72.nfmjcp, CEPH-LAB-NODE73.eoncxf
osd: 54 osds: 45 up (since 79m), 54 in (since 2h)
rgw: 3 daemons active (3 hosts, 1 zones)
data:
pools: 9 pools, 449 pgs
objects: 334 objects, 1.5 MiB
usage: 17 GiB used, 523 GiB / 540 GiB avail
pgs: 365 active+clean
84 active+undersized
io:
client: 5.7 KiB/s rd, 0 B/s wr, 5 op/s rd, 3 op/s wr
CEPH-LAB-NODE76 bị báo Offline trong ceph orch host ls
.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-NODE71 10.237.7.71 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE72 10.237.7.72 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE73 10.237.7.73 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE74 10.237.7.74 osd
CEPH-LAB-NODE75 10.237.7.75 osd
CEPH-LAB-NODE76 10.237.7.76 osd Offline
6 hosts in cluster
Lệnh ceph orch ps
cho biết toàn bộ daemon trên CEPH-LAB-NODE76 đều báo host is offline, nghĩa là Ceph orch không liên lạc được với node này, dù trước đó chúng có container ID hợp lệ.
shell> ceph orch ps CEPH-LAB-NODE76
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
crash.CEPH-LAB-NODE76 CEPH-LAB-NODE76 host is offline 4m ago 38m 12.4M - 19.2.2 4892a7ef541b 85ad1b19abbb
node-exporter.CEPH-LAB-NODE76 CEPH-LAB-NODE76 *:9100 host is offline 4m ago 38m 14.1M - 1.3.1 1dbe0e931976 63374fdfb0cd
osd.45 CEPH-LAB-NODE76 host is offline 4m ago 37m 62.9M 2372M 19.2.2 4892a7ef541b aa6000d13129
osd.46 CEPH-LAB-NODE76 host is offline 4m ago 37m 61.1M 2372M 19.2.2 4892a7ef541b 9868b2a889e7
osd.47 CEPH-LAB-NODE76 host is offline 4m ago 36m 62.1M 2372M 19.2.2 4892a7ef541b 539b679f80d7
osd.48 CEPH-LAB-NODE76 host is offline 4m ago 36m 64.1M 2372M 19.2.2 4892a7ef541b 38e19ba550a0
osd.49 CEPH-LAB-NODE76 host is offline 4m ago 36m 62.0M 2372M 19.2.2 4892a7ef541b 3fca88beed5a
osd.50 CEPH-LAB-NODE76 host is offline 4m ago 36m 64.0M 2372M 19.2.2 4892a7ef541b bee8ce735a7e
osd.51 CEPH-LAB-NODE76 host is offline 4m ago 35m 61.7M 2372M 19.2.2 4892a7ef541b fb6a775fb9c6
osd.52 CEPH-LAB-NODE76 host is offline 4m ago 35m 62.1M 2372M 19.2.2 4892a7ef541b ab7ef4a78dd5
osd.53 CEPH-LAB-NODE76 host is offline 4m ago 35m 63.4M 2372M 19.2.2 4892a7ef541b 059d4729995f
Log của lệnh ceph health detail
cũng tương tự như lệnh ceph -s
nhưng nó sẽ chi tiết hơn, nó cho ta biết:
Node CEPH-LAB-NODE76 bị mất kết nối (SSH/cephadm check failed), do host không reachable.
Toàn bộ 9 OSD trên NODE76 (osd.45 → osd.53) đều down.
Ceph báo tình trạng HEALTH_WARN với cảnh báo OSD_DOWN và OSD_HOST_DOWN.
Do OSD down nên xuất hiện tình trạng 84 PG bị undersized → dữ liệu mất cân bằng, suy giảm redundancy.
Cần xử lý node 76 (kiểm tra network, service, OS, cephadm) để khôi phục OSD và đưa cluster về trạng thái ổn định.
shell> ceph health detail
HEALTH_WARN 1 hosts fail cephadm check; 9 osds down; 1 host (9 osds) down; Degraded data redundancy: 84 pgs undersized
[WRN] CEPHADM_HOST_CHECK_FAILED: 1 hosts fail cephadm check
host CEPH-LAB-NODE76 (10.237.7.76) failed check: Can't communicate with remote host `10.237.7.76`, possibly because the host is not reachable or python3 is not installed on the host. [Errno 113] Connect call failed ('10.237.7.76', 22)
[WRN] OSD_DOWN: 9 osds down
osd.45 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.46 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.47 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.48 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.49 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.50 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.51 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.52 (root=blk-pool,host=CEPH-LAB-NODE76) is down
osd.53 (root=blk-pool,host=CEPH-LAB-NODE76) is down
[WRN] OSD_HOST_DOWN: 1 host (9 osds) down
host CEPH-LAB-NODE76 (root=blk-pool) (9 osds) is down
[WRN] PG_DEGRADED: Degraded data redundancy: 84 pgs undersized
pg 2.e is stuck undersized for 83m, current state active+undersized, last acting [14]
pg 2.10 is stuck undersized for 83m, current state active+undersized, last acting [2]
pg 2.11 is stuck undersized for 83m, current state active+undersized, last acting [1]
pg 2.12 is stuck undersized for 83m, current state active+undersized, last acting [16]
pg 2.14 is stuck undersized for 83m, current state active+undersized, last acting [10]
< đã lược bỏ bớt logs>
pg 2.76 is stuck undersized for 83m, current state active+undersized, last acting [2]
pg 2.77 is stuck undersized for 83m, current state active+undersized, last acting [8]
pg 2.78 is stuck undersized for 83m, current state active+undersized, last acting [14]
pg 2.7a is stuck undersized for 83m, current state active+undersized, last acting [5]
pg 2.7b is stuck undersized for 83m, current state active+undersized, last acting [5]
pg 2.7c is stuck undersized for 83m, current state active+undersized, last acting [2]
2.6. Di chuyển disk OSD từ node CEPH-LAB-NODE76 sang node CEPH-LAB-NODE77, mở nguồn và cài OS và cài cắm các gói liên quan, kiểm tra lần cuối node mới trước khi join cluster.
Tham khảo thông tin về hardware của node CEPH-LAB-NODE77 (demo bằng ảo hóa VMWare).
shell> dmidecode -t1
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Version: None
Serial Number: VMware-42 00 bf 20 f4 3f 2e 7b-67 34 bd 1a 50 f0 3c c5
UUID: 20bf0042-3ff4-7b2e-6734-bd1a50f03cc5
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified
Đây là thông tin về OS node CEPH-LAB-NODE77.
shell> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
Codename: jammy
Thông tin về Podman.
shell> podman -v
podman version 3.4.4
shell> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Thông tin về disk, lúc này disk đã được gỡ từ CEPH-LAB-NODE76 gắn sang CEPH-LAB-NODE77 rồi nhé nên chúng ta sẽ thấy disk có các phân vùng của Ceph từ bên node CEPH-LAB-NODE76 mang qua.
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 62M 1 loop /snap/core20/1587
loop1 7:1 0 79.9M 1 loop /snap/lxd/22923
loop2 7:2 0 47M 1 loop /snap/snapd/16292
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv 253:9 0 48G 0 lvm /var/lib/containers/storage/overlay
/
sdb 8:16 0 30G 0 disk
├─ceph--31e75c55--32d5--4deb--96d4--6c931887cc8c-osd--block--e98379f9--ba61--47d3--bc5c--ecb98029faf9 253:1 0 10G 0 lvm
├─ceph--31e75c55--32d5--4deb--96d4--6c931887cc8c-osd--block--0356b32d--206c--4b80--a606--625f73b4f494 253:3 0 10G 0 lvm
└─ceph--31e75c55--32d5--4deb--96d4--6c931887cc8c-osd--block--0ce485d2--3cc6--45d9--88fe--fa8c0daad129 253:4 0 10G 0 lvm
sdc 8:32 0 30G 0 disk
├─ceph--2b08988a--46ab--4ed0--94c0--19508a57d22d-osd--block--4d9d042f--90fd--436d--b6a8--5cda620e8ff3 253:0 0 10G 0 lvm
├─ceph--2b08988a--46ab--4ed0--94c0--19508a57d22d-osd--block--1742d9b3--bc64--4c48--a83e--904589e1cc62 253:2 0 10G 0 lvm
└─ceph--2b08988a--46ab--4ed0--94c0--19508a57d22d-osd--block--e0eb5f88--7dad--4579--823f--d6c8e419871d 253:5 0 10G 0 lvm
sdd 8:48 0 30G 0 disk
├─ceph--03aa3f16--8c5f--491b--9ff8--31936bec45d7-osd--block--b25afef1--238d--4b72--bf50--f7ae2b30a74b 253:6 0 10G 0 lvm
├─ceph--03aa3f16--8c5f--491b--9ff8--31936bec45d7-osd--block--ae954b84--f4cc--4756--9f1c--b90df6b8cd99 253:7 0 10G 0 lvm
└─ceph--03aa3f16--8c5f--491b--9ff8--31936bec45d7-osd--block--480e5966--0a66--4b05--95f1--5f35db59d60e 253:8 0 10G 0 lvm
sr0 11:0 1 1024M 0 rom
Check VPS thấy 4 PV — /dev/sda3
cho OS (VG ubuntu-vg
) và 3 disk /dev/sdb /dev/sdc /dev/sdd
cho Ceph (mỗi cái là 1 VG riêng), mỗi PV ~30 GB.
shell> pvs
PV VG Fmt Attr PSize PFree
/dev/sda3 ubuntu-vg lvm2 a-- <48.00g 0
/dev/sdb ceph-2eb0a830-c3e6-4657-a367-08ed8baf5697 lvm2 a-- <30.00g 8.00m
/dev/sdc ceph-2931863d-cfea-482b-9d65-c0b943c32372 lvm2 a-- <30.00g 8.00m
/dev/sdd ceph-e6e419da-44d7-4587-b8e2-e3320ee5a6d7 lvm2 a-- <30.00g 8.00m
Check VGS thấy có 4 VG — ubuntu-vg (~48 GB) và 3 VG của Ceph (ceph-…) mỗi cái ~30 GB, mỗi VG Ceph đang chứa 3 LV (tương ứng 3 OSD block).
shell> vgs
VG #PV #LV #SN Attr VSize VFree
ceph-2931863d-cfea-482b-9d65-c0b943c32372 1 3 0 wz--n- <30.00g 8.00m
ceph-2eb0a830-c3e6-4657-a367-08ed8baf5697 1 3 0 wz--n- <30.00g 8.00m
ceph-e6e419da-44d7-4587-b8e2-e3320ee5a6d7 1 3 0 wz--n- <30.00g 8.00m
ubuntu-vg 1 1 0 wz--n- <48.00g 0
Check LVS ta thấy mỗi VG Ceph có 3 LV tên dạng osd-block-...
, kích thước ~10 GB/LV → tổng 9 LV cho 3 đĩa (tức 9 OSD block devices).
shell>lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
osd-block-0467454d-acc8-4434-9227-7f433751cec7 ceph-2931863d-cfea-482b-9d65-c0b943c32372 -wi-a----- <10.00g
osd-block-5ac7304b-75b0-4957-8e84-714d682259ca ceph-2931863d-cfea-482b-9d65-c0b943c32372 -wi-a----- <10.00g
osd-block-68090eb5-d119-4649-a9a1-a14e435d6988 ceph-2931863d-cfea-482b-9d65-c0b943c32372 -wi-a----- <10.00g
osd-block-16fe3fc6-e824-4c11-a52c-ff2369a8936c ceph-2eb0a830-c3e6-4657-a367-08ed8baf5697 -wi-a----- <10.00g
osd-block-2eab432a-e8ad-45a5-bfad-98c1c2319816 ceph-2eb0a830-c3e6-4657-a367-08ed8baf5697 -wi-a----- <10.00g
osd-block-f0aefc36-4189-4097-b849-162f81837246 ceph-2eb0a830-c3e6-4657-a367-08ed8baf5697 -wi-a----- <10.00g
osd-block-905f7444-7309-412e-9c80-cce69c4cd45d ceph-e6e419da-44d7-4587-b8e2-e3320ee5a6d7 -wi-a----- <10.00g
osd-block-a2f28c73-9268-4eae-9e9f-fa5507d0e744 ceph-e6e419da-44d7-4587-b8e2-e3320ee5a6d7 -wi-a----- <10.00g
osd-block-d8045774-7b48-432e-955b-90724fcef4fa ceph-e6e419da-44d7-4587-b8e2-e3320ee5a6d7 -wi-a----- <10.00g
ubuntu-lv ubuntu-vg -wi-ao---- <48.00g
Thông tin thêm về network, cực kỳ quan trọng với thực tế nên đừng bao giờ bỏ qua.
shell> cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens160:
addresses:
- 10.237.7.77/24
nameservers:
addresses: []
search: []
version: 2
shell> ethtool ens160 | grep -E "Link detected|Speed"
Speed: 10000Mb/s
Link detected: yes
Đứng từ node mới CEPH-LAB-NODE77 dùng lệnh cephadm check-host
để kiểm tra môi trường host. Kết quả cho thấy node CEPH-LAB-NODE76 đầy đủ yêu cầu: có podman, systemctl, lvcreate, chrony đang chạy, hostname đúng → host sẵn sàng tham gia cluster.
shell> cephadm check-host
podman (/usr/bin/podman) version 3.4.4 is present
systemctl is present
lvcreate is present
Unit chrony.service is enabled and running
Host looks OK
3. Quy trình từng bước
3.1. Đóng băng cluster
Ngăn cluster recovery hoặc backfill trong lúc chúng ta action.
ceph osd set noout
ceph osd set norecover
ceph osd set nobackfill
Tuỳ chọn tắt deep và scrub để giảm I/O.
ceph osd set noscrub
ceph osd set nodeep-scrub
Check cluster, ta thấy sẽ có thêm cảnh báo có nhiều flag bảo vệ (noout, norecover, noscrub, nodeep-scrub
) đang bật, lúc này Ceph không tự recovery, backfill hay scrub dữ liệu.
Monitors và managers vẫn ổn định (quorum đủ 3 node, mgr active + standby).
Tổng số OSD là 54 nhưng chỉ có 45 OSD up, còn 9 OSD trên host offline.
Bật các flag này sẽ rất cần thiết và thích hợp khi bảo trì, nhưng cần gỡ flag sau khi xong để phục hồi redundancy.
shell> ceph -s
cluster:
id: 02e6fe3c-72c7-11f0-9003-45eb18128e69
health: HEALTH_WARN
1 hosts fail cephadm check
noout,norecover,noscrub,nodeep-scrub flag(s) set
9 osds down
1 host (9 osds) down
Degraded data redundancy: 84 pgs undersized
services:
mon: 3 daemons, quorum CEPH-LAB-NODE71,CEPH-LAB-NODE72,CEPH-LAB-NODE73 (age 12d)
mgr: CEPH-LAB-NODE71.dmmtko(active, since 3w), standbys: CEPH-LAB-NODE72.nfmjcp, CEPH-LAB-NODE73.eoncxf
osd: 54 osds: 45 up (since 85m), 54 in (since 2h)
flags noout,norecover,noscrub,nodeep-scrub
rgw: 3 daemons active (3 hosts, 1 zones)
data:
pools: 9 pools, 449 pgs
objects: 334 objects, 1.5 MiB
usage: 17 GiB used, 523 GiB / 540 GiB avail
pgs: 365 active+clean
84 active+undersized
io:
client: 306 B/s rd, 0 op/s rd, 0 op/s wr
3.2. Thêm node mới
ceph orch host add CEPH-LAB-NODE77 10.237.7.77 osd _no_schedule
Khi thêm node mới xong, chúng ta cũng có thể đứng từ Mon Node dùng lệnh ceph cephadm check-host CEPH-LAB-NODE77
kiểm tra môi trường host. Kết quả cho thấy node CEPH-LAB-NODE77 đầy đủ yêu cầu: có podman, systemctl, lvcreate, chrony đang chạy, hostname đúng → host sẵn sàng tham gia cluster.
shell> ceph cephadm check-host CEPH-LAB-NODE77
CEPH-LAB-NODE77 (None) ok
podman (/usr/bin/podman) version 3.4.4 is present
systemctl is present
lvcreate is present
Unit chrony.service is enabled and running
Hostname "CEPH-LAB-NODE77" matches what is expected.
Host looks OK
Khi kiểm tra lại danh sách host, ta thấy cụm hiện có 2 node liên quan:
- CEPH-LAB-NODE76 vẫn xuất hiện nhưng đang ở trạng thái Offline.
- CEPH-LAB-NODE77 đã được thêm mới và đang Online.
Lưu ý quan trọng là không được remove node CEPH-LAB-NODE76 ở bước này, chỉ giữ nguyên để đảm bảo an toàn cho dữ liệu và quá trình thay thế node.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-NODE71 10.237.7.71 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE72 10.237.7.72 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE73 10.237.7.73 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE74 10.237.7.74 osd
CEPH-LAB-NODE75 10.237.7.75 osd
CEPH-LAB-NODE76 10.237.7.76 osd Offline
CEPH-LAB-NODE77 10.237.7.77 osd
7 hosts in cluster
Khi chạy ceph osd tree
, bạn vẫn sẽ thấy CEPH-LAB-NODE76 nằm trong danh sách CRUSH map cùng với các OSD (45–53). Tuy nhiên, tất cả OSD của node này đều đang ở trạng thái down. Điều này cho thấy node 76 vẫn còn được Ceph ghi nhận trong cấu trúc phân phối dữ liệu, dù thực tế đã offline. Đây là hành vi bình thường trước khi hoàn tất quá trình thay thế node.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-15 0.26450 root obj-pool-01
-7 0.08817 host CEPH-LAB-NODE73
18 ssd 0.00980 osd.18 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
20 ssd 0.00980 osd.20 up 1.00000 1.00000
21 ssd 0.00980 osd.21 up 1.00000 1.00000
22 ssd 0.00980 osd.22 up 1.00000 1.00000
23 ssd 0.00980 osd.23 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
25 ssd 0.00980 osd.25 up 1.00000 1.00000
26 ssd 0.00980 osd.26 up 1.00000 1.00000
-9 0.08817 host CEPH-LAB-NODE74
27 ssd 0.00980 osd.27 up 1.00000 1.00000
28 ssd 0.00980 osd.28 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
30 ssd 0.00980 osd.30 up 1.00000 1.00000
31 ssd 0.00980 osd.31 up 1.00000 1.00000
32 ssd 0.00980 osd.32 up 1.00000 1.00000
33 ssd 0.00980 osd.33 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
35 ssd 0.00980 osd.35 up 1.00000 1.00000
-11 0.08817 host CEPH-LAB-NODE75
36 ssd 0.00980 osd.36 up 1.00000 1.00000
37 ssd 0.00980 osd.37 up 1.00000 1.00000
38 ssd 0.00980 osd.38 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
40 ssd 0.00980 osd.40 up 1.00000 1.00000
41 ssd 0.00980 osd.41 up 1.00000 1.00000
42 ssd 0.00980 osd.42 up 1.00000 1.00000
43 ssd 0.00980 osd.43 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
-13 0.26450 root blk-pool
-3 0.08817 host CEPH-LAB-NODE71
0 ssd 0.00980 osd.0 up 1.00000 1.00000
1 ssd 0.00980 osd.1 up 1.00000 1.00000
2 ssd 0.00980 osd.2 up 1.00000 1.00000
3 ssd 0.00980 osd.3 up 1.00000 1.00000
4 ssd 0.00980 osd.4 up 1.00000 1.00000
5 ssd 0.00980 osd.5 up 1.00000 1.00000
6 ssd 0.00980 osd.6 up 1.00000 1.00000
7 ssd 0.00980 osd.7 up 1.00000 1.00000
8 ssd 0.00980 osd.8 up 1.00000 1.00000
-5 0.08817 host CEPH-LAB-NODE72
9 ssd 0.00980 osd.9 up 1.00000 1.00000
10 ssd 0.00980 osd.10 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
12 ssd 0.00980 osd.12 up 1.00000 1.00000
13 ssd 0.00980 osd.13 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
15 ssd 0.00980 osd.15 up 1.00000 1.00000
16 ssd 0.00980 osd.16 up 1.00000 1.00000
17 ssd 0.00980 osd.17 up 1.00000 1.00000
-17 0.08817 host CEPH-LAB-NODE76
45 ssd 0.00980 osd.45 down 1.00000 1.00000
46 ssd 0.00980 osd.46 down 1.00000 1.00000
47 ssd 0.00980 osd.47 down 1.00000 1.00000
48 ssd 0.00980 osd.48 down 1.00000 1.00000
49 ssd 0.00980 osd.49 down 1.00000 1.00000
50 ssd 0.00980 osd.50 down 1.00000 1.00000
51 ssd 0.00980 osd.51 down 1.00000 1.00000
52 ssd 0.00980 osd.52 down 1.00000 1.00000
53 ssd 0.00980 osd.53 down 1.00000 1.00000
-1 0 root default
Khi kiểm tra bằng ceph orch device ls CEPH-LAB-NODE77
, ta thấy các disk /dev/sdb /dev/sdc /dev/sdd
đều có trạng thái AVAILABLE = No. Nguyên nhân là vì trên các thiết bị này vẫn còn filesystem/LVM từ các OSD trước đó nên Ceph không cho phép dùng trực tiếp để tạo OSD mới. Trong bối cảnh bài lab này, chúng ta sẽ tái sử dụng OSD đã có, vì vậy không cần thực hiện thao tác zap (xóa sạch dữ liệu và metadata trên disk).
shell> ceph orch device ls CEPH-LAB-NODE77
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
CEPH-LAB-NODE77 /dev/sdb ssd 30.0G No 93s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-NODE77 /dev/sdc ssd 30.0G No 93s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-NODE77 /dev/sdd ssd 30.0G No 93s ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-NODE77 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 93s ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
Khi chạy lại ceph osd tree
, ta sẽ thấy CEPH-LAB-NODE77 đã được thêm vào CRUSH map. Các OSD trước đây thuộc CEPH-LAB-NODE76 sẽ lần lượt được move sang node mới này. Sau khi move, từng OSD sẽ thay đổi trạng thái từ down sang up.
Trong output dưới, OSD.45 đã được gán sang CEPH-LAB-NODE77 và hiện ở trạng thái up, trong khi các OSD còn lại (46–53) vẫn hiển thị dưới node 76 ở trạng thái down cho tới khi quá trình move hoàn tất. Đây chính là cách Ceph đảm bảo dữ liệu và cấu trúc CRUSH map được dịch chuyển an toàn, từng bước một.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-15 0.26450 root obj-pool-01
-7 0.08817 host CEPH-LAB-NODE73
18 ssd 0.00980 osd.18 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
20 ssd 0.00980 osd.20 up 1.00000 1.00000
21 ssd 0.00980 osd.21 up 1.00000 1.00000
22 ssd 0.00980 osd.22 up 1.00000 1.00000
23 ssd 0.00980 osd.23 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
25 ssd 0.00980 osd.25 up 1.00000 1.00000
26 ssd 0.00980 osd.26 up 1.00000 1.00000
-9 0.08817 host CEPH-LAB-NODE74
27 ssd 0.00980 osd.27 up 1.00000 1.00000
28 ssd 0.00980 osd.28 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
30 ssd 0.00980 osd.30 up 1.00000 1.00000
31 ssd 0.00980 osd.31 up 1.00000 1.00000
32 ssd 0.00980 osd.32 up 1.00000 1.00000
33 ssd 0.00980 osd.33 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
35 ssd 0.00980 osd.35 up 1.00000 1.00000
-11 0.08817 host CEPH-LAB-NODE75
36 ssd 0.00980 osd.36 up 1.00000 1.00000
37 ssd 0.00980 osd.37 up 1.00000 1.00000
38 ssd 0.00980 osd.38 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
40 ssd 0.00980 osd.40 up 1.00000 1.00000
41 ssd 0.00980 osd.41 up 1.00000 1.00000
42 ssd 0.00980 osd.42 up 1.00000 1.00000
43 ssd 0.00980 osd.43 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
-13 0.25470 root blk-pool
-3 0.08817 host CEPH-LAB-NODE71
0 ssd 0.00980 osd.0 up 1.00000 1.00000
1 ssd 0.00980 osd.1 up 1.00000 1.00000
2 ssd 0.00980 osd.2 up 1.00000 1.00000
3 ssd 0.00980 osd.3 up 1.00000 1.00000
4 ssd 0.00980 osd.4 up 1.00000 1.00000
5 ssd 0.00980 osd.5 up 1.00000 1.00000
6 ssd 0.00980 osd.6 up 1.00000 1.00000
7 ssd 0.00980 osd.7 up 1.00000 1.00000
8 ssd 0.00980 osd.8 up 1.00000 1.00000
-5 0.08817 host CEPH-LAB-NODE72
9 ssd 0.00980 osd.9 up 1.00000 1.00000
10 ssd 0.00980 osd.10 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
12 ssd 0.00980 osd.12 up 1.00000 1.00000
13 ssd 0.00980 osd.13 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
15 ssd 0.00980 osd.15 up 1.00000 1.00000
16 ssd 0.00980 osd.16 up 1.00000 1.00000
17 ssd 0.00980 osd.17 up 1.00000 1.00000
-17 0.07837 host CEPH-LAB-NODE76
46 ssd 0.00980 osd.46 down 1.00000 1.00000
47 ssd 0.00980 osd.47 down 1.00000 1.00000
48 ssd 0.00980 osd.48 down 1.00000 1.00000
49 ssd 0.00980 osd.49 down 1.00000 1.00000
50 ssd 0.00980 osd.50 down 1.00000 1.00000
51 ssd 0.00980 osd.51 down 1.00000 1.00000
52 ssd 0.00980 osd.52 down 1.00000 1.00000
53 ssd 0.00980 osd.53 down 1.00000 1.00000
-1 0.00980 root default
-19 0.00980 host CEPH-LAB-NODE77
45 ssd 0.00980 osd.45 up 1.00000 1.00000
Khi chờ quá trình di chuyển hoàn tất, tất cả OSD 45–53 sẽ xuất hiện dưới CEPH-LAB-NODE77 và ở trạng thái up; CEPH-LAB-NODE76 về WEIGHT=0 (không còn OSD).
Output dưới đây đã phản ánh đúng trạng thái cuối: node 77 nắm toàn bộ OSD đã chuyển, cluster ổn định trở lại.
Hiện tại các OSD này đang gắn vào rule default
; nếu có CRUSH rule/pool riêng (ví dụ theo rack/zone), hãy điều chỉnh lại rule hoặc placement phù hợp sau khi di chuyển xong.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-15 0.26450 root obj-pool-01
-7 0.08817 host CEPH-LAB-NODE73
18 ssd 0.00980 osd.18 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
20 ssd 0.00980 osd.20 up 1.00000 1.00000
21 ssd 0.00980 osd.21 up 1.00000 1.00000
22 ssd 0.00980 osd.22 up 1.00000 1.00000
23 ssd 0.00980 osd.23 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
25 ssd 0.00980 osd.25 up 1.00000 1.00000
26 ssd 0.00980 osd.26 up 1.00000 1.00000
-9 0.08817 host CEPH-LAB-NODE74
27 ssd 0.00980 osd.27 up 1.00000 1.00000
28 ssd 0.00980 osd.28 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
30 ssd 0.00980 osd.30 up 1.00000 1.00000
31 ssd 0.00980 osd.31 up 1.00000 1.00000
32 ssd 0.00980 osd.32 up 1.00000 1.00000
33 ssd 0.00980 osd.33 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
35 ssd 0.00980 osd.35 up 1.00000 1.00000
-11 0.08817 host CEPH-LAB-NODE75
36 ssd 0.00980 osd.36 up 1.00000 1.00000
37 ssd 0.00980 osd.37 up 1.00000 1.00000
38 ssd 0.00980 osd.38 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
40 ssd 0.00980 osd.40 up 1.00000 1.00000
41 ssd 0.00980 osd.41 up 1.00000 1.00000
42 ssd 0.00980 osd.42 up 1.00000 1.00000
43 ssd 0.00980 osd.43 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
-13 0.17633 root blk-pool
-3 0.08817 host CEPH-LAB-NODE71
0 ssd 0.00980 osd.0 up 1.00000 1.00000
1 ssd 0.00980 osd.1 up 1.00000 1.00000
2 ssd 0.00980 osd.2 up 1.00000 1.00000
3 ssd 0.00980 osd.3 up 1.00000 1.00000
4 ssd 0.00980 osd.4 up 1.00000 1.00000
5 ssd 0.00980 osd.5 up 1.00000 1.00000
6 ssd 0.00980 osd.6 up 1.00000 1.00000
7 ssd 0.00980 osd.7 up 1.00000 1.00000
8 ssd 0.00980 osd.8 up 1.00000 1.00000
-5 0.08817 host CEPH-LAB-NODE72
9 ssd 0.00980 osd.9 up 1.00000 1.00000
10 ssd 0.00980 osd.10 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
12 ssd 0.00980 osd.12 up 1.00000 1.00000
13 ssd 0.00980 osd.13 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
15 ssd 0.00980 osd.15 up 1.00000 1.00000
16 ssd 0.00980 osd.16 up 1.00000 1.00000
17 ssd 0.00980 osd.17 up 1.00000 1.00000
-17 0 host CEPH-LAB-NODE76
-1 0.08817 root default
-19 0.08817 host CEPH-LAB-NODE77
45 ssd 0.00980 osd.45 up 1.00000 1.00000
46 ssd 0.00980 osd.46 up 1.00000 1.00000
47 ssd 0.00980 osd.47 up 1.00000 1.00000
48 ssd 0.00980 osd.48 up 1.00000 1.00000
49 ssd 0.00980 osd.49 up 1.00000 1.00000
50 ssd 0.00980 osd.50 up 1.00000 1.00000
51 ssd 0.00980 osd.51 up 1.00000 1.00000
52 ssd 0.00980 osd.52 up 1.00000 1.00000
53 ssd 0.00980 osd.53 up 1.00000 1.00000
Khi tất cả đã up trên CEPH-LAB-NODE77, chúng ta có thể xóa host CEPH-LAB-NODE76.
shell> ceph orch host rm CEPH-LAB-NODE76 --offline --force
Removed offline host 'CEPH-LAB-NODE76'
Sau khi chạy lệnh trên, node CEPH-LAB-NODE76 đã được gỡ bỏ khỏi cluster.
shell> ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-NODE71 10.237.7.71 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE72 10.237.7.72 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE73 10.237.7.73 _admin,mon,mgr,osd,rgw
CEPH-LAB-NODE74 10.237.7.74 osd
CEPH-LAB-NODE75 10.237.7.75 osd
CEPH-LAB-NODE77 10.237.7.77 osd
6 hosts in cluster
Kiểm tra lại ceph -s
cho thấy toàn bộ 54/54 OSD đều đã up và in, PG ở trạng thái active+clean.
Tuy nhiên cluster vẫn báo HEALTH_WARN do tồn tại các stray daemon không còn được cephadm quản lý trên host cũ (node 76) và do một số flag (noout, norecover, noscrub, nodeep-scrub
) còn bật.
Khi xử lý xong phần stray daemon và unset các flag, cluster sẽ chuyển sang trạng thái HEALTH_OK
shell> ceph -s
cluster:
id: 02e6fe3c-72c7-11f0-9003-45eb18128e69
health: HEALTH_WARN
1 stray host(s) with 9 daemon(s) not managed by cephadm
noout,norecover,noscrub,nodeep-scrub flag(s) set
services:
mon: 3 daemons, quorum CEPH-LAB-NODE71,CEPH-LAB-NODE72,CEPH-LAB-NODE73 (age 12d)
mgr: CEPH-LAB-NODE71.dmmtko(active, since 3w), standbys: CEPH-LAB-NODE72.nfmjcp, CEPH-LAB-NODE73.eoncxf
osd: 54 osds: 54 up (since 7m), 54 in (since 3h)
flags noout,norecover,noscrub,nodeep-scrub
rgw: 3 daemons active (3 hosts, 1 zones)
data:
pools: 9 pools, 449 pgs
objects: 334 objects, 1.5 MiB
usage: 17 GiB used, 522 GiB / 540 GiB avail
pgs: 449 active+clean
Bỏ cờ đóng băng đã set trước đó
ceph osd unset noout
ceph osd unset norecover
ceph osd unset nobackfill
ceph osd unset noscrub
ceph osd unset nodeep-scrub
Thông báo 1 stray host(s) with 9 daemon(s) not managed by cephadm là do crash đang lưu cache cũ. Dọn crash cũ & refresh mgr bằng lệnh dưới nếu còn.
ceph crash archive-all
ceph mgr fail
Sau khi chạy ceph mgr fail
, cluster đã refresh lại và loại bỏ cache crash cũ, kết quả status trở về HEALTH_OK: tất cả 54/54 OSD đều up/in, 449 PG active+clean.
shell> ceph -s
cluster:
id: 02e6fe3c-72c7-11f0-9003-45eb18128e69
health: HEALTH_OK
services:
mon: 3 daemons, quorum CEPH-LAB-NODE71,CEPH-LAB-NODE72,CEPH-LAB-NODE73 (age 12d)
mgr: CEPH-LAB-NODE72.nfmjcp(active, since 25s), standbys: CEPH-LAB-NODE73.eoncxf
osd: 54 osds: 54 up (since 18m), 54 in (since 4h)
rgw: 3 daemons active (3 hosts, 1 zones)
data:
pools: 9 pools, 449 pgs
objects: 334 objects, 1.5 MiB
usage: 17 GiB used, 522 GiB / 540 GiB avail
pgs: 449 active+clean
Đưa node 77 về đúng rule CRUSH nếu cần
shell> ceph osd crush move CEPH-LAB-NODE77 root=blk-pool
moved item id -19 name 'CEPH-LAB-NODE77' to location {root=blk-pool} in crush map
Check lại Ceph osd tree ta có kết quả cuối cùng.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-15 0.26450 root obj-pool-01
-7 0.08817 host CEPH-LAB-NODE73
18 ssd 0.00980 osd.18 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
20 ssd 0.00980 osd.20 up 1.00000 1.00000
21 ssd 0.00980 osd.21 up 1.00000 1.00000
22 ssd 0.00980 osd.22 up 1.00000 1.00000
23 ssd 0.00980 osd.23 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
25 ssd 0.00980 osd.25 up 1.00000 1.00000
26 ssd 0.00980 osd.26 up 1.00000 1.00000
-9 0.08817 host CEPH-LAB-NODE74
27 ssd 0.00980 osd.27 up 1.00000 1.00000
28 ssd 0.00980 osd.28 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
30 ssd 0.00980 osd.30 up 1.00000 1.00000
31 ssd 0.00980 osd.31 up 1.00000 1.00000
32 ssd 0.00980 osd.32 up 1.00000 1.00000
33 ssd 0.00980 osd.33 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
35 ssd 0.00980 osd.35 up 1.00000 1.00000
-11 0.08817 host CEPH-LAB-NODE75
36 ssd 0.00980 osd.36 up 1.00000 1.00000
37 ssd 0.00980 osd.37 up 1.00000 1.00000
38 ssd 0.00980 osd.38 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
40 ssd 0.00980 osd.40 up 1.00000 1.00000
41 ssd 0.00980 osd.41 up 1.00000 1.00000
42 ssd 0.00980 osd.42 up 1.00000 1.00000
43 ssd 0.00980 osd.43 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
-13 0.26450 root blk-pool
-3 0.08817 host CEPH-LAB-NODE71
0 ssd 0.00980 osd.0 up 1.00000 1.00000
1 ssd 0.00980 osd.1 up 1.00000 1.00000
2 ssd 0.00980 osd.2 up 1.00000 1.00000
3 ssd 0.00980 osd.3 up 1.00000 1.00000
4 ssd 0.00980 osd.4 up 1.00000 1.00000
5 ssd 0.00980 osd.5 up 1.00000 1.00000
6 ssd 0.00980 osd.6 up 1.00000 1.00000
7 ssd 0.00980 osd.7 up 1.00000 1.00000
8 ssd 0.00980 osd.8 up 1.00000 1.00000
-5 0.08817 host CEPH-LAB-NODE72
9 ssd 0.00980 osd.9 up 1.00000 1.00000
10 ssd 0.00980 osd.10 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
12 ssd 0.00980 osd.12 up 1.00000 1.00000
13 ssd 0.00980 osd.13 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
15 ssd 0.00980 osd.15 up 1.00000 1.00000
16 ssd 0.00980 osd.16 up 1.00000 1.00000
17 ssd 0.00980 osd.17 up 1.00000 1.00000
-19 0.08817 host CEPH-LAB-NODE77
45 ssd 0.00980 osd.45 up 1.00000 1.00000
46 ssd 0.00980 osd.46 up 1.00000 1.00000
47 ssd 0.00980 osd.47 up 1.00000 1.00000
48 ssd 0.00980 osd.48 up 1.00000 1.00000
49 ssd 0.00980 osd.49 up 1.00000 1.00000
50 ssd 0.00980 osd.50 up 1.00000 1.00000
51 ssd 0.00980 osd.51 up 1.00000 1.00000
52 ssd 0.00980 osd.52 up 1.00000 1.00000
53 ssd 0.00980 osd.53 up 1.00000 1.00000
-1 0 root default
4. Tóm tắt quy trình.
- Node CEPH-LAB-NODE76 bị shutdown, 9 OSD (45–53) down.
- Gắn đĩa sang CEPH-LAB-NODE77, chạy
ceph-volume lvm activate --all
. - OSD 45–53 xuất hiện trên CEPH-LAB-NODE77 với trạng thái up,in.
- Xóa CEPH-LAB-NODE76 khỏi orchestrator, dọn stray host.
- Cluster trở về trạng thái
HEALTH_OK
.
5. Kết luận
Swap OSD từ node hỏng sang node mới là một cách giảm thiểu rủi ro và rút ngắn thời gian phục hồi, đặc biệt khi replication thấp. Thực hiện đúng các bước này, cluster sẽ nhanh chóng trở lại HEALTH_OK
mà không phải rebuild dữ liệu lớn.