1. Tổng quan
Trong vòng đời vận hành Ceph, không phải lúc nào OSD cũng bị hỏng mới cần gỡ. Có nhiều trường hợp bạn muốn gỡ OSD còn đang hoạt động bình thường, chẳng hạn:
- Ổ đĩa hết khấu hao (đủ 3-5 năm vận hành)
- Cần thay ổ đĩa mới dung lượng cao hơn
- Giảm tải trên node nhất định
Quy trình gỡ mềm OSD trong những trường hợp này cần đảm bảo không làm mất dữ liệu và để Ceph có thời gian tự cân bằng (rebalance) trước khi thực sự loại bỏ OSD khỏi cluster.
2. Khi nào dùng quy trình này?
✅ Dùng khi:
- OSD còn hoạt động bình thường (
up
vàin
) - Muốn chủ động thay thế ổ cứng
- Ceph cluster đang ở trạng thái ổn định
❌ Không dùng khi:
- OSD bị hỏng không thể start lại → Xem bài gỡ
OSD hỏng hoàn toàn
3. Sơ đồ
Sơ đồ cluster
+-------------------------------+
| Ceph Cluster |
+-------------------------------+
|
+-------------------+-------------------+
| |
+---------------+ +----------------+
| MON/MGR | | OSD Nodes |
| Nodes | | (Lưu trữ dữ liệu) |
+---------------+ +----------------+
| |
+------------------------+ +---------------------------+
| CEPH-LAB-MON-071 | | CEPH-LAB-OSD-074 (osd) |
| IP: 10.237.7.71 | | IP: 10.237.7.74 |
| Roles: _admin, mon, | +---------------------------+
| mgr, osd |
+------------------------+ +---------------------------+
| CEPH-LAB-MON-072 | | CEPH-LAB-OSD-075 (osd) |
| IP: 10.237.7.72 | | IP: 10.237.7.75 |
| Roles: _admin, mon, | +---------------------------+
| mgr, osd |
+------------------------+ +---------------------------+
| CEPH-LAB-MON-073 | | CEPH-LAB-OSD-076 (osd) |
| IP: 10.237.7.73 | | IP: 10.237.7.76 |
| Roles: _admin, mon, | +---------------------------+
| mgr, osd |
+------------------------+
- Các node MON đồng thời là MGR và cũng có cài OSD.
- Các node CEPH-LAB-OSD-074 → 076 chỉ có vai trò là node lưu trữ (osd-only).
- _admin label chỉ rõ node đó có thể thực hiện các thao tác quản trị cluster (qua cephadm).
Sơ đồ quy trình.
+----------------------------------+
| osd.X còn hoạt động bình thường |
+----------------------------------+
|
v
[1] ceph osd crush reweight osd.X 0
|
v
[2] ceph osd out X
|
v
[3] Chờ recovery hoàn tất
|
v
[4] Dừng OSD daemon
|
v
[5] Gỡ khỏi crush map
|
v
[6] Gỡ khỏi OSD map
|
v
[7] Xóa auth
|
v
[8] Xóa daemon vật lý (cephadm)
4. Cùng review cluster trước khi lab.
Check status cluster.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph -s
cluster:
id: 75ac298c-0653-11f0-a2e7-2b96c52a296a
health: HEALTH_OK
services:
mon: 3 daemons, quorum CEPH-LAB-MON-071,CEPH-LAB-MON-073,CEPH-LAB-MON-072 (age 3w)
mgr: CEPH-LAB-MON-072.agtskh(active, since 3w), standbys: CEPH-LAB-MON-071.lyxipt, CEPH-LAB-MON-073.holphb
osd: 55 osds: 55 up (since 5d), 55 in (since 3w)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 35 GiB used, 515 GiB / 550 GiB avail
pgs: 1 active+clean
Danh sách host
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph orch host ls
HOST ADDR LABELS STATUS
CEPH-LAB-MON-071 10.237.7.71 _admin,mon,mgr,osd
CEPH-LAB-MON-072 10.237.7.72 _admin,mon,mgr,osd
CEPH-LAB-MON-073 10.237.7.73 _admin,mon,mgr,osd
CEPH-LAB-OSD-074 10.237.7.74 osd
CEPH-LAB-OSD-075 10.237.7.75 osd
CEPH-LAB-OSD-076 10.237.7.76 osd
6 hosts in cluster
Danh sách OSD
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 92.54982 root ssd-01
-9 15.29997 host CEPH-LAB-MON-071
12 ssd 1.70000 osd.12 up 1.00000 1.00000
15 ssd 1.70000 osd.15 up 1.00000 1.00000
20 ssd 1.70000 osd.20 up 1.00000 1.00000
25 ssd 1.70000 osd.25 up 1.00000 1.00000
30 ssd 1.70000 osd.30 up 1.00000 1.00000
35 ssd 1.70000 osd.35 up 1.00000 1.00000
40 ssd 1.70000 osd.40 up 1.00000 1.00000
45 ssd 1.70000 osd.45 up 1.00000 1.00000
50 ssd 1.70000 osd.50 up 1.00000 1.00000
-13 15.29997 host CEPH-LAB-MON-072
13 ssd 1.70000 osd.13 up 1.00000 1.00000
17 ssd 1.70000 osd.17 up 1.00000 1.00000
23 ssd 1.70000 osd.23 up 1.00000 1.00000
28 ssd 1.70000 osd.28 up 1.00000 1.00000
33 ssd 1.70000 osd.33 up 0.95001 1.00000
38 ssd 1.70000 osd.38 up 1.00000 1.00000
43 ssd 1.70000 osd.43 up 1.00000 1.00000
48 ssd 1.70000 osd.48 up 1.00000 1.00000
53 ssd 1.70000 osd.53 up 1.00000 1.00000
-7 15.29997 host CEPH-LAB-MON-073
9 ssd 1.70000 osd.9 up 1.00000 1.00000
18 ssd 1.70000 osd.18 up 0.95001 1.00000
22 ssd 1.70000 osd.22 up 1.00000 1.00000
27 ssd 1.70000 osd.27 up 1.00000 1.00000
32 ssd 1.70000 osd.32 up 1.00000 1.00000
36 ssd 1.70000 osd.36 up 0.95001 1.00000
41 ssd 1.70000 osd.41 up 1.00000 1.00000
46 ssd 1.70000 osd.46 up 1.00000 1.00000
51 ssd 1.70000 osd.51 up 1.00000 1.00000
-3 13.59998 host CEPH-LAB-OSD-074
0 ssd 1.70000 osd.0 up 1.00000 1.00000
1 ssd 1.70000 osd.1 up 0.95001 1.00000
2 ssd 1.70000 osd.2 up 1.00000 1.00000
3 ssd 1.70000 osd.3 up 1.00000 1.00000
4 ssd 1.70000 osd.4 up 1.00000 1.00000
5 ssd 1.70000 osd.5 up 1.00000 1.00000
6 ssd 1.70000 osd.6 up 1.00000 1.00000
7 ssd 1.70000 osd.7 up 1.00000 1.00000
-11 15.29997 host CEPH-LAB-OSD-075
10 ssd 1.70000 osd.10 up 1.00000 1.00000
16 ssd 1.70000 osd.16 up 1.00000 1.00000
21 ssd 1.70000 osd.21 up 1.00000 1.00000
26 ssd 1.70000 osd.26 up 1.00000 1.00000
31 ssd 1.70000 osd.31 up 1.00000 1.00000
37 ssd 1.70000 osd.37 up 1.00000 1.00000
42 ssd 1.70000 osd.42 up 1.00000 1.00000
47 ssd 1.70000 osd.47 up 1.00000 1.00000
52 ssd 1.70000 osd.52 up 1.00000 1.00000
-5 17.74995 host CEPH-LAB-OSD-076
8 ssd 1.70000 osd.8 up 1.00000 1.00000
11 ssd 1.70000 osd.11 up 1.00000 1.00000
14 ssd 1.70000 osd.14 up 1.00000 1.00000
19 ssd 1.70000 osd.19 up 1.00000 1.00000
24 ssd 1.70000 osd.24 up 1.00000 1.00000
29 ssd 1.70000 osd.29 up 1.00000 1.00000
34 ssd 1.70000 osd.34 up 1.00000 1.00000
39 ssd 1.70000 osd.39 up 1.00000 1.00000
44 ssd 1.70000 osd.44 up 1.00000 1.00000
49 ssd 1.70000 osd.49 up 1.00000 1.00000
54 ssd 1.70000 osd.54 up 1.00000 1.00000
5. Quy trình gỡ 1 OSD, ví dụ osd.8.
Bước 1: Reweight về 0 OSD cần gỡ
Trước khi out OSD, bạn nên giảm weight
về 0 để Ceph dồn dữ liệu sang OSD khác một cách an toàn.
ceph osd crush reweight osd.8 0
Verify osd.8 đã reweight về 0
-5 16.09996 host CEPH-LAB-OSD-076
8 ssd 0 osd.8 up 1.00000 1.00000
11 ssd 1.70000 osd.11 up 1.00000 1.00000
14 ssd 1.70000 osd.14 up 1.00000 1.00000
19 ssd 1.70000 osd.19 up 1.00000 1.00000
24 ssd 1.70000 osd.24 up 1.00000 1.00000
29 ssd 1.70000 osd.29 up 1.00000 1.00000
34 ssd 1.70000 osd.34 up 1.00000 1.00000
39 ssd 1.70000 osd.39 up 1.00000 1.00000
44 ssd 1.70000 osd.44 up 1.00000 1.00000
49 ssd 1.70000 osd.49 up 1.00000 1.00000
54 ssd 1.70000 osd.54 up 1.00000 1.00000
Bạn nên giảm từ từ weight
về 0 để Ceph dồn dữ liệu sang OSD khác một cách an toàn và kiểm soát bằng script sau.
#!/bin/bash
### CONFIG
OSDs="8"
DECREMENT_WEIGHT=0.1
TARGET_WEIGHT=0
CONTROL_BACKFILL=10
INTERVAL_CHECK=2
WORK_DIR=/opt/weight-down
### Validate numeric values
validate_weight () {
local w=$1
re='^[+-]?[0-9]+\.?[0-9]*$'
if ! [[ $w =~ $re && $DECREMENT_WEIGHT =~ $re && $TARGET_WEIGHT =~ $re && $INTERVAL_CHECK =~ $re ]]; then
echo "xx Not a number" >&2
exit 1
elif (( $(echo "$w < $TARGET_WEIGHT" | bc -l) )); then
echo "xx Weight cannot smaller than target"
exit 1
elif (( $(echo "$TARGET_WEIGHT > 1.45" | bc -l) )) || (( $(echo "$TARGET_WEIGHT < 0" | bc -l) )); then
echo "xx TARGET_WEIGHT must be in [0;1.45]"
exit 1
elif (( $(echo "$DECREMENT_WEIGHT > 0.5" | bc -l) )) || (( $(echo "$DECREMENT_WEIGHT <= 0" | bc -l) )); then
echo "xx DECREMENT_WEIGHT must be in (0;0.5]"
exit 1
elif (( $(echo "$DECREMENT_WEIGHT < $TARGET_WEIGHT" | bc -l) )); then
echo "xx DECREMENT_WEIGHT cannot be lower than TARGET_WEIGHT"
exit 1
fi
return 0
}
### Init weights
mkdir -p "$WORK_DIR"
for OSD in $OSDs; do
w=$(ceph osd df | awk -v osd="$OSD" '$1 == osd { print $3 }' | head -n1 | tr -d '[:space:]')
if [[ -z "$w" ]]; then
echo "!! Failed to get initial weight for osd.$OSD"
continue
fi
echo "$w" > "$WORK_DIR/weight.$OSD"
echo "=Init $OSD with weight $w"
validate_weight "$w"
done
### Main Loop
while true; do
sleep 1
if (( $(ceph -s | grep "active+remapped+backfilling" | awk '{print $1}') < $CONTROL_BACKFILL )) 2>/dev/null; then
for OSD in $OSDs; do
if (( $(ceph -s | grep "active+remapped+backfilling" | awk '{print $1}') < $CONTROL_BACKFILL )) 2>/dev/null; then
echo "+++++ Start: $(date)"
ceph -s | grep backfilling
w=$(ceph osd df | awk -v osd="$OSD" '$1 == osd { print $3 }' | head -n1 | tr -d '[:space:]')
if [[ -z "$w" ]]; then
echo "!! Failed to get current weight for osd.$OSD. Skipping..."
continue
fi
if (( $(echo "$w > $TARGET_WEIGHT" | bc -l) )); then
echo "++ osd.$OSD current weight: $w will decrease by $DECREMENT_WEIGHT"
w=$(echo "$w - $DECREMENT_WEIGHT" | bc)
[[ "$w" == .* ]] && w="0$w"
echo "++ reweight: $(date)"
ceph osd crush reweight osd.$OSD "$w"
fi
sleep $INTERVAL_CHECK
fi
done
else
is_break=1
ceph osd df > /tmp/osd-df
for OSD in $OSDs; do
w=$(awk -v osd="$OSD" '$1 == osd { print $3 }' /tmp/osd-df | head -n1 | tr -d '[:space:]')
if [[ -z "$w" ]]; then
echo "!! OSD $OSD not found in df output. Skipping."
continue
fi
if (( $(echo "$w > $TARGET_WEIGHT" | bc -l) )); then
is_break=0
break
else
OSDs=$(echo "$OSDs" | sed "s/\b$OSD\b//g")
echo "++ osd is removed: $OSD. Current list: $OSDs"
fi
done
if (( $is_break == 1 )); then break; fi
fi
done
Script này đảm bảo hoạt động ổn định kể cả với OSD IDs < 100 hoặc > 1000
Bạn có thể chạy background script với osd-reweight-down.sh
là tên file script, 15607
là PID của process.
shell> nohup ./osd-reweight-down.sh &
[1] 15607
Check log để verify init weight, nếu thấy danh sách xổ ra đúng với các osd.<id> bạn mong muốn thì hãy qua bước tiếp theo.
root@CEPH-LAB-MON-071:/home/hoanghd3# tail -f ./nohup.out
=Init 8 with weight 1.70000
Để script hoạt động bạn cần reweight down mồi một osd (chọn 1 osd bất kỳ trong danh sách OSDs cần reweight down, trường hợp này là osd.8).
ceph osd crush reweight osd.8 1.65
Bước 2: Mark OSD ra khỏi cluster và xác minh kết quả.
ceph osd out <osd_id>
Ví dụ
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd out 8
marked out osd.8.
Xác minh kết quả.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd tree | grep osd.8
8 ssd 0 osd.8 down 0 1.00000
Bước 3: Stop OSD daemon
systemctl stop ceph-<cluster_id>@osd.<id>.service
Ví dụ ở lab này, bạn cần SSH sang node CEPH-LAB-OSD-076 đang chứa osd.8, check status OSD.
root@CEPH-LAB-OSD-076:~# systemctl status ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service
● ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service - Ceph osd.8 for 75ac298c-0653-11f0-a2e7-2b96c52a296a
Loaded: loaded (/etc/systemd/system/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2025-04-24 16:01:51 +07; 2 months 0 days ago
Main PID: 1697059 (conmon)
Tasks: 79 (limit: 9392)
Memory: 648.1M
CPU: 4h 24min 8.483s
CGroup: /system.slice/system-ceph\x2d75ac298c\x2d0653\x2d11f0\x2da2e7\x2d2b96c52a296a.slice/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service
├─libpod-payload-cafbb2816c71d4d58bc5f5a87ef6fcc2b2c63028aca8264055a70e6f3923077b
│ ├─1697063 /dev/init -- /usr/bin/ceph-osd -n osd.8 -f --setuser ceph --setgroup ceph --default-log-to-file=false --default-log-to-journald=true --default-log-to-stderr=false
│ └─1697066 /usr/bin/ceph-osd -n osd.8 -f --setuser ceph --setgroup ceph --default-log-to-file=false --default-log-to-journald=true --default-log-to-stderr=false
└─supervisor
└─1697059 /usr/bin/conmon --api-version 1 -c cafbb2816c71d4d58bc5f5a87ef6fcc2b2c63028aca8264055a70e6f3923077b -u cafbb2816c71d4d58bc5f5a87ef6fcc2b2c63028aca8264055a70e6f3923077b -r /usr/bin/crun -b /var/lib/containers/storage/overlay-containers/cafbb2816c7>
Bạn cũng có thể check qua podman
root@CEPH-LAB-OSD-076:~# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8d05f66ac9e 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.14 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-14
bdd2e8f078a8 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.54 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-54
baa838967755 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.24 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-24
a1123e7933ea 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.19 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-19
dbf5ac1766ac 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.49 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-49
511cd981a587 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.29 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-29
aa6ff5cb8d81 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.44 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-44
2d37cc03119a 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.11 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-11
8cebc31d2b90 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.34 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-34
e544461880c9 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.39 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-39
5190770a7e90 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.8 -f --set... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-8
6e4895fed3a1 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n client.crash.C... 11 days ago Up 11 days ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-crash-CEPH-LAB-OSD-076
d0f34489f70b 10.237.7.74:5000/prometheus/node-exporter:v1.5.0
Sử dụng systemctl để stop osd.8
systemctl stop ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service
Xác minh osd.8 đã stop
root@CEPH-LAB-OSD-076:~# systemctl status ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service
× ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service - Ceph osd.8 for 75ac298c-0653-11f0-a2e7-2b96c52a296a
Loaded: loaded (/etc/systemd/system/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2025-06-24 14:16:13 +07; 6s ago
Process: 903391 ExecStartPre=/bin/rm -f /run/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service-pid /run/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service-cid (code=exited, status=0/SUCCESS)
Process: 903392 ExecStart=/bin/bash /var/lib/ceph/75ac298c-0653-11f0-a2e7-2b96c52a296a/osd.8/unit.run (code=exited, status=0/SUCCESS)
Process: 905941 ExecStop=/bin/bash -c bash /var/lib/ceph/75ac298c-0653-11f0-a2e7-2b96c52a296a/osd.8/unit.stop (code=exited, status=0/SUCCESS)
Process: 906104 ExecStopPost=/bin/bash /var/lib/ceph/75ac298c-0653-11f0-a2e7-2b96c52a296a/osd.8/unit.poststop (code=exited, status=0/SUCCESS)
Process: 906996 ExecStopPost=/bin/rm -f /run/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service-pid /run/ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a@osd.8.service-cid (code=exited, status=0/SUCCESS)
Main PID: 903953 (code=exited, status=143)
CPU: 3.472s
Lúc này check podman thì container chạy osd.8 cũng sẽ bị xóa
root@CEPH-LAB-OSD-076:~# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c8d05f66ac9e 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.14 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-14
bdd2e8f078a8 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.54 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-54
baa838967755 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.24 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-24
a1123e7933ea 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.19 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-19
dbf5ac1766ac 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.49 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-49
511cd981a587 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.29 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-29
aa6ff5cb8d81 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.44 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-44
2d37cc03119a 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.11 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-11
8cebc31d2b90 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.34 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-34
e544461880c9 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.39 -f --se... 2 months ago Up 2 months ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-39
6e4895fed3a1 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n client.crash.C... 11 days ago Up 11 days ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-crash-CEPH-LAB-OSD-076
d0f34489f70b 10.237.7.74:5000/prometheus/node-exporter:v1.5.0
Bước 4: Đánh dấu OSD bị mất
Gỡ OSD ra khỏi bản đồ crush map, cập nhật trạng thái OSD là lost
. Sau lệnh này cluster sẽ bắt đầu quá trình khôi phục dữ liệu (recovery/rebalance) từ các bản sao còn lại (nếu đủ replica).
Đây là một action nguy hiểm và không thể đảo ngược, nên cần được dùng cực kỳ thận trọng.
ceph osd lost <id> --yes-i-really-mean-it
Ví dụ.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd lost 8 --yes-i-really-mean-it
marked osd lost in epoch 11519
Lưu ý: Cẩn rất chắc chắn OSD đã hỏng hoàn toàn vì dữ liệu trên đó sẽ không được truy hồi lại.
Xác minh đã gỡ OSD ra khỏi bản đồ crush map.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd dump | grep "^osd.8"
osd.8 down out weight 0 up_from 10230 up_thru 11495 down_at 11519 last_clean_interval [7889,10229) lost_at 11519 [v2:10.237.7.76:6864/2224030417,v1:10.237.7.76:6865/2224030417] [v2:10.237.7.76:6882/2241030417,v1:10.237.7.76:6883/2241030417] exists 3e0faa8e-1651-4250-a892-2edc5c96b172
Lúc này check cluster status bạn cũng đã thấy có cảnh báo warning 1 daemon.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph -s
cluster:
id: 75ac298c-0653-11f0-a2e7-2b96c52a296a
health: HEALTH_WARN
1 failed cephadm daemon(s)
services:
mon: 3 daemons, quorum CEPH-LAB-MON-071,CEPH-LAB-MON-073,CEPH-LAB-MON-072 (age 3w)
mgr: CEPH-LAB-MON-072.agtskh(active, since 3w), standbys: CEPH-LAB-MON-071.lyxipt, CEPH-LAB-MON-073.holphb
osd: 55 osds: 54 up (since 7m), 54 in (since 3m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 35 GiB used, 505 GiB / 540 GiB avail
pgs: 1 active+clean
Ceph health detail bạn sẽ thấy chi tiết hơn.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph health detail
HEALTH_WARN 1 failed cephadm daemon(s)
[WRN] CEPHADM_FAILED_DAEMON: 1 failed cephadm daemon(s)
daemon osd.8 on CEPH-LAB-OSD-076 is in error state
Bước 5: Xóa khỏi crush map
- Xóa OSD.8 khỏi CRUSH map (bản đồ phân phối dữ liệu).
- Ngăn Ceph phân phối dữ liệu mới đến OSD.8.
- Bước này thường làm sau khi đánh dấu OSD là lost.
ceph osd crush remove osd.<id>
Ví dụ.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd crush remove osd.8
removed item id 8 name 'osd.8' from crush map
Verify bằng lệnh dưới, nếu không có dòng nào, nghĩa là osd.8 đã bị xóa khỏi CRUSH map thành công.
ceph osd crush tree | grep osd.8
Bước 6: Xóa khỏi OSD map
- Xóa OSD.8 khỏi danh sách OSD của cluster (khỏi OSD map).
- Tránh Ceph tiếp tục theo dõi hay log cảnh báo về OSD.8.
- Hoàn tất việc loại bỏ vĩnh viễn OSD.8 khỏi Ceph sau khi:
- Đã đánh dấu lost
- Đã xóa khỏi CRUSH map
- Đã đánh dấu lost
ceph osd rm <id>
Ví dụ.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph osd rm 8
removed osd.8
Chạy lệnh dưới nếu không có kết quả, tức là OSD.8 đã bị xóa hoàn toàn khỏi cluster.
ceph osd dump | grep osd.8
Qua bước này osd.8 đã không còn trong danh sách OSDs đang hoạt động
-5 16.09996 host CEPH-LAB-OSD-076
11 ssd 1.39999 osd.11 up 1.00000 1.00000
14 ssd 1.39999 osd.14 up 1.00000 1.00000
19 ssd 1.70000 osd.19 up 1.00000 1.00000
24 ssd 1.70000 osd.24 up 1.00000 1.00000
29 ssd 1.39999 osd.29 up 1.00000 1.00000
34 ssd 1.70000 osd.34 up 1.00000 1.00000
39 ssd 1.70000 osd.39 up 1.00000 1.00000
44 ssd 1.70000 osd.44 up 1.00000 1.00000
49 ssd 1.70000 osd.49 up 1.00000 1.00000
54 ssd 1.70000 osd.54 up 1.00000 1.00000
Bước 7: Xóa keyring auth
- Xóa keyring (thông tin xác thực) của osd.8 khỏi hệ thống Ceph.
- Là bước cuối cùng khi gỡ bỏ OSD.
- Xóa quyền truy cập và thông tin auth liên quan đến OSD.8 (trong ceph auth list).
- Giúp hệ thống gọn gàng, tránh dư thừa auth không dùng nữa.
ceph auth del osd.<id>
Ví dụ.
ceph auth del osd.8
Chạy lệnh dưới, nếu trả về lỗi kiểu couldn't find key for osd.8
là đã xóa thành công.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph auth get osd.8
Error ENOENT: failed to find osd.8 in keyring
Bước 8: Xóa daemon (Cephadm)
- Gỡ bỏ OSD.8 khỏi host và xóa daemon OSD.8 do Ceph Orchestrator (cephadm) quản lý.
- Gỡ hoàn toàn daemon OSD.8 ra khỏi node (dù nó đang down hoặc lỗi).
- Thường là bước cuối cùng trong quy trình xóa OSD, sau khi:
- Đánh dấu lost
- Gỡ khỏi CRUSH map
- Gỡ khỏi OSD map (osd rm)
- Gỡ auth
ceph orch daemon rm osd.<id> --force
Ví dụ.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph orch daemon rm osd.8 --force
Removed osd.8 from host 'CEPH-LAB-OSD-076'
Lệnh này là bước dọn dẹp vật lý/cuối cùng giúp cluster không còn chạy/thấy OSD.8 nữa cả về logic lẫn triển khai. Nếu không có dòng nào → daemon OSD.8 đã bị xóa thành công.
ceph orch ps | grep osd.8
Cùng verify lại cluster nhé.
root@CEPH-LAB-MON-071:/home/hoanghd3# ceph -s
cluster:
id: 75ac298c-0653-11f0-a2e7-2b96c52a296a
health: HEALTH_OK
services:
mon: 3 daemons, quorum CEPH-LAB-MON-071,CEPH-LAB-MON-073,CEPH-LAB-MON-072 (age 3w)
mgr: CEPH-LAB-MON-072.agtskh(active, since 3w), standbys: CEPH-LAB-MON-071.lyxipt, CEPH-LAB-MON-073.holphb
osd: 54 osds: 54 up (since 29m), 54 in (since 25m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 35 GiB used, 505 GiB / 540 GiB avail
pgs: 1 active+clean
6. Ưu điểm & nhược điểm
✅ Ưu điểm:
- An toàn, không mất dữ liệu
- Không cần đánh dấu
lost
- Cluster luôn duy trì trạng thái “HEALTH_OK”
⚠️ Nhược điểm:
- Tốn thời gian chờ rebalance nếu dữ liệu lớn
7. So sánh với quy trình “gỡ cứng” (OSD hỏng)
Tiêu chí | Gỡ mềm (OSD còn tốt) | Gỡ cứng (OSD hỏng) |
---|---|---|
Có recovery trước khi xóa | ✅ Có | ❌ Không cần |
Dùng osd lost | ❌ Không | ✅ Bắt buộc nếu mất dữ liệu |
Rủi ro mất dữ liệu | ❌ Không | ⚠️ Có nếu thiếu replica |
8. Lời khuyên
- Luôn kiểm tra kỹ trạng thái PG (
ceph -s
) trước khi tiếp tục các bước. - Nên thực hiện thao tác vào thời điểm ít tải để tránh ảnh hưởng I/O.
- Nếu bạn cần thay đồng loạt nhiều OSD, thực hiện lần lượt từng OSD để giảm tải recovery.
9. Kết luận
Gỡ một OSD còn đang hoạt động tốt cần có sự kiên nhẫn và tuân thủ quy trình “mềm” để đảm bảo an toàn dữ liệu tuyệt đối. Đây là quy trình nên áp dụng khi bạn muốn làm mới hệ thống, nâng cấp ổ đĩa hoặc bảo trì định kỳ.
Kết hợp với quy trình trong trường hợp OSD hỏng, bạn sẽ có bộ kỹ năng hoàn chỉnh để quản lý OSD trong mọi tình huống.