Cách khôi phục tệp ảnh đĩa qcow2 bằng fsck từ máy chủ
Tải mô-đun thiết bị khối mạng:
Sudo modprobe nbd max_part=8
Máy tắt nguồn:
Sudo virsh phá hủy máy ảo
Kết nối hình ảnh đĩa:
Sudo qemu-nbd --connect=/dev/nbd0 /var/lib/libvirt/images/virtual-machine.qcow2
Kiểm tra đĩa: (Đĩa hiện được gắn trên máy chủ, bạn có thể thấy nó trong nautilus/explorer)
Sudo fsck /dev/nbd0p2
Đối với tôi, tôi có thêm hai ổ đĩa được gắn mà tôi vừa quét cả nbd-dm3 và nbd0p2, đây là một ví dụ về đầu ra dự kiến mà tôi vừa trả lời có cho tất cả.
fsck từ util-linux 2.25.2
e2fsck 1.42.12 (29-Aug-2014)
/dev/nbd0p1: khôi phục nhật ký
/dev/nbd0p1 chứa hệ thống tệp có lỗi, hãy kiểm tra bắt buộc.
Vượt qua 1: Kiểm tra nút, khối và kích thước
Đã tìm thấy các nút là một phần của danh sách liên kết mồ côi bị hỏng. Khắc phục<y>? Vâng
Inode 274 là một phần của danh sách inode mồ côi. ĐÃ SỬA.
Inode 132276 là một phần của danh sách inode mồ côi. ĐÃ SỬA.
Đã xóa inode 142248 không có dtime. Khắc phục<y>? Vâng
Pass 2: Kiểm tra cấu trúc thư mục
Pass 3: Kiểm tra kết nối thư mục
Vượt qua 4: Kiểm tra số lượng tham chiếu
Pass 5: Kiểm tra thông tin tóm tắt nhóm
Khối khác biệt bitmap: -603674 -623174 +(689342--689343)
Khắc phục<y>? Vâng
Khối miễn phí được tính sai cho nhóm #18 (15076, được tính = 15077).
Khắc phục<y>? Vâng
Khối miễn phí được tính sai cho nhóm #19 (11674, được tính = 11675).
Khắc phục<y>? Vâng
Số khối miễn phí bị sai (632938, được tính = 670871).
Khắc phục<y>? Vâng
Sự khác biệt về bitmap inode: -274 -132276 -142248
Khắc phục<y>? Vâng
Số nút miễn phí được tính sai cho nhóm #0 (52, được tính = 53).
Khắc phục<y>? Vâng
Số inode miễn phí bị sai đối với nhóm #16 (99, được tính = 100).
Khắc phục<y>? Vâng
Số inode miễn phí bị sai đối với nhóm #17 (519, được tính = 520).
Khắc phục<y>? Vâng
Số nút miễn phí bị sai (204392, được tính = 204599).
Khắc phục<y>? Vâng
/dev/nbd0p1: ***** HỆ THỐNG TẬP TIN ĐÃ ĐƯỢC SỬA ĐỔI *****
/dev/nbd0p1: 101833/306432 tệp (0,2% không liền kề), 553321/1224192 khối
Ngắt kết nối thiết bị:
Sudo qemu-nbd --ngắt kết nối /dev/nbd0
/dev/nbd0 bị ngắt kết nối
Khởi động máy của bạn và kiểm tra xem nó có hoạt động không:
khởi động máy ảo virsh
Nguồn: https://gist.github.com/islander/8517685e3a9f7e0e1d458033710f0893