1. Tổng quan
Trong quá trình vận hành hệ thống lưu trữ phân tán Ceph, việc mở rộng dung lượng lưu trữ bằng cách thêm node OSD mới là công việc định kỳ và quan trọng. Tuy nhiên, nếu không thực hiện đúng quy trình, hệ thống có thể gặp tình trạng mất cân bằng dữ liệu, ảnh hưởng đến hiệu năng hoặc thậm chí gây lỗi.
Bài viết này chia sẻ chi tiết từng bước triển khai thêm một node OSD mới vào Ceph cluster sử dụng công cụ cephadm
– từ khâu chuẩn bị, kiểm tra hệ thống hiện tại, zap ổ đĩa, đến quá trình theo dõi quá trình khởi tạo các OSD container trên node mới.
2. Sơ đồ.
Sơ đồ trước khi thêm Node CEPH-LAB-OSD-076.
+-------------------------------+
| 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 |
| IP: 10.237.7.73 |
| Roles: _admin, mon, |
| mgr, osd |
+------------------------+
Sơ đồ trước khi thêm Node CEPH-LAB-OSD-076.
+-------------------------------+
| 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 |
| IP: 10.237.7.73 |
| 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 → 075 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).
3. Các bước chuẩn bị trước khi thêm node OSD mới vào cluster.
✅ Thực hiện các bước sau trên Ceph Mon.
3.1. Kiểm tra hiện trạng hệ thống
Danh sách hosts hiện có:
shell> 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
5 hosts in cluster
Mục đích để xác minh các node hiện tại trong cluster, đảm bảo nhận diện được node mới sẽ thêm vào.
Trạng thái cluster:
shell> 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 2d), standbys: CEPH-LAB-MON-071.lyxipt, CEPH-LAB-MON-073.holphb
osd: 44 osds: 44 up (since 3d), 44 in (since 3d)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 31 GiB used, 409 GiB / 440 GiB avail
pgs: 1 active+clean
Mục đích để đảm bảo cluster đang ở trạng thái HEALTH_OK
, tránh thêm node trong khi hệ thống đang lỗi hoặc mất đồng bộ.
Danh sách ổ đĩa (device):
shell> ceph orch device ls
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
CEPH-LAB-MON-071 /dev/sdb ssd 30.0G No 14m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-071 /dev/sdc ssd 30.0G No 14m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-071 /dev/sdd ssd 30.0G No 14m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-071 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 14m ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
CEPH-LAB-MON-072 /dev/sdb ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-072 /dev/sdc ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-072 /dev/sdd ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-072 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 16m ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
CEPH-LAB-MON-073 /dev/sdb ssd 30.0G No 30m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-073 /dev/sdc ssd 30.0G No 30m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-073 /dev/sdd ssd 30.0G No 30m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-MON-073 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 30m ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
CEPH-LAB-OSD-074 /dev/sdb ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-074 /dev/sdc ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-074 /dev/sdd ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-074 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 16m ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
CEPH-LAB-OSD-075 /dev/sdb ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-075 /dev/sdc ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-075 /dev/sdd ssd 30.0G No 16m ago Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected
CEPH-LAB-OSD-075 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 16m ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
Mục đích để xác định ổ đĩa nào đang trống hoặc có thể bị Ceph từ chối (do tồn tại filesystem, dung lượng nhỏ…).
Xem tình trạng lưu trữ hiện tại:
shell> ceph df
--- RAW STORAGE ---
CLASS SIZE AVAIL USED RAW USED %RAW USED
ssd 440 GiB 408 GiB 31 GiB 31 GiB 7.13
TOTAL 440 GiB 408 GiB 31 GiB 31 GiB 7.13
--- POOLS ---
POOL ID PGS STORED OBJECTS USED %USED MAX AVAIL
.mgr 1 1 449 KiB 2 904 KiB 0 170 GiB
Mục đích để đánh giá khả năng lưu trữ hiện tại trước khi mở rộng.
Check profile OSD.
Xem cấu hình triển khai (spec) của dịch vụ OSD do cephadm
quản lý: cách phân phối OSDs, điều kiện chọn ổ đĩa, số lượng OSDs trên mỗi ổ.
shell> ceph orch ls --export --service-type osd
service_type: osd
service_id: osd_ssd_10gb
service_name: osd.osd_ssd_10gb
placement:
host_pattern: '*'
label: osd
spec:
data_devices:
rotational: 0
size: 10G:30G
filter_logic: AND
objectstore: bluestore
osds_per_device: 3
3.2. Đánh giá hiệu năng OSD để tránh làm chậm cluster khi thêm node mới.
Kiểm tra các thông số cấu hình hiệu năng OSD, đặc biệt trong quá trình recovery, backfill và profile mclock (quản lý I/O).
ceph config dump | grep -iE "osd_recovery_max_active_ssd|osd_mclock_profile|osd_mclock_override_recovery_settings|osd_max_backfills"
✅ Thực hiện các bước sau trên Node mới (CEPH-LAB-OSD-076)
3.3. Zap ổ đĩa trên node mới
Có hai cách để zap ổ đĩa:
Cách 1 – Dùng cephadm rm-cluster
(nên dùng):
shell> cephadm rm-cluster --force --zap-osds --fsid no_need_id
Using ceph image with id '2bc0b0f4375d' and tag 'v18.2.4' created on 2024-07-23 22:19:35 +0000 UTC
10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc
Zapping /dev/sdb...
Zapping /dev/sdc...
Zapping /dev/sdd...
Zapping /dev/sde...
Mục đích để dọn sạch ổ đĩa (xóa partition, LVM, filesystem) trước khi triển khai OSD. --fsid
không quan trọng trong trường hợp này.
Cách 2 – Dùng lệnh thủ công:
sgdisk --zap-all /dev/sdb
dd if=/dev/zero of=/dev/sdb bs=1M count=100
wipefs -a /dev/sdb
Bạn cần chắc chắn rằng ổ đĩa không chứa dữ liệu quan trọng.
Kết quả các disk sau khi zap để sử dụng cho OSD phải sạch hoàn toàn.
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 /
sdb 8:16 0 30G 0 disk
sdc 8:32 0 30G 0 disk
sdd 8:48 0 30G 0 disk
sde 8:64 0 30G 0 disk
sr0 11:0 1 1024M 0 rom
3.4. Kiểm tra danh sách container.
Trên node mới, hãy kiểm tra danh sách container trước khi join cluster, thường sẽ trống nếu bạn không chạy dịch vụ gì ngoài Ceph.
podman ps
3.5. Kiểm tra quyền sudo của user cephadmin
òng này kiểm tra hoặc đảm bảo rằng user cephadmin
có quyền sudo mà không cần nhập mật khẩu khi thực hiện các lệnh yêu cầu quyền root. Đây là một yêu cầu bắt buộc hoặc nên có trong các hệ thống triển khai Ceph sử dụng cephadm
.
Tại sao cần NOPASSWD
cho cephadmin
?
- Cephadm hoạt động qua SSH và sudo:
- Khi bạn thêm host bằng
ceph orch host add
, Ceph sẽ SSH vào node mới (thường là usercephadmin
) và thực hiện các thao tác bằngsudo
. - Nếu
sudo
yêu cầu mật khẩu, quá trình sẽ thất bại hoặc bị treo, vìcephadm
không có cơ chế nhập mật khẩu tự động.
- Khi bạn thêm host bằng
- Tự động hóa hoàn toàn quá trình:
cephadm
deploy OSD, tạo container, cấu hình hệ thống… tất cả đều cần quyền root.NOPASSWD
giúp tự động hóa quá trình mà không cần sự can thiệp thủ công.
Thêm quyền này nếu chưa có.
echo "cephadmin ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadmin
Giả sử cephadmin
không có quyền NOPASSWD, khi chạy:
ceph orch host add CEPH-LAB-OSD-076 10.237.7.76 osd
Bạn có thể gặp lỗi như:
sudo: a password is required
Và node sẽ không được thêm hoặc không deploy được OSD.
Bạn có thể xác minh trước bằng cách ở một node bất kỳ, ví dụ Mon Node hãy ssh sang node mới bằng cephadmin sử dụng sshkey.
ssh -i /home/cephadmin/.ssh/id_rsa cephadmin@10.237.7.76
Nếu bạn ssh được sang node mới mà không cần thêm bước authen gì nữa thì bạn đã thành công.
3.6. Kiểm tra mạng, thời gian hệ thống
3.6.1. Check status và speed NIC đảm bảo uplink đủ card nếu là bond, tốc độ,…
shell> ethtool ens160 | grep -E "Link detected|Speed"
Speed: 10000Mb/s
Link detected: yes
3.6.2. Kiểm tra network latency.
Việc check latency bằng ping
giúp đảm bảo hạ tầng mạng ổn định, là bước cần thiết trước khi đưa node mới vào cluster Ceph để tránh rủi ro về đồng bộ dữ liệu, mất OSD hoặc lỗi quorum.
- Kiểm tra network latency bằng
ping
trong Ceph:- Đảm bảo độ trễ mạng (latency) giữa các node trong Ceph cluster là thấp và ổn định, đặc biệt giữa các node OSD, MON, MGR.
- Xác minh kết nối vật lý hoặc ảo hoạt động bình thường trước khi đưa node mới vào cụm.
- Ngăn ngừa các lỗi về heartbeat mất tín hiệu, OSD bị đánh dấu
down
do timeout.
- Vì Ceph rất nhạy cảm với độ trễ mạng, đặc biệt là:
- Khi recovery hoặc backfill dữ liệu giữa các OSD.
- Khi replication hoặc scrubbing diễn ra.
- Khi monitors cần giữ quorum ổn định.
shell> ping -c 6 10.237.7.76
PING 10.237.7.76 (10.237.7.76) 56(84) bytes of data.
64 bytes from 10.237.7.76: icmp_seq=1 ttl=64 time=0.127 ms
64 bytes from 10.237.7.76: icmp_seq=2 ttl=64 time=0.150 ms
64 bytes from 10.237.7.76: icmp_seq=3 ttl=64 time=0.125 ms
64 bytes from 10.237.7.76: icmp_seq=4 ttl=64 time=0.185 ms
64 bytes from 10.237.7.76: icmp_seq=5 ttl=64 time=0.130 ms
64 bytes from 10.237.7.76: icmp_seq=6 ttl=64 time=0.156 ms
--- 10.237.7.76 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5122ms
rtt min/avg/max/mdev = 0.125/0.145/0.185/0.021 ms
Kết quả ping.
Thông số | Ý nghĩa |
---|---|
rtt avg < 1ms | ✅ Rất tốt cho môi trường production nội bộ (LAN, DataCenter). |
0% packet loss | ✅ Không có lỗi truyền mạng. |
Dao động thấp (mdev < 0.1ms ) | ✅ Mạng ổn định, không giật/lag. |
Nếu latency cao hoặc mất gói:
- Các OSD có thể bị đánh
down
không rõ lý do. - Quorum MON có thể mất.
- Hiệu năng client và recovery có thể bị ảnh hưởng nghiêm trọng.
Về network cần đảm bảo kết nối mạng tốt và tốc độ phù hợp (≥10Gbps)
3.7. Check date và time.
Thời gian đồng bộ chính xác là yêu cầu bắt buộc để Ceph cluster hoạt động ổn định. Hai lệnh trên giúp xác minh rằng node mới (hoặc toàn cluster) đang sử dụng đúng NTP và có thời gian chính xác đến từng micro giây.3.8. Xác minh node hiện tại có đáp ứng yêu cầu kỹ thuật để triển khai Ceph daemon (OSD, MON, MGR…).
Kiểm tra xem node Ceph (OSD, MON, MGR…) đang đồng bộ thời gian với NTP server nào và trạng thái kết nối hiện tại.
shell> chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* proxy.vinadata.local 3 7 377 62 +6451ns[ +23us] +/- 54ms
Kiểm tra mức độ chính xác của đồng bộ thời gian hệ thống so với NTP server (offset, độ lệch, tần suất cập nhật…).
shell> chronyc tracking
Reference ID : 0AED07FA (proxy.vinadata.local)
Stratum : 4
Ref time (UTC) : Sat Jun 28 13:50:57 2025
System time : 0.000004476 seconds fast of NTP time
Last offset : +0.000016419 seconds
RMS offset : 0.000015116 seconds
Frequency : 1.140 ppm fast
Residual freq : +0.013 ppm
Skew : 0.253 ppm
Root delay : 0.035498336 seconds
Root dispersion : 0.026566893 seconds
Update interval : 130.1 seconds
Leap status : Normalonds
Leap status : Normal
Đảm bảo thời gian hệ thống đồng bộ chính xác giữa các node trong cluster.
shell> date
Sat Jun 28 08:52:46 PM +07 2025
3.8 Kiểm tra các công cụ cần thiết (podman
, systemctl
, lvcreate
, chrony
…), đảm bảo node đã 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
Lưu ý là các package cần thiết như lvcreate
, systemctl
, podman
… đã cài (xem lại các bài trước).
4. Các bước thêm node OSD mới vào cluster.
Thêm node mới vào cluster
shell> ceph orch host add CEPH-LAB-OSD-076 10.237.7.76 osd _no_schedule
Added host 'CEPH-LAB-OSD-076' with addr '10.237.7.76'
Dưới đây là kết quả thêm Thêm node CEPH-LAB-OSD-076 vào cluster thành công có sử dụng _no_schedule
để ngăn Ceph tự động khởi tạo OSDs trước khi bạn sẵn sàng.
shell> 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,_no_schedule
6 hosts in cluster
Kiểm tra ổ đĩa node mới
shell> ceph orch device ls CEPH-LAB-OSD-076
HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS
CEPH-LAB-OSD-076 /dev/sdb ssd 30.0G Yes 17s ago
CEPH-LAB-OSD-076 /dev/sdc ssd 30.0G Yes 17s ago
CEPH-LAB-OSD-076 /dev/sdd ssd 30.0G Yes 17s ago
CEPH-LAB-OSD-076 /dev/sde ssd 30.0G Yes 17s ago
CEPH-LAB-OSD-076 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_00000000000000000001 1023M No 17s ago Failed to determine if device is BlueStore, Insufficient space (<5GB)
Đảm bảo ổ đĩa hiện trạng là Available
.
Deploy OSDs
shell> ceph orch host label rm CEPH-LAB-OSD-076 _no_schedule
Removed label _no_schedule from host CEPH-LAB-OSD-076
Gỡ label _no_schedule
để Ceph bắt đầu khởi tạo OSD trên các ổ đĩa đủ điều kiện.
Theo dõi tiến trình khởi tạo
Trên Ceph Mon hãy verify osd tree, các OSDs vẫn đang down vì phải mất một ít thời gian để OSDs chuyển sang trạng thái down.
shell> ceph osd tree
-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
8 0 osd.8 down 1.00000 1.00000
11 0 osd.11 down 1.00000 1.00000
14 0 osd.14 down 1.00000 1.00000
19 0 osd.19 down 1.00000 1.00000
24 0 osd.24 down 1.00000 1.00000
29 0 osd.29 down 1.00000 1.00000
34 0 osd.34 down 1.00000 1.00000
39 0 osd.39 down 1.00000 1.00000
44 0 osd.44 down 1.00000 1.00000
49 0 osd.49 down 1.00000 1.00000
54 0 osd.54 down 1.00000 1.00000
55 0 osd.55 down 1.00000 1.00000
Sẽ mất khoảng vài phút để các OSD chuyển từ trạng thái down
sang up
.
Xem container khởi tạo:
Trên CEPH-LAB-OSD-076 verify container bạn thấy chỉ có 2 container đang chạy. Sau khi các container ở node CEPH-LAB-OSD-076 sẽ được khởi tạo thì OSDs sẽ chuyển sang trạng thái up.
Mỗi OSD sẽ tương ứng với một container chạy riêng biệt.
shell> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dac606232957 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n client.crash.C... 21 seconds ago Up 22 seconds ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-crash-CEPH-LAB-OSD-076
d82852d7529c 10.237.7.74:5000/prometheus/node-exporter:v1.5.0 --no-collector.ti... 18 seconds ago Up 19 seconds ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-node-exporter-CEPH-LAB-OSD-076
Chờ các OSDs up, bạn hãy quay lại trên Ceph Mon hãy verify osd tree
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-6 0.11755 root default
-5 0.11755 host CEPH-LAB-OSD-076
8 ssd 0.00980 osd.8 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
49 ssd 0.00980 osd.49 up 1.00000 1.00000
54 ssd 0.00980 osd.54 up 1.00000 1.00000
55 ssd 0.00980 osd.55 up 1.00000 1.00000
-1 74.79987 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
<bỏ bớt làm gọn output>
-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
Kiểm tra block device:
Ổ đĩa sẽ được chia nhỏ ra nhiều Logical Volume (LVM) 10GB tương ứng với các 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
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--5c7a266f--823f--43f4--89a6--35b6942bee00-osd--block--00135c7a--b571--4ae0--97f9--f47bd06d37fe 253:0 0 10G 0 lvm
├─ceph--5c7a266f--823f--43f4--89a6--35b6942bee00-osd--block--39e0ac24--545f--4ba3--a966--b7de787e559f 253:1 0 10G 0 lvm
└─ceph--5c7a266f--823f--43f4--89a6--35b6942bee00-osd--block--d4999dab--6ab2--497a--b975--4ee7a31d7534 253:2 0 10G 0 lvm
sdc 8:32 0 30G 0 disk
├─ceph--d4d8a131--9f40--441b--bbb1--7c023ecde921-osd--block--be878e3f--d0ba--4cb6--93da--1898761308e3 253:3 0 10G 0 lvm
├─ceph--d4d8a131--9f40--441b--bbb1--7c023ecde921-osd--block--ce21f4f7--83b5--4a8e--b1a6--6cc0c6d86e27 253:4 0 10G 0 lvm
└─ceph--d4d8a131--9f40--441b--bbb1--7c023ecde921-osd--block--0af72677--d7a5--4eef--b8d9--53c9b74a5d7d 253:5 0 10G 0 lvm
sdd 8:48 0 30G 0 disk
├─ceph--791102db--7222--4743--8d98--991a35b32ef2-osd--block--89f488cb--7afd--4999--907c--c8d158c86958 253:6 0 10G 0 lvm
├─ceph--791102db--7222--4743--8d98--991a35b32ef2-osd--block--5ebd762f--4ed9--416f--9d7b--9c1323300d57 253:7 0 10G 0 lvm
└─ceph--791102db--7222--4743--8d98--991a35b32ef2-osd--block--12c97022--4c16--4190--9c5b--fd138ab261b3 253:8 0 10G 0 lvm
sde 8:64 0 30G 0 disk
├─ceph--76a6e4d9--fa84--4422--b1ca--653f20c9ad29-osd--block--6de3f747--45af--44fc--88d0--b3b4b8d34213 253:10 0 10G 0 lvm
├─ceph--76a6e4d9--fa84--4422--b1ca--653f20c9ad29-osd--block--5ace4739--c84b--429f--ba82--97f3c00cab19 253:11 0 10G 0 lvm
└─ceph--76a6e4d9--fa84--4422--b1ca--653f20c9ad29-osd--block--c862b697--716e--4fc6--b36a--ff7f7c3fdbf0 253:12 0 10G 0 lvm
sr0 11:0 1 1024M 0 rom
Đồng thời bạn cũng sẽ thấy các container đã được tạo hết, mỗi container tương ứng với 1 OSD trên CEPH-LAB-OSD-076.
shell> podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dac606232957 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n client.crash.C... 12 minutes ago Up 12 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-crash-CEPH-LAB-OSD-076
d82852d7529c 10.237.7.74:5000/prometheus/node-exporter:v1.5.0 --no-collector.ti... 12 minutes ago Up 12 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-node-exporter-CEPH-LAB-OSD-076
82cf04093471 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.11 -f --se... 8 minutes ago Up 8 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-11
7db28e34bdd3 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.14 -f --se... 8 minutes ago Up 8 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-14
fab7b6b3761c 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.19 -f --se... 8 minutes ago Up 8 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-19
53b26c97e0bd 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.24 -f --se... 7 minutes ago Up 7 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-24
baaf90079e13 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.29 -f --se... 7 minutes ago Up 7 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-29
7a5230c98724 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.34 -f --se... 6 minutes ago Up 6 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-34
3ae34d039170 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.39 -f --se... 5 minutes ago Up 5 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-39
9725959c9694 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.44 -f --se... 4 minutes ago Up 4 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-44
2f51f5ca8068 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.49 -f --se... 4 minutes ago Up 4 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-49
a2ec7472a260 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.54 -f --se... 3 minutes ago Up 3 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-54
b4d175f996f4 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.55 -f --se... 2 minutes ago Up 2 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-55
66eae15a0e50 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc -n osd.8 -f --set... 2 minutes ago Up 2 minutes ago ceph-75ac298c-0653-11f0-a2e7-2b96c52a296a-osd-8
3c9c1cdb6d2a 10.237.7.74:5000/ceph/ceph@sha256:479f0db9298e37defcdedb1edb8b8db25dd0b934afd6b409d610a7ed81648dbc lvm batch --no-au... About a minute ago Up About a minute ago sad_allen
Di chuyển node mới vào root=ssd-01
(CRUSH map)
Move CEPH-LAB-OSD-076 đang ở root default vào root ssd-01. Vì là SSD nên tốc độ recovery rất nhanh có thể ảnh hưởng chung đến băng thông chung của cluster. Nếu bạn muốn kiểm soát reweight thì hãy reweight các OSDs về 0 trước sau đó mới move sang root mong muốn. Sau đó bạn hãy sử dụng script hay cách gì đó mà bạn muốn để kiểm soát reweight.
Lời khuyên là với SSD, nên kiểm soát reweight thủ công để tránh quá tải lúc recovery.
shell> ceph osd crush move CEPH-LAB-OSD-076 root=ssd-01
moved item id -5 name 'CEPH-LAB-OSD-076' to location {root=ssd-01} in crush map
Xác minh lại kết quả ceph osd tree
bạn thấy node CEPH-LAB-OSD-076 bây giờ nằm ở root ssd-01.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-6 0 root default
-1 74.91742 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
<bỏ bớt làm gọn output>
-5 0.11755 host CEPH-LAB-OSD-076
8 ssd 0.00980 osd.8 up 1.00000 1.00000
11 ssd 0.00980 osd.11 up 1.00000 1.00000
14 ssd 0.00980 osd.14 up 1.00000 1.00000
19 ssd 0.00980 osd.19 up 1.00000 1.00000
24 ssd 0.00980 osd.24 up 1.00000 1.00000
29 ssd 0.00980 osd.29 up 1.00000 1.00000
34 ssd 0.00980 osd.34 up 1.00000 1.00000
39 ssd 0.00980 osd.39 up 1.00000 1.00000
44 ssd 0.00980 osd.44 up 1.00000 1.00000
49 ssd 0.00980 osd.49 up 1.00000 1.00000
54 ssd 0.00980 osd.54 up 1.00000 1.00000
55 ssd 0.00980 osd.55 up 1.00000 1.00000
Kiểm tra daemon
shell> ceph orch ps CEPH-LAB-OSD-076
NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID
crash.CEPH-LAB-OSD-076 CEPH-LAB-OSD-076 running (19m) 18s ago 19m 7554k - 18.2.4 2bc0b0f4375d dac606232957
node-exporter.CEPH-LAB-OSD-076 CEPH-LAB-OSD-076 *:9112 running (19m) 18s ago 19m 8711k - 1.5.0 0da6a335fe13 d82852d7529c
osd.8 CEPH-LAB-OSD-076 running (9m) 18s ago 9m 43.8M 4096M 18.2.4 2bc0b0f4375d 66eae15a0e50
osd.11 CEPH-LAB-OSD-076 running (16m) 18s ago 16m 55.9M 4096M 18.2.4 2bc0b0f4375d 82cf04093471
osd.14 CEPH-LAB-OSD-076 running (15m) 18s ago 15m 50.4M 4096M 18.2.4 2bc0b0f4375d 7db28e34bdd3
osd.19 CEPH-LAB-OSD-076 running (15m) 18s ago 15m 49.3M 4096M 18.2.4 2bc0b0f4375d fab7b6b3761c
osd.24 CEPH-LAB-OSD-076 running (14m) 18s ago 14m 50.0M 4096M 18.2.4 2bc0b0f4375d 53b26c97e0bd
osd.29 CEPH-LAB-OSD-076 running (14m) 18s ago 14m 48.5M 4096M 18.2.4 2bc0b0f4375d baaf90079e13
osd.34 CEPH-LAB-OSD-076 running (14m) 18s ago 14m 49.3M 4096M 18.2.4 2bc0b0f4375d 7a5230c98724
osd.39 CEPH-LAB-OSD-076 running (12m) 18s ago 12m 45.5M 4096M 18.2.4 2bc0b0f4375d 3ae34d039170
osd.44 CEPH-LAB-OSD-076 running (11m) 18s ago 11m 45.9M 4096M 18.2.4 2bc0b0f4375d 9725959c9694
osd.49 CEPH-LAB-OSD-076 running (11m) 18s ago 11m 45.7M 4096M 18.2.4 2bc0b0f4375d 2f51f5ca8068
osd.54 CEPH-LAB-OSD-076 running (11m) 18s ago 11m 45.1M 4096M 18.2.4 2bc0b0f4375d a2ec7472a260
osd.55 CEPH-LAB-OSD-076 running (10m) 18s ago 10m 44.2M 4096M 18.2.4 2bc0b0f4375d b4d175f996f4
Trạng thái chung cluster để xác nhận các container OSD, crash và node-exporter đang running
.
shell> 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 2d), standbys: CEPH-LAB-MON-071.lyxipt, CEPH-LAB-MON-073.holphb
osd: 56 osds: 56 up (since 5m), 56 in (since 5m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 32 GiB used, 528 GiB / 560 GiB avail
pgs: 1 active+clean
5. Ưu và nhược điểm của cách triển khai này.
Ưu điểm
- Tự động hóa cao:
cephadm
giúp quản lý OSD container nhanh chóng và dễ theo dõi. - Dễ mở rộng: Thêm node mới mà không cần thay đổi nhiều cấu hình.
- Khả năng kiểm soát: Có thể kiểm soát việc lên lịch OSD thông qua labels (
_no_schedule
).
Nhược điểm
- Tốn thời gian khởi tạo container nếu tài nguyên node yếu.
- Việc reweight tự động có thể ảnh hưởng hiệu năng nếu không kiểm soát.
- Phụ thuộc nhiều vào hệ thống mạng và thời gian đồng bộ.
Lời khuyên
- Luôn kiểm tra kỹ
ceph -s
trước và sau mỗi hành động. - Zap ổ đĩa sạch sẽ trước khi đưa vào cluster.
- Luôn theo dõi
podman ps
vàceph osd tree
để biết tiến trình hoạt động. - Với node SSD, kiểm soát reweight thủ công nếu cluster đang chạy workloads lớn.
- Sử dụng công cụ giám sát Prometheus/Grafana để quan sát hiệu năng sau khi thêm OSDs.
Sơ đồ minh họa
+--------------------+ +------------------+
| CEPH-MON-NODE(s) | <-----> | CEPH-MGR |
| (Monitors quorum) | +------------------+
+--------------------+ |
|
v
+------------------------+
| CEPH-OSD-NODE(s) |
| (containerized OSDs) |
+------------------------+
OSD Node 076:
/dev/sdb -> 3x 10G LVM -> osd.8, osd.11, osd.14
/dev/sdc -> 3x 10G LVM -> osd.19, osd.24, osd.29
...
6. Kết luận
Việc thêm node OSD mới vào Ceph cluster sử dụng cephadm
là một quy trình rõ ràng, dễ kiểm soát và có thể tự động hóa. Tuy nhiên, cần tuân thủ nghiêm ngặt các bước chuẩn bị như zap ổ đĩa, kiểm tra thời gian, xác minh cấu hình mạng và đảm bảo các container khởi tạo đúng đắn. Khi thực hiện đúng, bạn có thể mở rộng dung lượng Ceph một cách mượt mà và không ảnh hưởng đến hoạt động hiện tại.
Bạn có thể sử dụng nội dung này như một cheatsheet khi triển khai node mới hoặc viết thành script tự động hóa tùy theo môi trường production.