Lỗi “VM is locked (backup)” xảy ra khi bạn cố gắng khởi động một máy ảo KVM nhưng Proxmox không thể thực hiện thao tác này vì máy ảo đang bị khóa (locked). Khóa này thường được thiết lập khi bạn đang thực hiện các thao tác nhạy cảm hoặc dài như sao lưu (backup), di chuyển (migration), hoặc snapshot, để đảm bảo rằng không có thao tác nào khác có thể gây ra xung đột.
Nguyên nhân có thể xảy ra:
- Quá trình sao lưu bị gián đoạn hoặc không kết thúc đúng cách, dẫn đến việc máy ảo vẫn còn trong trạng thái bị khóa.
- Sau khi khởi động lại máy chủ, trạng thái khóa này không được tự động gỡ bỏ.
Cách giải quyết:
- Bạn có thể sử dụng lệnh
qm unlock <VMID>
để gỡ bỏ khóa này. Ví dụ, với VM ID là 101, bạn có thể chạy lệnh:
Bạn có thể sử dụng lệnh qm unlock [vmid]
để bỏ lock cho vmid này.
qm unlock 142
Lệnh này sẽ xóa khóa và cho phép bạn khởi động hoặc thao tác với máy ảo bình thường.
Lưu ý:
Trước khi gỡ bỏ khóa, hãy chắc chắn rằng không có tiến trình sao lưu hoặc di chuyển nào đang chạy liên quan đến máy ảo đó để tránh gây ra sự cố dữ liệu.
Kết quả bạn nhận được như hình dưới, ổ khóa đã được loại bỏ.
Bây giờ bạn tiến hành xóa vm và bạn có thể sẽ nhận được kết quả như dưới.
Đây là log lỗi.
TASK ERROR: rbd error: rbd: listing images failed: (2) No such file or directory
Nguyên nhân lỗi:
- Bạn đã tạo container không đặc quyền (unprivileged container) thông qua GUI và trong quá trình này đã tạo ra image
vm-142-disk-1
. - Sau đó, bạn đã thử phục hồi (restore) từ bản sao lưu của container có đặc quyền (privileged container), nhưng quá trình này thất bại. Điều này có thể đã làm container biến mất hoặc bạn đã xóa nó.
- Khi bạn tạo lại container với ID 142, image
vm-142-disk-2
được tạo ra, nhưng imagevm-142-disk-1
không bị xóa đúng cách, dẫn đến lỗi.
Sử dụng lệnh rbd ls -l CEPH-NVME-01
để liệt kê các image RBD trong pool. Bạn phát hiện ra một vài image hợp lệ, nhưng có một image liên quan đến máy ảo có id 142
vm-142-disk-1
báo lỗi No such file or directory
.
shell> rbd ls -l CEPH-NVME-01
rbd: error opening vm-144-disk-0: (2) No such file or directory
NAME SIZE PARENT FMT PROT LOCK
vm-100-disk-0 200 GiB 2 excl
vm-100-disk-1 9.8 TiB 2 excl
vm-101-disk-0 160 GiB 2 excl
vm-104-disk-0 200 GiB 2 excl
vm-106-disk-0 160 GiB 2 excl
vm-107-disk-0 160 GiB 2 excl
vm-108-disk-0 160 GiB 2 excl
vm-109-disk-0 160 GiB 2 excl
vm-110-disk-0 200 GiB 2 excl
vm-111-disk-0 160 GiB 2 excl
vm-112-disk-0 200 GiB 2 excl
vm-113-disk-0 160 GiB 2 excl
vm-114-disk-0 160 GiB 2 excl
vm-115-disk-0 200 GiB 2 excl
vm-116-disk-0 200 GiB 2 excl
vm-117-disk-0 160 GiB 2 excl
vm-118-disk-0 160 GiB 2 excl
vm-119-disk-0 160 GiB 2 excl
vm-120-disk-0 200 GiB 2 excl
vm-121-disk-0 160 GiB 2 excl
vm-122-disk-0 160 GiB 2 excl
vm-123-disk-0 160 GiB 2 excl
vm-124-disk-0 160 GiB 2 excl
vm-125-disk-0 160 GiB 2 excl
vm-126-disk-0 160 GiB 2 excl
vm-127-disk-0 160 GiB 2 excl
vm-128-disk-0 160 GiB 2 excl
vm-129-disk-0 200 GiB 2 excl
vm-130-disk-0 160 GiB 2 excl
vm-131-disk-0 160 GiB 2 excl
vm-132-disk-0 160 GiB 2 excl
vm-133-disk-0 200 GiB 2
vm-133-disk-1 9.8 TiB 2 excl
vm-134-disk-0 160 GiB 2 excl
vm-135-disk-0 200 GiB 2 excl
vm-136-disk-0 160 GiB 2 excl
vm-137-disk-0 160 GiB 2 excl
vm-138-disk-0 200 GiB 2
vm-139-disk-0 160 GiB 2 excl
vm-140-disk-0 160 GiB 2 excl
vm-141-disk-0 160 GiB 2 excl
vm-142-disk-1 9.8 TiB 2 excl
vm-143-disk-0 200 GiB 2
vm-143-disk-1 9.8 TiB 2 excl
vm-144-disk-1 9.8 TiB 2 excl
vm-145-disk-0 200 GiB 2
vm-145-disk-1 9.8 TiB 2 excl
rbd: listing images failed: (2) No such file or directory
Bạn có thể xóa thủ công nó bằng lệnh rbd theo cú pháp rbd rm [image name] -p [pool name]
.
shell> rbd rm vm-142-disk-1 -p CEPH-NVME-01
Removing image: 100% complete...done.
- Giải quyết vấn đề tương tự khác:
- Trong trường hợp khác, khi bạn cố gắng xóa image
vm-106-disk-1
, bạn gặp lỗi “image has watchers”. Điều này có nghĩa là image vẫn đang được mở hoặc client sử dụng nó đã bị crash. - Bạn đã thử lại sau khi đóng/mapping image hoặc chờ client bị crash timeout và sau đó đã thành công xóa image
vm-106-disk-1
.
- Trong trường hợp khác, khi bạn cố gắng xóa image
- Xác nhận kết quả:
- Bạn kiểm tra lại danh sách các image RBD trong pool để đảm bảo rằng image bị lỗi đã được xóa thành công và không còn lỗi nào xảy ra.
Cũng có thể bạn gặp thông báo này, hãy xử lý tiếp như sau.
Nếu vào CLI sử dụng lệnh rbd ls -l [pool name]
bạn sẽ nhận được lỗi dưới, lỗi này cho thấy rằng lệnh rbd ls -l CEPH-NVME-01
đã gặp vấn đề khi liệt kê các image trong pool CEPH-NVME-01
. Cụ thể, nó không thể mở image vm-144-disk-0
vì không tìm thấy image này trong pool.
shell> rbd ls -l CEPH-NVME-01
rbd: error opening vm-144-disk-0: (2) No such file or directory
NAME SIZE PARENT FMT PROT LOCK
vm-1001-daviHyviUnV8GxsZ-d659ZZHOW8VX8O1t 80 GiB 2 excl
rbd: listing images failed: (2) No such file or directory
Nhưng nếu bạn dùng lệnh rbd ls [pool name
bạn sẽ không gặp lỗi và thấy kết quả lệnh rbd ls CEPH-NVME-01
, ta thấy rằng image vm-144-disk-0
hoàn toàn tồn tại trong pool CEPH-NVME-01
.
shell> rbd ls CEPH-NVME-01
vm-1001-daviHyviUnV8GxsZ-d659ZZHOW8VX8O1t
vm-144-disk-0
Vì sao lại xuất hiện lỗi khi dùng rbd ls -l
?
Có thể có một số nguyên nhân khiến lệnh rbd ls -l
báo lỗi trong khi image vẫn tồn tại:
- Quyền truy cập: Tài khoản bạn đang sử dụng có thể không có quyền đọc đối với image đó.
- Lỗi tạm thời: Có thể có một lỗi tạm thời trong quá trình kết nối với Ceph cluster hoặc trong quá trình xử lý lệnh.
- Vấn đề về metadata: Có thể có một số vấn đề nhỏ trong metadata của image, khiến lệnh
rbd ls -l
không thể đọc được thông tin đầy đủ.
shell> rbd rm CEPH-NVME-01/vm-144-disk-0
Removing image: 100% complete...done.
Xác minh lại bằng lệnh rbd ls [pool name]
.
root@pve02:~# rbd ls CEPH-NVME-01
vm-1001-daviHyviUnV8GxsZ-d659ZZHOW8VX8O1t
Bạn cũng có thể xác minh lại bằng lệnh rbd ls -l [pool name]
.
root@pve02:~# rbd ls -l CEPH-NVME-01
NAME SIZE PARENT FMT PROT LOCK
vm-1001-daviHyviUnV8GxsZ-d659ZZHOW8VX8O1t 80 GiB 2 excl
Và trên WebGUID của Proxmox bạn cũng thấy kết quả xóa VM thành công.
Lưu ý:
- Dữ liệu bị xóa vĩnh viễn: Khi bạn xóa một image, dữ liệu bên trong nó sẽ bị xóa vĩnh viễn. Hãy chắc chắn rằng bạn đã sao lưu dữ liệu nếu cần thiết.
- Ảnh hưởng đến VM: Nếu image này đang được sử dụng bởi một virtual machine nào đó, việc xóa image sẽ khiến VM không thể khởi động được.
- Kiểm tra phụ thuộc: Nếu image này là một snapshot của một image khác, việc xóa image gốc có thể ảnh hưởng đến các snapshot.
Các trường hợp đặc biệt.
- Image đang được sử dụng: Nếu image đang được sử dụng bởi một virtual machine, bạn cần dừng VM trước khi xóa image.
- Image bị hỏng: Nếu image bị hỏng, bạn có thể gặp khó khăn trong việc xóa nó. Hãy thử sử dụng các tùy chọn như
--force
hoặc--yes-i-really-really-mean-it
(tùy thuộc vào phiên bản Ceph) để xóa image. Tuy nhiên, hãy cẩn thận khi sử dụng các tùy chọn này.
Lời khuyên:
- Sao lưu: Luôn luôn sao lưu dữ liệu quan trọng trước khi thực hiện bất kỳ thay đổi nào đối với Ceph.
- Kiểm tra kỹ: Kiểm tra kỹ tên image và pool trước khi thực hiện lệnh xóa.
- Tham khảo tài liệu: Nếu bạn gặp khó khăn, hãy tham khảo tài liệu chính thức của Ceph hoặc tìm kiếm sự trợ giúp từ cộng đồng.
Quy trình này giải thích cách bạn đã xử lý thành công lỗi liên quan đến việc liệt kê và xóa các image RBD bị lỗi trong Ceph pool.