จะเกิดอะไรขึ้นถ้าฉันลบ + ที่หายไปพบ


38

เมื่อคุณสร้างระบบไฟล์ Linux บางตัวเช่น ext3 จะมีการสร้างไดเรกทอรี 'lost + found' ตามไฟล์นี้จะถูกวางไว้ที่นั่นหากไฟล์ได้รับความเสียหายจากความผิดพลาดของระบบบางประเภท

จะเกิดอะไรขึ้นหากลบไดเรกทอรีนี้และระบบขัดข้อง หากโฟลเดอร์ถูกลบฉันสามารถสร้างไดเรกทอรีใหม่ด้วยmkdir ที่หายไป + พบหรือมีแอททริบิวที่สามารถตั้งค่าได้เมื่อสร้างระบบไฟล์เท่านั้น

คำตอบ:


35

fsck จะสร้างไดเรกทอรีที่หายไป + ที่พบใหม่ถ้ามันหายไป

ในการเริ่มต้นการกระจายส่วนใหญ่รัน fsck หากระบบไฟล์ถูกตรวจพบว่าไม่ได้ถูกถอดออกอย่างสมบูรณ์ ในขณะที่ fsck สร้างไดเรกทอรีที่หายไป + ที่พบถ้ามันหายไปมันจะสร้างมันขึ้นมาและวางสิ่งใดก็ตามที่พบในไดเรกทอรีนั้น


15

หากคุณไม่สามารถหรือไม่ต้องการเรียกใช้fsckคุณสามารถสร้างlost+foundไดเรกทอรีใหม่ด้วยmklost+found:

mklost + พบการจัดสรรบล็อกดิสก์ล่วงหน้าไปยังไดเร็กทอรี + found ที่หายไปเพื่อที่ว่าเมื่อ e2fsck (8) กำลังถูกเรียกใช้เพื่อกู้คืนระบบไฟล์มันไม่จำเป็นต้องจัดสรรบล็อกในระบบไฟล์เพื่อจัดเก็บไฟล์ที่ไม่ได้เชื่อมโยงจำนวนมาก สิ่งนี้ทำให้มั่นใจได้ว่า e2fsck จะไม่ต้องจัดสรรบล็อคข้อมูลในระบบไฟล์ระหว่างการกู้คืน


ที่ RHEL 6.4 หรือfsckไม่ใช่e2fsckที่สร้างใหม่สำหรับฉันไม่ว่าไดเรกทอรีจะถูกเมาท์หรือไม่ก็ตาม cd <root-dir-of-the-mount> && mklost+foundทำมัน
Luis Antolín Cano

7

ไดเรกทอรี + ที่หายไปที่มีอยู่แล้วซึ่งมีขนาดใหญ่พอที่จะมีไฟล์ที่ไม่ได้เชื่อมโยงจำนวนมากทำให้ภาระบน e2fsck น้อยลงเพื่อสร้างไดเรกทอรีและขยายให้มีขนาดที่เหมาะสม

มันจะยังคงพยายามทำเช่นนั้น แต่เมื่อเผชิญกับระบบไฟล์ที่เสียหายมันอาจมีความเสี่ยงมากกว่า

fsck เก่ามากสำหรับระบบไฟล์อื่น ๆ บนแพลตฟอร์มอื่น ๆ ไม่สามารถสร้าง / ค้นพบ + หายไปและไม่สามารถเติบโตได้ นี่คือประวัติสำหรับเหตุผลของ / lost + found แต่เหตุผลปัจจุบันคือเพื่อให้งานของ e2fsck ง่ายขึ้น


4
ไม่ใช่ว่าพวกเขาไม่สามารถสร้างการค้นหาที่หายไป + - มันเป็นความคิดที่ดีที่จะสร้างไฟล์ / ไดเรกทอรีในระบบไฟล์ที่เมาแล้ว แต่คุณเพียงแค่สร้างไดเรกทอรีที่มีขนาดใหญ่พอที่จะเก็บรายการไดเร็กตอรี่ของ inodes ใด ๆ ที่ munched ที่คุณพบในระบบไฟล์แบบเมาเมื่อคุณพยายามล้างมัน.
chris

5

ถ้าคุณไม่มีlost+found, e2fsck(ผมยังไม่ได้ตรวจสอบรหัสอื่น ๆfsckการใช้งาน) จะนำเสนอในการสร้างมันสำหรับคุณ แต่คุณสามารถสร้างมันขึ้นมาใหม่ได้ด้วยตัวเองถ้าคุณต้องการเช่นกัน ไม่มีอะไรพิเศษเป็นพิเศษเกี่ยวกับไดเรกทอรีนั้น (อย่างน้อยก็ไม่ได้ตรวจสอบโค้ด)


2
fsck ควรสร้างการสูญเสีย + พบถ้าจำเป็นหรือไม่
David Schmitt

2
ขอบคุณฉันได้ตรวจสอบรหัสสำหรับ e2fsck แล้วและแน่นอนว่ามันมีข้อเสนอให้สร้างใหม่สำหรับคุณ (สิ่งนี้ไม่รับประกันว่าจะประสบความสำเร็จ --- ซึ่งเป็นสาเหตุที่การค้นพบที่หายไป + ที่สร้างไว้ล่วงหน้านั้นมีประโยชน์เช่นกัน) เรียบร้อย!
Chris Jester-Young

6
@ ChrisJester-Young - คำตอบของคุณไม่ถูกต้อง lost+foundเป็นไดเรกทอรีพิเศษ มีดิสก์บล็อกที่จัดสรรล่วงหน้าเพื่อให้เครื่องมือการกู้คืนไม่จำเป็นต้องจัดสรรบล็อกระหว่างการกู้คืน เครื่องมือที่mklost+foundมีอยู่โดยเฉพาะเนื่องจากmkdirไม่สามารถสร้างได้อย่างถูกต้อง ดูlinux.die.net/man/8/mklost+found
aggregate1166877

2

e2fsck จะสร้าง + ค้นพบที่หายไปอีกครั้งและจะทำลายไฟล์ใด ๆ ที่อาจมีชื่อเดียวกันเพื่อให้แน่ใจว่าสามารถสร้างเป็นไดเรกทอรีได้

โปรดทราบว่าระบบไฟล์ Unix รุ่นเก่าจำนวนมากต้องการให้สูญหาย + พบแนบกับ inode หมายเลข 2 โดยเฉพาะดังนั้นจึงจำเป็นต้องสร้างระบบไฟล์ขึ้นใหม่ในกรณีส่วนใหญ่หากไดเรกทอรีหายไป e2fsck ทำการค้นหา inode ฟรีใด ๆ ซึ่งไม่จำเป็นต้องใช้ inode 2 ซึ่งทำให้การกู้คืนง่ายกว่าสมัยก่อนมาก


1

คุณสามารถสร้างไดเรกทอรีนั้นโดยใช้ mkdir ควรเป็นเจ้าของโดย root พร้อมกลุ่มของ root หรือ wheel นอกจากนั้นไม่มีอะไรพิเศษเป็นพิเศษเกี่ยวกับมัน ในกรณีที่ไฟฟ้าขัดข้องหรือการปิดเครื่องอย่างไม่เหมาะสมเมื่อบูทระบบก็ควรเปิด fsck โดยอัตโนมัติ fsck จะเข้าสู่ระบบและพยายามกู้คืนไฟล์ที่เสียหายที่พบ ไฟล์ใด ๆ ก็ตามที่ผ่านมาและอาจเสียหายจะถูกย้ายไปที่นั่น

อีกกรณีสำหรับไฟล์ที่จะย้ายมีหาก fsck พบไฟล์ที่มี inode พาเรนต์หายไป โดยปกติจะเป็นกรณีนี้หากบล็อกได้รับความเสียหายบนดิสก์ในตำแหน่งเฉพาะที่เก็บ inode ของโฟลเดอร์ มันจะกำหนดไอโหนดหลักให้เป็นโฟลเดอร์ + หายไปที่พบ

แก้ไข: ฉันไม่แน่ใจว่ากรณีหลังจะสร้างไดเรกทอรีใหม่ ฉันจะปล่อยให้อยู่คนเดียวเพื่อความปลอดภัย ฉันไม่สามารถคิดเหตุผลที่จะลบมัน ไม่มีอะไรเลวร้ายที่จะเกิดขึ้นหากปราศจากมัน


1
คุณแน่ใจหรือไม่ว่าจะสร้างด้วยmkdir?

ใช่มันคือการจัดสรรพื้นที่ไม่ได้เชื่อมโยงกับไดเรกทอรี inode หรือแม้แต่เส้นทาง การจัดสรรพื้นที่ที่สงวนไว้นั้นมีค่าแฟลกน้อยลงในหน่วยความจำบางอย่างที่ต้องใช้สิทธิ์รูท / เคอร์เนลและการเรียกพิเศษเพื่อเข้าถึงที่ fsck ทราบซึ่งมันใช้ประโยชน์จากพื้นที่นั้นโดยการคัดลอกไฟล์ที่อาจเสียหายหรือแตกลงในหน่วยความจำนั้น ไฟล์ที่มี inode ชี้ไปที่หน่วยความจำใหม่ การทำงานของไฟล์จะทำงานตามปกติในไฟล์เหล่านั้น แต่การเปลี่ยนแปลงใด ๆ เช่นการย้ายหรือการบันทึกจะดึงข้อมูลออกจากหน่วยความจำที่สงวนไว้
TrueDuality

1

นอกจากนี้ใน Debian 6 และ Ubuntu 12 LTS ที่cronแพคเกจการจัดส่ง/etc/cron.daily/standardซึ่งประกาศที่ขาดหายไปlost+foundไดเรกทอรีบนระบบไฟล์ในท้องถิ่นและส่งการแจ้งเตือนทุกวันเกี่ยวกับเรื่องนี้ผ่านทาง e-mail, mklost+foundแนะนำการใช้งานของ

อย่างไรก็ตามสิ่งนี้ถูกลบออกตามเวลาของ Debian 7 และ Ubuntu 14 LTS ตามลำดับเพราะมันล้าสมัยแล้ว

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