Zap disk khi join OSD trong Ceph

🗂️ 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ế.

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