🗂️ Tổng quan.
Trong quá trình triển khai hoặc thay thế ổ đĩa trong hệ thống Ceph OSD, việc đảm bảo ổ đĩa được làm sạch (zap) hoàn toàn trước khi sử dụng là bước cực kỳ quan trọng. Một disk còn sót cấu trúc LVM hoặc partition cũ của Ceph có thể gây lỗi khi bạn chạy ceph-volume
hoặc join OSD mới.
Bài viết này chia sẻ chi tiết quy trình thực tế mình sử dụng để zap disk sạch sẽ hoàn toàn trước khi join OSD, kèm theo ví dụ và cách xử lý lỗi nếu gặp tình trạng disk “cứng đầu” như còn LVM cũ.
🧭 Mục tiêu
- Làm sạch các disk chưa sử dụng hoặc tái sử dụng để chuẩn bị join OSD.
- Xử lý lỗi disk còn dính LVM Ceph cũ.
- Kiểm tra lại kết quả để đảm bảo 100% disk sạch.
🗂️ Kiểm tra danh sách ổ đĩa với lsblk
Chạy lệnh sau để liệt kê tất cả block device hiện có:
lsblk
Kết quả ví dụ:
sdb 8:16 0 1.7T 0 disk
├─sdb1 8:17 0 913.7G 0 part
└─sdb4 8:20 0 609.7G 0 part
...
sdf 8:80 0 1.7T 0 disk
└─ceph--xxxx-osd--block--xxxx 253:0 1.7T 0 lvm
➡️ Các ổ đĩa như sdb
, sdc
, sdf
, v.v. vẫn còn phân vùng hoặc cấu trúc LVM, cần phải zap.
🔨 Zap disk bằng sgdisk --zap-all
Lệnh này dùng để xoá toàn bộ GPT/MBR và partition table:
sgdisk --zap-all /dev/sdX
Ví dụ:
sgdisk --zap-all /dev/sdb
sgdisk --zap-all /dev/sdc
sgdisk --zap-all /dev/sdd
sgdisk --zap-all /dev/sdf
sgdisk --zap-all /dev/sdj
sgdisk --zap-all /dev/sdm
sgdisk --zap-all /dev/sdo
sgdisk --zap-all /dev/sdu
sgdisk --zap-all /dev/sdw
Bạn có thể dùng shell dưới đây để tự động hóa nó.
for disk in sda sdx; do
if [ -b /dev/"$disk" ]; then
echo "Zapping /dev/$disk..."
sudo sgdisk --zap-all /dev/"$disk"
else
echo "Device /dev/$disk does not exist!"
fi
done
📌 Sau khi zap, hãy chạy lại lsblk
để kiểm tra. Nếu vẫn còn LVM → chuyển sang bước tiếp theo.
Bạn cũng có thể dùng cách này nhé.
shell> wipefs -a /dev/sdx
/dev/sdx: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sdx: 8 bytes were erased at offset 0x1bf1dc55e00 (gpt): 45 46 49 20 50 41 52 54
/dev/sdx: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/sdx: calling ioctl to re-read partition table: Success
✅ (Tùy chọn) Ghi đè đầu đĩa (nếu bạn muốn chắc chắn hơn)
dd if=/dev/zero of=/dev/sdx bs=1M count=10
Lệnh này sẽ ghi đè vài MB đầu của đĩa (xóa sạch bảng phân vùng và dữ liệu boot đầu đĩa).
💣 Disk vẫn còn LVM Ceph – Xử lý bằng lvremove
Nếu disk vẫn còn device LVM kiểu như:
└─ceph--<VG>-osd--block--<UUID>
Ví dụ.
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2105
loop1 7:1 0 87M 1 loop /snap/lxd/27037
loop2 7:2 0 40.4M 1 loop /snap/snapd/20671
sda 8:0 0 447.1G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
├─sda3 8:3 0 4G 0 part
└─sda4 8:4 0 441.6G 0 part /
sdb 8:16 0 1.7T 0 disk
sdc 8:32 0 1.7T 0 disk
sdd 8:48 0 1.7T 0 disk
sde 8:64 0 1.7T 0 disk
sdf 8:80 0 1.7T 0 disk
└─ceph--8b41df08--2871--437c--aa05--6cdffc24d815-osd--block--73ffc02c--a825--4e97--84a4--85a7bbb1e1db 253:0 0 1.7T 0 lvm
Thử xoá bằng:
lvremove -y /dev/ceph-*/osd-block-*
❗Nếu lỗi:
Volume group "ceph-xxxxxxxx" not found
Cannot process volume group ...
→ Disk vẫn đang được giữ bởi device mapper (dmsetup)
🧹 Gỡ bỏ thủ công với dmsetup remove
Xác định tên mapper chính xác:
dmsetup ls --tree | grep ceph
Ví dụ output:
ceph--8b41df08--xxxx-osd--block--xxxx (253:0)
Gỡ bỏ bằng:
dmsetup remove /dev/mapper/ceph--8b41df08--xxxx--osd--block--xxxx
✅ Sau đó, chạy lại lsblk
, bạn sẽ thấy disk đã sạch.
🧪 Kiểm tra lần cuối – Đảm bảo disk đã “trắng tinh”
Chạy lại:
lsblk
✅ Bạn nên thấy các disk chỉ hiển thị như sau, không còn partition hay LVM:
sdb 8:16 0 1.7T 0 disk
sdc 8:32 0 1.7T 0 disk
...
sdw 65:96 0 1.7T 0 disk
🧭 Tổng kết quy trình
[lsblk] --> [sgdisk --zap-all] --> [lvremove nếu còn LVM] --> [dmsetup remove nếu LVM cứng đầu] --> [lsblk kiểm tra]
Sơ đồ tóm tắt:
+-----------+
| lsblk |
+-----+-----+
|
v
+-----+-----+
| sgdisk |
| --zap-all |
+-----+-----+
|
v
+-----------+
| lvremove |
+-----+-----+
|
v
+-----------+
| dmsetup |
| remove |
+-----+-----+
|
v
+-----------+
| lsblk |
| clean |
+-----------+
✅ Quét lại List Devices trong Ceph.
Bạn hoàn toàn có thể quét lại danh sách ổ đĩa (devices) trên node CEPH-LAB-OSD-28
bằng lệnh sau:
ceph orch device ls CEPH-LAB-OSD-28 --refresh
Lệnh này sẽ yêu cầu Ceph orchestrator quét lại các thiết bị trên node cụ thể thay vì dùng dữ liệu cache.
Nếu bạn đang dùng cephadm:
Bạn cũng có thể dùng lệnh trực tiếp trên node đó để cập nhật thông tin ổ đĩa thủ công, ví dụ:
ceph-volume lvm list
🎯 Kết luận
Việc zap sạch disk trước khi join Ceph OSD là bước quan trọng tránh các lỗi khó chịu về sau. Bằng việc kết hợp sgdisk
, lvremove
, dmsetup
, bạn có thể đảm bảo disk thực sự được làm trắng hoàn toàn.
Đây là bài học thực chiến mình gặp khi triển khai Ceph cluster với hàng chục OSD disk và hi vọng nó sẽ giúp ích cho anh em khi thực hiện triển khai Ceph thực tế.