Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

Tổng quan

Quy trình “remove (bỏ khỏi monmap/quorum) rồi join/add lại MON” khi MON bị lỗi / bị kẹt / host down lâu ngày — chỉ là với cephadm/ceph orch thì có vài điểm đặc thù.

OVERVIEW

Tài liệu này mô tả quy trình gỡ và thêm lại Monitor (mon) trong cụm Ceph quản trị bằng cephadm + ceph orch khi một host/daemon mon bị down lâu, kẹt quorum, hoặc host ở trạng thái maintenance.

Dành cho ai

  • Admin vận hành Ceph dùng cephadm/ceph orch.
  • Trường hợp cluster đang chạy, cần đưa mon bị lỗi quay lại quorum một cách “đúng bài”.

Dùng khi nào

  • ceph -s báo mons down, out of quorum, hoặc mon.<HOST> stopped.
  • Host từng maintenance mode hoặc offline lâu ngày.
  • Cần “reset sạch” mon trên host đó rồi deploy lại bằng orchestrator.

Cách đọc nhanh

  1. Xác nhận hiện trạng: ceph -s, ceph orch ps --daemon_type mon, ceph orch ls --service_type mon.
  2. Tạm thời loại host khỏi placement (remove label mon) để mon service không cố “kéo” nó vào.
  3. Khi host online: thoát maintenance mode để dịch vụ khác hồi phục.
  4. Dọn dấu vết MON cũ trên host (nếu còn) — chỉ mon, không đụng osd.
  5. Add lại mon + gắn lại label để mon service trở về size mong muốn.
  6. Verify: quorum đủ, ceph -s HEALTH_OK.

Warning

  • Đây là quy trình dành cho mon. Không áp dụng tương tự cho osd/mgr nếu chưa nắm rõ hậu quả.
  • Không xóa nhầm /var/lib/ceph/*/osd.* — dữ liệu OSD phải giữ nguyên.

1) Check status cluster trước

Ta thấy có 1 node đang CEPH-LAB-NODE162 đang maintenance mode, node này có cả rgw, mgr, monosd.

root@CEPH-LAB-NODE161:~# ceph -s
  cluster:
    id:     2575782c-099c-11f1-aa27-1db7e16056f3
    health: HEALTH_WARN
            7 failed cephadm daemon(s)
            1 host is in maintenance mode
            1/3 mons down, quorum CEPH-LAB-NODE161,CEPH-LAB-NODE163
            9 osds down
            1 OSDs or CRUSH {nodes, device-classes} have {NOUP,NODOWN,NOIN,NOOUT} flags set
            1 host (9 osds) down
            Degraded data redundancy: 192/1119 objects degraded (17.158%), 32 pgs degraded, 174 pgs undersized

  services:
    mon: 3 daemons, quorum CEPH-LAB-NODE161,CEPH-LAB-NODE163 (age 3m), out of quorum: CEPH-LAB-NODE162
    mgr: CEPH-LAB-NODE161.wmafdi(active, since 9m), standbys: CEPH-LAB-NODE163.bfdfhe
    osd: 45 osds: 36 up (since 3m), 45 in (since 9d)
    rgw: 2 daemons active (2 hosts, 1 zones)

  data:
    pools:   9 pools, 289 pgs
    objects: 373 objects, 735 KiB
    usage:   8.6 GiB used, 441 GiB / 450 GiB avail
    pgs:     192/1119 objects degraded (17.158%)
             142 active+undersized
             115 active+clean
             32  active+undersized+degraded

1.1) Xác định daemon mon đang như thế nào

Check daemon_typemon.

root@CEPH-LAB-NODE161:~# ceph orch ps --daemon_type mon
NAME                  HOST              PORTS  STATUS        REFRESHED  AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID
mon.CEPH-LAB-NODE161  CEPH-LAB-NODE161         running (9d)    34s ago   9d     704M    2048M  18.2.4   2bc0b0f4375d  c5d10b6a9deb
mon.CEPH-LAB-NODE162  CEPH-LAB-NODE162         stopped          5m ago   9d     143M    2048M  18.2.4   2bc0b0f4375d  f35f9d526de0
mon.CEPH-LAB-NODE163  CEPH-LAB-NODE163         running (9d)    34s ago   9d     683M    2048M  18.2.4   2bc0b0f4375d  50663982faf1

1.2) Xác định service mon đang “đặt” ở đâu

Check service_type mon.

root@CEPH-LAB-NODE161:~# ceph orch ls --service_type mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              2/3  6m ago     9d   label:mon

Xem manifest đang define cho service mon (placement theo label: mon).

root@CEPH-LAB-NODE161:~# ceph orch ls --service_type mon --format yaml
service_type: mon
service_name: mon
placement:
  label: mon
status:
  created: '2026-02-14T11:58:13.843349Z'
  last_refresh: '2026-02-24T03:45:46.493690Z'
  running: 2
  size: 3

2) Remove MON khỏi placement (tạm thời) bằng cách gỡ label mon

Mục tiêu của bước này:

  • Loại CEPH-LAB-NODE162 khỏi label:mon placement, tránh orch cố “kéo” mon về trong lúc host đang offline/maintenance.
  • Đồng thời monmap/quorum sẽ phản ánh chỉ còn 2 mon (tạm thời).

Hãy xóa label mon của node này.

root@CEPH-LAB-NODE161:~# ceph orch host label rm CEPH-LAB-NODE162 mon
Removed label mon from host CEPH-LAB-NODE162

List lại để thấy label đã xóa.

root@CEPH-LAB-NODE161:~# ceph orch host ls
HOST              ADDR             LABELS              STATUS
CEPH-LAB-NODE161  192.168.100.161  _admin,mon,mgr,osd
CEPH-LAB-NODE162  192.168.100.162  _admin,mgr,osd      Offline
CEPH-LAB-NODE163  192.168.100.163  _admin,mon,mgr,osd
CEPH-LAB-NODE164  192.168.100.164  osd
CEPH-LAB-NODE165  192.168.100.165  osd
5 hosts in cluster

Số lượng service_type mon giảm xuống còn 2 (placement label:mon giờ chỉ match 2 host).

root@CEPH-LAB-NODE161:~# ceph orch ls --service_type mon
NAME  PORTS  RUNNING  REFRESHED  AGE  PLACEMENT
mon              2/2  9m ago     9d   label:mon

Tương tự danh sách mon đã mất CEPH-LAB-NODE162 khi dump mon.

root@CEPH-LAB-NODE161:~# ceph mon dump
epoch 4
fsid 2575782c-099c-11f1-aa27-1db7e16056f3
last_changed 2026-02-24T03:51:22.993570+0000
created 2026-02-14T11:56:09.949563+0000
min_mon_release 18 (reef)
election_strategy: 1
0: [v2:192.168.100.161:3300/0,v1:192.168.100.161:6789/0] mon.CEPH-LAB-NODE161
1: [v2:192.168.100.163:3300/0,v1:192.168.100.163:6789/0] mon.CEPH-LAB-NODE163
dumped monmap epoch 4

Note

  • Việc mon giảm xuống 2/2 là trạng thái tạm thời (miễn cluster vẫn đủ quorum theo yêu cầu vận hành của bạn).
  • Khi hoàn tất, mục tiêu là đưa service mon trở lại 3/3.

3) Khi NODE162 online lại: thoát maintenance mode để dịch vụ hồi phục

Khi NODE162 online lại, check status thấy mon đã bị gỡ nhưng các dịch vụ khác đang down vì đang maintenance mode.

root@CEPH-LAB-NODE161:~# ceph -s
  cluster:
    id:     2575782c-099c-11f1-aa27-1db7e16056f3
    health: HEALTH_WARN
            7 failed cephadm daemon(s)
            1 host is in maintenance mode
            9 osds down
            1 OSDs or CRUSH {nodes, device-classes} have {NOUP,NODOWN,NOIN,NOOUT} flags set
            1 host (9 osds) down
            Degraded data redundancy: 192/1119 objects degraded (17.158%), 32 pgs degraded, 174 pgs undersized

  services:
    mon: 2 daemons, quorum CEPH-LAB-NODE161,CEPH-LAB-NODE163 (age 7m)
    mgr: CEPH-LAB-NODE161.wmafdi(active, since 19m), standbys: CEPH-LAB-NODE163.bfdfhe
    osd: 45 osds: 36 up (since 12m), 45 in (since 9d)
    rgw: 2 daemons active (2 hosts, 1 zones)

  data:
    pools:   9 pools, 289 pgs
    objects: 373 objects, 735 KiB
    usage:   8.6 GiB used, 441 GiB / 450 GiB avail
    pgs:     192/1119 objects degraded (17.158%)
             142 active+undersized
             115 active+clean
             32  active+undersized+degraded

Nên gỡ cờ maintenance mode trước để các dịch vụ node này hoạt động trở lại.

root@CEPH-LAB-NODE161:~# ceph orch host maintenance exit CEPH-LAB-NODE162
Ceph cluster 2575782c-099c-11f1-aa27-1db7e16056f3 on CEPH-LAB-NODE162 has exited maintenance mode

3.1) Verify nhanh OSD đã up lại trên node này

root@CEPH-LAB-NODE161:~# ceph osd tree | grep CEPH-LAB-NODE162 -A10
 -7         0.08817      host CEPH-LAB-NODE162
  2    ssd  0.00980          osd.2                  up   1.00000  1.00000
  6    ssd  0.00980          osd.6                  up   1.00000  1.00000
 11    ssd  0.00980          osd.11                 up   1.00000  1.00000
 16    ssd  0.00980          osd.16                 up   1.00000  1.00000
 21    ssd  0.00980          osd.21                 up   1.00000  1.00000
 26    ssd  0.00980          osd.26                 up   1.00000  1.00000
 31    ssd  0.00980          osd.31                 up   1.00000  1.00000
 36    ssd  0.00980          osd.36                 up   1.00000  1.00000
 42    ssd  0.00980          osd.42                 up   1.00000  1.00000
-11         0.08817      host CEPH-LAB-NODE163

Check lại status đã ok.

root@CEPH-LAB-NODE161:~# ceph -s
  cluster:
    id:     2575782c-099c-11f1-aa27-1db7e16056f3
    health: HEALTH_OK

  services:
    mon: 2 daemons, quorum CEPH-LAB-NODE161,CEPH-LAB-NODE163 (age 6m)
    mgr: CEPH-LAB-NODE161.wmafdi(active, since 28m), standbys: CEPH-LAB-NODE162.gevlhi, CEPH-LAB-NODE163.bfdfhe
    osd: 45 osds: 45 up (since 5m), 45 in (since 9d)
    rgw: 3 daemons active (3 hosts, 1 zones)

  data:
    pools:   9 pools, 289 pgs
    objects: 372 objects, 735 KiB
    usage:   8.7 GiB used, 441 GiB / 450 GiB avail
    pgs:     289 active+clean

List host cũng ok tuy nhiên label mon chưa gắn lại (đúng kỳ vọng ở bước này).

root@CEPH-LAB-NODE161:~# ceph orch host ls
HOST              ADDR             LABELS              STATUS
CEPH-LAB-NODE161  192.168.100.161  _admin,mon,mgr,osd
CEPH-LAB-NODE162  192.168.100.162  _admin,mgr,osd
CEPH-LAB-NODE163  192.168.100.163  _admin,mon,mgr,osd
CEPH-LAB-NODE164  192.168.100.164  osd
CEPH-LAB-NODE165  192.168.100.165  osd
5 hosts in cluster

4) Trên CEPH-LAB-NODE162: kiểm tra và dọn “dấu vết MON cũ” (nếu còn)

Mục tiêu:

  • Đảm bảo trên host CEPH-LAB-NODE162 không còn mon daemon/data cũ gây conflict khi deploy lại.
  • Chỉ đụng tới mon, tuyệt đối không ảnh hưởng osd.

4.1) Xem còn mon daemon không

root@CEPH-LAB-NODE162:~# cephadm ls | grep -E 'mon\.CEPH-LAB-NODE162|mon\.' || true
<trống>

# Nếu còn vết (ví dụ trên node CEPH-LAB-NODE161)
root@CEPH-LAB-NODE161:~# cephadm ls | grep -E 'mon\.CEPH-LAB-NODE161|mon\.' || true
        "name": "mon.CEPH-LAB-NODE161",
        "systemd_unit": "ceph-2575782c-099c-11f1-aa27-1db7e16056f3@mon.CEPH-LAB-NODE161",

Nếu còn output ở trên thì remove daemon mon cũ theo lệnh này (ví dụ này không có output gì nên không cần gõ nữa).

cephadm rm-daemon --name mon.CEPH-LAB-NODE162 --force || true

4.2) Xoá data mon cũ (chỉ dịch vụ mon thôi)

Warning

  • Bắt buộc verify trước: nếu không tồn tại thì không cần xóa.
  • Không đụng gì tới /var/lib/ceph/*/osd.*OSD giữ nguyên.

Thử verify trước nếu không có thì khỏi thực hiện xóa, ví dụ:

root@CEPH-LAB-NODE162:~# ls -l /var/lib/ceph/*/mon.CEPH-LAB-NODE162
ls: cannot access '/var/lib/ceph/*/mon.CEPH-LAB-NODE162': No such file or directory

root@CEPH-LAB-NODE161:~#  ls -l /var/lib/ceph/*/mon.CEPH-LAB-NODE161
total 52
-rw------- 1 ceph ceph  292 Feb 24 10:51 config
-rw------- 1 ceph ceph    7 Feb 24 11:30 external_log_to
-rw------- 1 ceph ceph   77 Feb 24 10:51 keyring
-rw------- 1 ceph ceph    8 Feb 14 18:56 kv_backend
-rw------- 1 ceph ceph    5 Feb 14 18:56 min_mon_release
drwxr-xr-x 2 ceph ceph 4096 Feb 24 11:28 store.db
-rw------- 1 ceph ceph   38 Feb 24 10:51 unit.configured
-rw------- 1 ceph ceph   48 Feb 14 18:56 unit.created
-rw------- 1 root root   39 Feb 14 18:56 unit.image
-rw------- 1 root root  101 Feb 14 18:56 unit.meta
-rw------- 1 root root  378 Feb 14 18:56 unit.poststop
-rw------- 1 root root 2022 Feb 14 18:56 unit.run
-rw------- 1 root root  378 Feb 14 18:56 unit.stop

Nếu còn thư mục mon thì xóa.

rm -rf /var/lib/ceph/*/mon.CEPH-LAB-NODE162

5) Add lại MON lên NODE162 và gắn label mon lại

Mục tiêu:

  • Deploy lại mon.CEPH-LAB-NODE162 bằng orchestrator.
  • Gắn lại label để mon service label:mon quay về size 3.

Trên 1 mon bất kỳ (ví dụ NODE161), add mon mới lên host 162.

root@CEPH-LAB-NODE161:~# ceph orch daemon add mon CEPH-LAB-NODE162
Deployed mon.CEPH-LAB-NODE162 on host 'CEPH-LAB-NODE162'

Gắn lại label để mon service label:mon quay về size 3.

root@CEPH-LAB-NODE161:~# ceph orch host label add CEPH-LAB-NODE162 mon
Added label mon to host CEPH-LAB-NODE162

6) Verify sau khi add lại MON

6.1) Check daemon_type mon đã có 3 node (gồm NODE162)

root@CEPH-LAB-NODE161:~# ceph orch ps --daemon_type mon
NAME                  HOST              PORTS  STATUS         REFRESHED  AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID
mon.CEPH-LAB-NODE161  CEPH-LAB-NODE161         running (9d)      9m ago   9d     699M    2048M  18.2.4   2bc0b0f4375d  c5d10b6a9deb
mon.CEPH-LAB-NODE162  CEPH-LAB-NODE162         running (12s)     6s ago  12s    87.6M    2048M  18.2.4   2bc0b0f4375d  4715ad0317af
mon.CEPH-LAB-NODE163  CEPH-LAB-NODE163         running (9d)      9m ago   9d     682M    2048M  18.2.4   2bc0b0f4375d  50663982faf1

6.2) Check quorum_status thấy đủ 3 mon

root@CEPH-LAB-NODE161:~# ceph quorum_status | jq -r '.quorum_names'
[
  "CEPH-LAB-NODE161",
  "CEPH-LAB-NODE163",
  "CEPH-LAB-NODE162"
]

6.3) Check ceph -s healthy và đủ 3 mon

root@CEPH-LAB-NODE161:~# ceph -s
  cluster:
    id:     2575782c-099c-11f1-aa27-1db7e16056f3
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum CEPH-LAB-NODE161,CEPH-LAB-NODE163,CEPH-LAB-NODE162 (age 115s)
    mgr: CEPH-LAB-NODE161.wmafdi(active, since 96m), standbys: CEPH-LAB-NODE162.gevlhi, CEPH-LAB-NODE163.bfdfhe
    osd: 45 osds: 45 up (since 36m), 45 in (since 9d)
    rgw: 3 daemons active (3 hosts, 1 zones)

  data:
    pools:   9 pools, 289 pgs
    objects: 372 objects, 735 KiB
    usage:   8.8 GiB used, 441 GiB / 450 GiB avail
    pgs:     289 active+clean

Lưu ý quan trọng

  • Luôn kiểm tra placement của mon service (ceph orch ls --service_type mon) trước khi thao tác label.
  • Label mon quyết định host nào được orch xem là “ứng viên” để chạy mon theo placement label:mon.
  • Khi host quay lại online, thoát maintenance mode sớm để tránh hiểu nhầm “dịch vụ down do lỗi” trong khi thực tế bị giữ bởi maintenance.
  • Khi cần dọn dẹp:

  • Chỉ dọn mon: cephadm rm-daemon (nếu còn) và /var/lib/ceph/*/mon.<HOST>.

  • Không xóa /var/lib/ceph/*/osd.*.

Warning

  • Nếu cluster chỉ còn 2 mon, hãy đảm bảo bạn hiểu yêu cầu quorum và rủi ro vận hành trước khi kéo dài trạng thái này.
  • Mọi thao tác xóa dữ liệu dưới /var/lib/ceph đều nên verify path chính xác theo host/daemon cần xử lý.

Kết luận

Quy trình “remove rồi join/add lại MON” trong cephadm/ceph orch thực chất là:

  • Loại host khỏi placement (gỡ label mon) để cụm ổn định và monmap phản ánh đúng.
  • Khi host trở lại: thoát maintenance, dọn sạch dấu vết mon cũ nếu còn, rồi deploy lại mongắn lại label.
  • Verify quorumceph -s để xác nhận cụm đã về trạng thái mong muốn.