Fix lỗi disk vẫn dính LVM sau wipefs -af không cần reboot

linux disk

Hướng dẫn clear LVM cho disk sau khi wipefs disk mà không cần reboot

Mô tả

Khi gõ lệnh wipefs -af cho disk đang có LVM, đôi khi hệ điều hành vẫn chưa giải phóng hoàn toàn device-mapper đang giữ disk đó. Kết quả là phải reboot server rồi chạy lại lsblk thì mới thấy disk đã được format sạch hoàn toàn.

Việc này khá phiền trong môi trường production, đặc biệt khi server đang chạy dịch vụ và không thể reboot ngay. Một ví dụ thực tế là khi cần thêm OSD mới cho Ceph, nhưng disk vẫn còn bị kẹt LVM nên Ceph không nhận là disk trắng để triển khai OSD mới.

Bài này hướng dẫn cách clear LVM còn kẹt sau khi đã wipefs -af mà không cần reboot server.

1. Tình trạng ban đầu

Kiểm tra bằng lsblk, disk /dev/sdh vẫn đang có logical volume bên dưới.

Disk còn LVM sau khi kiểm tra lsblk

Ở ví dụ này, /dev/sdh là disk 10.9T, bên dưới vẫn còn mapping dạng:

ceph--xxx-osd--block--xxx

Đây thường là LVM được Ceph tạo ra khi triển khai OSD bằng ceph-volume lvm.

2. Chạy wipefs để xóa signature trên disk

Thực hiện xóa filesystem signature / LVM signature trên disk:

wipefs -af /dev/sdh

Chạy wipefs -af trên disk

Kết quả cho thấy wipefs đã xóa được signature LVM2_member.

Tuy nhiên, vấn đề là sau khi chạy xong, kernel vẫn có thể đang giữ device-mapper cũ.

3. Kiểm tra lại lsblk sau wipefs

Chạy lại:

lsblk

Sau wipefs nhưng lsblk vẫn còn LVM

Kết quả vẫn còn thấy LVM bên dưới /dev/sdh.

Điều này nghĩa là wipefs đã xóa metadata trên disk, nhưng device-mapper / LVM mapping vẫn còn đang tồn tại trong kernel.

Nói thẳng: lúc này disk chưa thật sự “trắng” trong mắt hệ điều hành, nên các tool như Ceph vẫn có thể không dùng được disk này để tạo OSD mới.

4. Kiểm tra Volume Group còn tồn tại

Chạy:

vgs

Kiểm tra vgs

Có thể thấy vẫn còn các VG dạng ceph-xxxx.

Tiếp tục kiểm tra LV:

lvs

Kiểm tra lvs

Ở đây có các LV dạng:

osd-block-xxxx

Nếu đây là disk Ceph OSD cũ, các LV này thường chính là block device của OSD trước đó.

5. Kiểm tra device nào đang giữ disk

Kiểm tra holder của disk:

ls -l /sys/block/sdh/holders/

Kiểm tra holder của disk

Kết quả cho thấy /dev/sdh đang bị giữ bởi:

dm-6

Đây là nguyên nhân chính làm disk chưa được release hoàn toàn.

6. Thử zap GPT metadata

Có thể chạy thêm:

sgdisk --zap-all /dev/sdh

Chạy sgdisk zap all

Lệnh này sẽ xóa GPT / partition metadata trên disk.

Tuy nhiên, nếu device-mapper vẫn còn giữ disk thì chỉ chạy sgdisk --zap-all là chưa đủ.

Kiểm tra lại lsblk:

Sau sgdisk nhưng disk vẫn còn mapping

Vẫn còn mapping LVM bên dưới /dev/sdh.

7. Thử reread partition table

Chạy:

blockdev --rereadpt /dev/sdh
lsblk

Chạy blockdev rereadpt

Nếu disk vẫn còn holder, kết quả có thể vẫn chưa sạch:

Sau rereadpt vẫn còn LVM

Lý do rất đơn giản: kernel vẫn còn device-mapper đang active.

8. Gỡ device-mapper đang giữ disk

Từ bước kiểm tra holder, ta biết disk đang bị giữ bởi /dev/dm-6.

Gỡ mapping này bằng lệnh:

dmsetup remove -f /dev/dm-6

Remove device mapper bằng dmsetup

Lưu ý cực kỳ quan trọng:

  • Không chạy bừa với dm-X nếu chưa xác định đúng disk.
  • Luôn kiểm tra bằng /sys/block/<disk>/holders/ trước.
  • Nếu remove nhầm device-mapper đang được sử dụng, có thể ảnh hưởng dữ liệu hoặc dịch vụ đang chạy.
  • Chỉ làm khi chắc chắn disk đó là disk cần xóa, không còn mount, không còn service dùng, không còn OSD cần giữ dữ liệu.

9. Kiểm tra kết quả cuối cùng

Chạy lại:

lsblk

Disk đã sạch sau khi dmsetup remove

Lúc này /dev/sdh đã hiển thị là disk trắng, không còn LV / LVM mapping bên dưới.

Đây là trạng thái mong muốn để có thể tiếp tục dùng disk cho các mục đích khác, ví dụ như thêm OSD mới cho Ceph.

10. Bộ lệnh tổng hợp

Dưới đây là flow xử lý gọn:

# 1. Kiểm tra disk
lsblk

# 2. Xóa signature
wipefs -af /dev/sdh

# 3. Xóa GPT metadata nếu cần
sgdisk --zap-all /dev/sdh

# 4. Kiểm tra holder
ls -l /sys/block/sdh/holders/

# 5. Nếu thấy dm-X đang giữ disk, remove device-mapper đó
dmsetup remove -f /dev/dm-6

# 6. Reread partition table
blockdev --rereadpt /dev/sdh

# 7. Kiểm tra lại
lsblk

Thay /dev/sdh/dev/dm-6 đúng theo môi trường thực tế của bạn.

11. Trường hợp dùng với Ceph OSD

Nếu disk từng là Ceph OSD, trước khi clear disk nên đảm bảo OSD đã được xử lý đúng quy trình, ví dụ:

ceph osd out osd.
ceph osd safe-to-destroy osd.
ceph osd destroy osd. --yes-i-really-mean-it

Sau đó mới xử lý disk ở tầng OS.

Nếu đang dùng ceph-volume, có thể dùng thêm:

ceph-volume lvm list
ceph-volume lvm zap /dev/sdh --destroy

Tuy nhiên, trong trường hợp đã wipefs -af rồi mà disk vẫn còn kẹt LVM mapping, thì điểm mấu chốt vẫn là kiểm tra holder và remove device-mapper còn sót lại.

12. Kết luận

Khi wipefs -af xong nhưng lsblk vẫn còn thấy LVM bên dưới disk, nguyên nhân thường không phải do wipefs không chạy, mà là do kernel vẫn còn giữ device-mapper cũ.

Cách xử lý đúng là:

    1. Kiểm tra holder của disk.
    1. Xác định đúng dm-X đang giữ disk.
    1. Remove device-mapper đó bằng dmsetup remove -f.
    1. Reread partition table.
    1. Kiểm tra lại bằng lsblk.

Cách này giúp clear disk mà không cần reboot server, rất hữu ích trong môi trường production, đặc biệt khi cần tái sử dụng disk để thêm OSD mới cho Ceph.