วิธีกู้คืนไฟล์อิมเมจดิสก์ qcow2 โดยใช้ fsck จากโฮสต์
โหลดโมดูลอุปกรณ์บล็อกเครือข่าย:
sudo modprobe nbd max_part=8
เครื่องปิด:
sudo virsh ทำลายเครื่องเสมือน
เชื่อมต่อดิสก์อิมเมจ:
sudo qemu-nbd --connect=/dev/nbd0 /var/lib/libvirt/images/virtual-machine.qcow2
ตรวจสอบดิสก์: (ตอนนี้ติดตั้งดิสก์บนโฮสต์แล้ว คุณสามารถดูได้ใน nautilus/explorer)
sudo fsck /dev/nbd0p2
สำหรับฉัน ฉันติดตั้งไดรฟ์พิเศษสองตัวซึ่งฉันเพิ่งสแกนทั้ง nbd-dm3 และ nbd0p2 นี่คือตัวอย่างผลลัพธ์ที่คาดไว้ซึ่งฉันเพิ่งตอบว่าใช่
fsck จาก util-linux 2.25.2
e2fsck 1.42.12 (29-ส.ค.-2557)
/dev/nbd0p1: การกู้คืนเจอร์นัล
/dev/nbd0p1 มีระบบไฟล์ที่มีข้อผิดพลาด ตรวจสอบบังคับ
ผ่าน 1: ตรวจสอบไอโหนด บล็อก และขนาด
พบ Inodes ที่เป็นส่วนหนึ่งของรายการลิงก์ orphan ที่เสียหาย แก้ไข<y>? ใช่
ไอโหนด 274 เป็นส่วนหนึ่งของรายการไอโหนดที่ถูกละเลย แก้ไขแล้ว.
Inode 132276 เป็นส่วนหนึ่งของรายการ inode ที่ถูกละเลย แก้ไขแล้ว.
ไอโหนดที่ถูกลบ 142248 มี dtime เป็นศูนย์ แก้ไข<y>? ใช่
ผ่าน 2: การตรวจสอบโครงสร้างไดเร็กทอรี
ผ่าน 3: ตรวจสอบการเชื่อมต่อไดเร็กทอรี
ผ่าน 4: ตรวจสอบจำนวนอ้างอิง
ผ่าน 5: ตรวจสอบข้อมูลสรุปของกลุ่ม
บล็อกความแตกต่างของบิตแมป: -603674 -623174 +(689342--689343)
แก้ไข<y>? ใช่
บล็อคฟรีนับผิดสำหรับกลุ่ม #18 (15076, นับ=15077)
แก้ไข<y>? ใช่
บล็อกฟรีนับผิดสำหรับกลุ่ม #19 (11674, นับ=11675)
แก้ไข<y>? ใช่
บล็อคฟรีนับผิด (632938, นับ=670871)
แก้ไข<y>? ใช่
ความแตกต่างของบิตแมป Inode: -274 -132276 -142248
แก้ไข<y>? ใช่
inodes ฟรีนับผิดสำหรับกลุ่ม # 0 (52, นับ = 53)
แก้ไข<y>? ใช่
ไอโหนดฟรีนับผิดสำหรับกลุ่ม # 16 (99, นับ = 100)
แก้ไข<y>? ใช่
ไอโหนดฟรีนับผิดสำหรับกลุ่ม #17 (519, นับ = 520)
แก้ไข<y>? ใช่
ไอโหนดฟรีนับผิด (204392, นับ=204599)
แก้ไข<y>? ใช่
/dev/nbd0p1: ***** ระบบไฟล์ถูกแก้ไข *****
/dev/nbd0p1: 101833/306432 ไฟล์ (0.2% ไม่ติดกัน), 553321/1224192 บล็อก
ถอดอุปกรณ์:
sudo qemu-nbd --ตัดการเชื่อมต่อ /dev/nbd0
/dev/nbd0 ถูกตัดการเชื่อมต่อ
เริ่มเครื่องของคุณและตรวจสอบว่าใช้งานได้หรือไม่:
virsh start เครื่องเสมือน
แหล่งที่มา: https://gist.github.com/islander/8517685e3a9f7e0e1d458033710f0893