วิธีที่เหมาะสมในการจัดการกับระบบไฟล์ XFS ที่เสียหาย


18

ฉันเพิ่งมีระบบไฟล์ XFS เสียหายเนื่องจาก powerfail (ระบบ CentOS 7) ระบบไม่สามารถบู๊ตได้อย่างถูกต้อง

ฉันบูตจากซีดีช่วยเหลือและพยายามxfs_repairบอกให้ฉันติดตั้งพาร์ติชันเพื่อจัดการกับบันทึก

ฉันติดตั้งพาร์ติชันและทำการlsตรวจสอบว่าใช่ดูเหมือนว่าอยู่ที่นั่น ฉัน unmounted พาร์ติชันและลองxfs_repairอีกครั้งและได้รับข้อความเดียวกัน

ฉันควรทำอย่างไรในสถานการณ์เช่นนี้? มีสิ่งผิดปกติเกิดขึ้นกับซีดีกู้คืนของฉัน (System Rescue CD, รุ่น 4.7.1) หรือไม่ มีขั้นตอนอื่นที่ฉันควรใช้หรือไม่

ฉันลงเอยด้วยการกู้คืนระบบจากการสำรองข้อมูล (มันง่ายและรวดเร็วในกรณีนี้) แต่ฉันอยากรู้ว่าต้องทำอะไรในอนาคต

คำตอบ:


20

หากคุณกำลังพยายามเรียกใช้xfs_repairรับข้อความแสดงข้อผิดพลาดที่แนะนำให้ติดตั้งระบบไฟล์เพื่อเล่นซ้ำบันทึกและหลังจากติดตั้งยังได้รับข้อความแสดงข้อผิดพลาดเดียวกันคุณอาจต้องทำการซ่อมแซมแบบบังคับ (โดยใช้-Lแฟล็กด้วยxfs_repair) ตัวเลือกนี้ควรเป็นทางเลือกสุดท้าย

ตัวอย่างเช่นฉันจะใช้กรณีที่ฉันมีพาร์ทิชันรากเสียหายในการติดตั้ง CentOS 7 ของฉัน เมื่อพยายามติดตั้งพาร์ติชันฉันได้รับข้อความแสดงข้อผิดพลาดด้านล่างอย่างต่อเนื่อง:

mount: mount / dev / mapper / centos-root บน / mnt / centos-root ล้มเหลว: โครงสร้างต้องการการทำความสะอาด

น่าเสียดายที่การบังคับให้มีการซ่อมแซมจะเกี่ยวข้องกับการบันทึก (ทำลาย) การบันทึกก่อนที่จะทำการซ่อมแซม เมื่อใช้วิธีนี้มีความเป็นไปได้ที่จะจบลงด้วยข้อมูลที่เสียหายมากกว่าที่คาดไว้ในตอนแรก อย่างไรก็ตามเราสามารถใช้เครื่องมือ xfs ที่เหมาะสมเพื่อดูความเสียหายที่อาจเกิดขึ้นก่อนที่จะทำการเปลี่ยนแปลงอย่างถาวร

การใช้xfs_metadumpและxfs_mdrestoreคุณสามารถสร้างอิมเมจข้อมูลเมตาของพาร์ติชันที่ได้รับผลกระทบและทำการซ่อมแซมแบบบังคับบนอิมเมจแทนพาร์ติชันเอง ประโยชน์ของการนี้คือความสามารถในการดูความเสียหายที่มาพร้อมกับการซ่อมแซมแบบบังคับก่อนที่จะดำเนินการบนพาร์ติชัน

ในการทำเช่นนี้คุณจะต้องมี USB ที่มีขนาดเหมาะสมหรือฮาร์ดไดรฟ์ภายนอก เริ่มต้นด้วยการติดตั้งไดรฟ์ USB - USB ของฉันอยู่ที่/dev/sdb1คุณอาจตั้งชื่อของคุณแตกต่างกัน

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

เมื่อเมานต์แล้วให้รันxfs_metadumpเพื่อสร้างสำเนาของข้อมูลเมตาพาร์ติชันไปยัง USB - อีกครั้งพาร์ติชันที่ได้รับผลกระทบของคุณอาจแตกต่างกัน ในกรณีนี้ฉันมีพาร์ทิชันรูทที่เสียหายอยู่ที่/dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

ถัดไปคุณจะต้องกู้คืนข้อมูลเมตาในรูปภาพเพื่อให้เราสามารถทำการซ่อมแซมและวัดความเสียหายได้

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

ฉันพบว่าในโหมดช่วยเหลือxfs_mdrestoreไม่พร้อมใช้งานและคุณจะต้องอยู่ในโหมดช่วยเหลือของซีดี CentOS แบบสด

ในที่สุดเราสามารถทำการซ่อมแซมกับภาพ:

xfs_repair -L /mnt/usb/centos-root.img

หลังจากการซ่อมแซมเสร็จสิ้นและคุณประเมินผลลัพธ์และความเสียหายที่อาจเกิดขึ้นคุณสามารถกำหนดได้ว่าคุณต้องการซ่อมแซมกับพาร์ติชันหรือไม่

เมื่อต้องการเรียกใช้การซ่อมแซมกับพาร์ติชันเพียงเรียกใช้:

xfs_repair -L /dev/mapper/centos-root

อย่าลืมตรวจสอบพาร์ติชั่นอื่น ๆ เพื่อดูว่ามีการทุจริตหรือไม่ หลังจากการซ่อมแซมรีบูตระบบและคุณควรจะสามารถบูตได้สำเร็จ

จำไว้ว่า-Lควรใช้ธงเป็นทางเลือกสุดท้ายที่ไม่มีตัวเลือกอื่น ๆ ที่เป็นไปได้ในการซ่อมแซม

ฉันพบว่าบทความออนไลน์เหล่านี้ช่วย:


ตกลงดังนั้น -L เป็นทางเลือกสุดท้ายและนี่คือคำแนะนำที่ยอดเยี่ยมเกี่ยวกับวิธีการดูว่ามันจะแย่แค่ไหนถ้าเราใช้ -L ฉันมีตัวเลือกอื่นใดอีกบ้างที่ใช้ -L ไม่ได้
Michael Kohne

1
@MichaelKohne กู้คืนจากข้อมูลสำรองแน่นอน คุณไม่ควรเข้าใกล้นรกในระดับนี้เว้นแต่คุณจะไม่ได้สำรองข้อมูล
Michael Hampton

1
@MichaelHampton - ตกลงยุติธรรมพอ แต่ฉันไม่คิดว่าฉันเคยสูญเสียระบบไฟล์เช่นนี้ไปยังข้อผิดพลาด ext4 ใน powerfail - xfs มีความยืดหยุ่นน้อยลงหรือไม่ หรือว่าตอนนี้ฉันโชคร้ายจริงๆ
Michael Kohne

@MichaelKohne ฉันคิดว่าคุณเพิ่งโชคร้ายเป็นพิเศษ XFS ค่อนข้างเป็นระบบไฟล์ที่เชื่อถือได้
Michael Hampton

3
เราเคยทำสิ่งนี้ได้ง่าย ๆ จาก initrd "ความก้าวหน้า" ที่ยอดเยี่ยมที่เราทำ
Florian Heigl

1

ฉันมีข้อผิดพลาดนี้เมื่อ centos 7 หยุดไม่ดีภายในเครื่องเสมือน kvm:

ตรวจพบความเสียหายของข้อมูลเมตาที่ xfs ...

เมื่อฉันใช้บันทึกเล็กน้อย“ journalctl -xe” ฉันพบข้อผิดพลาดในการติดตั้ง:

/ dev / mapper / root / sysroot

ฉันแก้มันโดยใช้:

xfs_repair / dev / mapper / root

จากนั้นระบบจะดำเนินการเจ็ดขั้นตอนให้สมบูรณ์แล้วจึงรีบูตโดยใช้

./ปิดตัวลง

จากนั้น virtual machine centos 7 ก็ใช้งานได้ดี ...

ความนับถือ

หมายเหตุ: บางทีคุณ / dev / mapper / root มีชื่ออื่นโปรดดูบันทึกข้อผิดพลาดของคุณด้วย journalctl -xe เพื่อค้นหาชื่อหน่วยของคุณที่ติดตั้งไม่ถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.