Quy trình swap OSD từ node chết sang node mới giữ nguyên dữ liệu

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ặc obj-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_DOWNOSD_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.

Bài viết gần đây

spot_img

Related Stories

Leave A Reply

Please enter your comment!
Please enter your name here

Đăng ký nhận thông tin bài viết qua email