ตระกูลระบบไฟล์ ext2 / ext3 / ext4 ไม่จำเป็นต้องมีการจัดระเบียบ
การออกแบบพื้นฐานอะไรช่วยระบบไฟล์นี้ไม่ให้แยกส่วน?
ตระกูลระบบไฟล์ ext2 / ext3 / ext4 ไม่จำเป็นต้องมีการจัดระเบียบ
การออกแบบพื้นฐานอะไรช่วยระบบไฟล์นี้ไม่ให้แยกส่วน?
คำตอบ:
วิธีหนึ่งที่ระบบไฟล์ ext4 เก็บการตรวจสอบการแตกแฟรกเมนต์คือกระบวนการของการจัดสรรที่ล่าช้า (โหมดการจัดสรรเริ่มต้นของ ext4)
การจัดสรรที่ล่าช้าทำงานโดยเลื่อนการแมปของบล็อกข้อมูลไฟล์ที่เขียนใหม่ไปยังดิสก์บล็อกในระบบไฟล์จนกว่าจะถึงเวลาเขียนกลับ
สิ่งนี้ทำงานโดยการจัดสรรบล็อกส่วนใหญ่สำหรับไฟล์ในเวลาเดียวกันเมื่อทราบจำนวนรวมของบล็อก (หรืออย่างน้อย ballpark) ในแต่ละไฟล์ สิ่งนี้ทำให้ตัวจัดสรรบล็อค ( mballoc
ดังที่กล่าวไว้ในคำตอบของ MMK) ทำงานได้ดีขึ้นในการค้นหาพื้นที่ที่มีขนาดที่เหมาะสมของพื้นที่ว่างในการวางไฟล์
ในระบบไฟล์ ext3 มีตัวจัดสรรบล็อกสำหรับดิสก์สำหรับแต่ละบล็อกและดังนั้นจึงค่อนข้างเป็นไปได้ที่การแตกแฟรกเมนต์สามารถเกิดขึ้นได้
อย่างไรก็ตามในระบบไฟล์ ext4 มีตัวจัดสรรหลายบล็อกซึ่งสามารถหน่วงเวลาการเขียนบล็อกไปยังดิสก์เพื่อให้คุณสมบัติสามารถจัดสรรบล็อกหลาย ๆ ครั้งในดิสก์ก้อนเดียวเพื่อให้การเขียนที่ต่อเนื่องกัน - และอื่น ๆ มันมีโอกาสน้อยที่การแตกแฟรกเมนต์สามารถเกิดขึ้นได้ (ยังคงเป็นไปได้มีโอกาสน้อยกว่า)
อย่างน้อยสำหรับ Ext2 (และ Ext3 ฉันคิดว่าแม้ว่าฉันจะไม่ค่อยแน่ใจ) ไม่มีอะไรในรูปแบบ / โครงสร้างบนดิสก์ที่จะป้องกันการจัดเรียงข้อมูล
การขาดความจำเป็นในการจัดเรียงข้อมูลจะอยู่ในระดับการนำไปปฏิบัติซึ่งจะแตกต่างกันไปตามระบบปฏิบัติการ นั่นคือขึ้นอยู่กับการนำไปใช้งานไฟล์ใน Ext2 อาจมีหรือไม่มีการแยกส่วน
หากหลีกเลี่ยงการแตกแฟรกเมนต์นั่นอาจเป็นเพราะการจัดสรรฟิสิคัลบล็อกล่าช้า นั่นคือในบางระดับของการใช้งานระบบไฟล์จะแคชข้อมูล (และเข้าถึงผ่านหมายเลขบล็อกโลจิคัล) จนกว่าจะถึงเวลาที่มันถูกเขียน / คอมมิตลงดิสก์ ในที่สุดเมื่อข้อมูลถูกเขียนลงดิสก์ต้องมีการจัดสรรฟิสิคัลบล็อก อัลกอริทึมการจัดสรรอาจ (หรืออาจไม่) จัดสรรจำนวนฟิสิคัลบล็อกที่มีอยู่ติดกันสำหรับข้อมูล
หวังว่านี่จะช่วยได้