อ่าน 5 นาที
การแตกกระจายของระบบไฟล์
การแตกกระจายของระบบไฟล์ หรือบางครั้งเรียกว่า การเสื่อมสภาพของระบบไฟล์ เป็นลักษณะเฉพาะของ ระบบไฟล์ ที่จัดเก็บ ไฟล์ ในบล็อกที่ไม่ต่อเนื่องกัน นับเป็นกรณีพิเศษของ...
การแตกกระจายของระบบไฟล์

การแตกกระจายของระบบไฟล์หรือบางครั้งเรียกว่าการเสื่อมสภาพของระบบไฟล์เป็นลักษณะเฉพาะของระบบไฟล์ที่จัดเก็บไฟล์ในบล็อกที่ไม่ต่อเนื่องกัน นับเป็นกรณีพิเศษของการแตกกระจายของข้อมูลการแตกกระจายของระบบไฟล์ส่งผลเสียต่อเวลาใน การ ค้นหาข้อมูลบนดิสก์ (สื่อบันทึกข้อมูลแบบหมุน) ซึ่งทำให้ปริมาณงาน ลดลง การแตกกระจายสามารถแก้ไขได้โดยการจัดระเบียบไฟล์ใหม่ให้เป็นพื้นที่ต่อเนื่องกัน ซึ่งกระบวนการนี้เรียกว่าการจัดเรียงข้อมูลให้เป็นระเบียบ (defragmentation )
ไดรฟ์โซลิดสเตท (SSD) ไม่มีการค้นหาเชิงกล ดังนั้นการเข้าถึงแบบไม่เรียงลำดับจึงเร็วกว่าไดรฟ์ดิสก์หลายเท่า ทำให้ปัญหาการแตกกระจายของข้อมูลลดลงอย่างมาก อันที่จริง แนวทางปฏิบัติที่ดีที่สุดคือไม่ ควร ทำการจัดเรียงข้อมูลใหม่บน SSD เพราะการทำเช่นนั้นอาจทำให้ไดรฟ์สึกหรอก่อนกำหนดเนื่องจากการเขียนและการลบข้อมูลที่ไม่จำเป็น[ 1 ]
สาเหตุ
เมื่อระบบไฟล์เริ่มต้นทำงานบนพาร์ติชัน ครั้งแรก ระบบไฟล์ จะมีโครงสร้างภายในขนาดเล็กเพียงไม่กี่อย่าง และโดยทั่วไปแล้วจะเป็นบล็อกพื้นที่ว่างต่อเนื่องกัน[ a ]ซึ่งหมายความว่าระบบไฟล์สามารถวางไฟล์ที่สร้างขึ้นใหม่ได้ทุกที่บนพาร์ติชัน ในช่วงเวลาหนึ่งหลังจากการสร้าง ไฟล์อาจถูกจัดวางในลักษณะที่เกือบจะเหมาะสมที่สุด เมื่อระบบปฏิบัติการและแอปพลิเคชันได้รับการติดตั้ง หรือไฟล์เก็บถาวรถูกแตกไฟล์ ไฟล์ต่างๆ จะเกิดขึ้นตามลำดับ ดังนั้นไฟล์ที่เกี่ยวข้องจึงอยู่ใกล้กัน
เมื่อไฟล์ที่มีอยู่ถูกลบหรือตัดทอน พื้นที่ว่างใหม่จะถูกสร้างขึ้น เมื่อมีการเพิ่มข้อมูลลงในไฟล์ที่มีอยู่ มักจะเป็นไปไม่ได้ที่จะเขียนต่อจากจุดที่ไฟล์เคยสิ้นสุด เนื่องจากอาจมีไฟล์อื่นถูกจัดสรรไว้แล้ว ดังนั้นจึงต้องจัดสรรส่วนใหม่ เมื่อเวลาผ่านไปและปัจจัยเหล่านี้เกิดขึ้นอย่างต่อเนื่อง พื้นที่ว่างและไฟล์ที่ถูกเพิ่มข้อมูลบ่อยๆ จะมีแนวโน้มที่จะแตกเป็นส่วนๆ มากขึ้น พื้นที่ว่างที่สั้นลงยังหมายความว่าระบบไฟล์ไม่สามารถจัดสรรไฟล์ใหม่ได้อย่างต่อเนื่องอีกต่อไป และต้องแบ่งไฟล์ออกเป็นส่วนๆ โดยเฉพาะอย่างยิ่งเมื่อระบบไฟล์เต็มและไม่มีพื้นที่ว่างขนาดใหญ่ต่อเนื่องกันเหลืออยู่
ตัวอย่าง

ตัวอย่างต่อไปนี้เป็นการทำให้เรื่องที่ซับซ้อนนั้นง่ายขึ้น ลองพิจารณาสถานการณ์ต่อไปนี้: ดิสก์ใหม่มีไฟล์ห้าไฟล์ชื่อ A, B, C, D และ E บันทึกไว้ต่อเนื่องกันตามลำดับ แต่ละไฟล์ใช้พื้นที่ 10 บล็อก (ในที่นี้ขนาดบล็อกไม่สำคัญ) พื้นที่ที่เหลือของดิสก์คือหนึ่งบล็อกว่าง ดังนั้นจึงสามารถสร้างและบันทึกไฟล์เพิ่มเติมได้หลังจากไฟล์ E
หากไฟล์ B ถูกลบ พื้นที่ว่างชุดที่สองจำนวนสิบบล็อกจะถูกสร้างขึ้น และดิสก์จะเกิดการแตกกระจาย พื้นที่ว่างนั้นจะถูกปล่อยทิ้งไว้ โดยถูกทำเครื่องหมายว่าพร้อมใช้งานในภายหลัง จากนั้นจึงนำมาใช้อีกครั้งตามความจำเป็น[ b ]ระบบไฟล์อาจทำการจัดเรียงข้อมูลดิสก์ใหม่ทันทีหลังจากลบไฟล์ แต่การทำเช่นนั้นจะทำให้ประสิทธิภาพการทำงานลดลงอย่างมากในเวลาที่ไม่สามารถคาดเดาได้
ตอนนี้ ไฟล์ใหม่ชื่อ F ซึ่งต้องการพื้นที่เจ็ดบล็อก สามารถวางลงในเจ็ดบล็อกแรกของพื้นที่ว่างที่เพิ่งถูกปล่อยทิ้ง ซึ่งเดิมเป็นที่เก็บไฟล์ B และสามบล็อกถัดจากนั้นจะยังคงว่างอยู่ หากมีการเพิ่มไฟล์ใหม่ชื่อ G ซึ่งต้องการพื้นที่เพียงสามบล็อก ไฟล์ G ก็สามารถใช้พื้นที่ถัดจาก F และก่อน C ได้
หากต่อมาจำเป็นต้องขยายพื้นที่ในไดรฟ์ F เนื่องจากพื้นที่ถัดจากไดรฟ์ F ถูกใช้งานไปแล้ว ระบบไฟล์มีสามทางเลือกดังนี้:
- การเพิ่มบล็อกใหม่ในตำแหน่งอื่นและระบุว่า F มีขอบเขต ที่สอง
- ย้ายไฟล์ที่ขวางทางการขยายตัวไปยังที่อื่น เพื่อให้ F ยังคงต่อเนื่องกัน
- กำลังย้ายไฟล์ F เพื่อให้เป็นไฟล์เดียวต่อเนื่องกันที่มีขนาดใหญ่ขึ้น
ตัวเลือกที่สองอาจไม่เหมาะสมในแง่ของประสิทธิภาพ เช่นเดียวกับตัวเลือกที่สามเมื่อไฟล์มีขนาดใหญ่มาก ตัวเลือกที่สามเป็นไปไม่ได้เลยหากไม่มีพื้นที่ว่างต่อเนื่องขนาดใหญ่พอที่จะรองรับไฟล์ใหม่ได้ ดังนั้นวิธีปฏิบัติทั่วไปคือการสร้างส่วนขยายที่อื่นแล้วเชื่อมต่อส่วนขยายใหม่เข้ากับส่วนขยายเดิม
เนื้อหาที่เพิ่มเข้าไปที่ส่วนท้ายของไฟล์ F จะอยู่ในขอบเขตเดียวกัน แต่ถ้ามีเนื้อหามากเกินไปจนไม่มีที่ว่างเหลือหลังจากขอบเขตสุดท้ายแล้ว ก็ จะต้องสร้างขอบเขต ใหม่ขึ้นมาเรื่อยๆ จนกระทั่งในที่สุดระบบไฟล์จะมีส่วนที่ว่างเปล่าอยู่หลายแห่ง และบางไฟล์อาจกระจายอยู่บนหลายขอบเขต เวลาในการเข้าถึงไฟล์เหล่านั้น (หรือไฟล์ทั้งหมด) อาจนานเกินไป
ความจำเป็น
ระบบไฟล์รุ่นแรกๆ บางระบบไม่สามารถแบ่งไฟล์ออกเป็นส่วนย่อยได้ ตัวอย่างเช่น ระบบไฟล์ Acorn DFSที่ใช้ในBBC Microเนื่องจากไม่สามารถแบ่งไฟล์ออกเป็นส่วนย่อยได้ บางครั้งจึงปรากฏข้อความแสดงข้อผิดพลาดว่า " ไม่สามารถขยายได้"และผู้ใช้มักจะไม่สามารถบันทึกไฟล์ได้แม้ว่าจะมีพื้นที่ว่างในดิสก์เพียงพอ
ระบบไฟล์ แบบ DFS ใช้โครงสร้างดิสก์ที่เรียบง่ายมาก และไฟล์บนดิสก์จะถูกระบุตำแหน่งโดยใช้ความยาวและเซกเตอร์เริ่มต้นเท่านั้น ซึ่งหมายความว่าไฟล์ทั้งหมดต้องมีอยู่เป็นบล็อกเซกเตอร์ต่อเนื่องกัน และไม่สามารถเกิดการแตกกระจายได้ จากตัวอย่างในตารางด้านบน การพยายามขยายไฟล์ F ในขั้นตอนที่ห้าจะล้มเหลวในระบบดังกล่าว โดยแสดงข้อความแสดงข้อผิดพลาด ว่า "ไม่สามารถขยายได้ " ไม่ว่าจะมีพื้นที่ว่างเหลืออยู่บนดิสก์มากแค่ไหน ก็ไม่เพียงพอที่จะขยายไฟล์ข้อมูลได้
มาตรฐานการจัดการข้อผิดพลาดในขณะนั้นค่อนข้างล้าสมัย และในกรณีใดๆ ก็ตาม โปรแกรมที่ถูกบีบอัดลงในหน่วยความจำที่จำกัดของ BBC Micro แทบจะไม่สามารถเสียพื้นที่ไปกับการพยายามจัดการข้อผิดพลาดอย่างราบรื่นได้ แทนที่จะเป็นเช่นนั้น ผู้ใช้จะพบว่าตัวเองถูกส่งกลับไปยังพรอมต์คำสั่งพร้อม ข้อความ " ไม่สามารถขยายได้ " และข้อมูลทั้งหมดที่ยังไม่ได้เพิ่มลงในไฟล์จะสูญหายไป ปัญหานี้ไม่สามารถแก้ไขได้ด้วยการตรวจสอบพื้นที่ว่างบนดิสก์ล่วงหน้า ถึงแม้ว่าจะมีพื้นที่ว่างบนดิสก์ แต่ขนาดของบล็อกพื้นที่ว่างที่ต่อเนื่องกันที่ใหญ่ที่สุดนั้นไม่ปรากฏให้เห็นได้ทันทีหากไม่วิเคราะห์ตัวเลขที่แสดงโดยแคตตาล็อกดิสก์ ดังนั้นผู้ใช้จึงไม่ทันสังเกต นอกจากนี้ ผู้ใช้ DFS เกือบทั้งหมดเคยใช้การจัดเก็บไฟล์แบบเทปคาส เซ็ตมาก่อน ซึ่งไม่ประสบปัญหาข้อผิดพลาดนี้ การอัปเกรดเป็น ระบบ ฟลอปปี้ดิสก์เป็นการอัปเกรดที่มีราคาแพง และเป็นเรื่องที่น่าตกใจที่การอัปเกรดอาจทำให้ข้อมูลสูญหาย โดยไม่มีการเตือน ล่วงหน้า[ 2 ] [ 3 ]
ประเภท
การแตกกระจายของระบบไฟล์อาจเกิดขึ้นได้ในหลายระดับ:
- การแบ่งส่วนย่อยภายในไฟล์ แต่ละไฟล์
- การแตกตัวของพื้นที่ว่าง
- การลดลงของความใกล้เคียงของแหล่งอ้างอิงระหว่างไฟล์ที่แยกจากกันแต่มีความเกี่ยวข้องกัน
- การแตกกระจายภายในโครงสร้างข้อมูลหรือไฟล์พิเศษที่สงวนไว้สำหรับระบบไฟล์เอง
การแตกกระจายของไฟล์
การแตกกระจายของไฟล์เกิดขึ้นเมื่อไฟล์เดียวถูกแบ่งออกเป็นหลายส่วน (เรียกว่าส่วนขยายในระบบไฟล์แบบอิงส่วนขยาย) แม้ว่าระบบไฟล์บนดิสก์จะพยายามรักษาไฟล์แต่ละไฟล์ให้ต่อเนื่องกัน แต่ก็มักเป็นไปไม่ได้หากไม่ส่งผลเสียต่อประสิทธิภาพการทำงานอย่างมาก เครื่องมือตรวจสอบระบบไฟล์และการจัดเรียงข้อมูลมักจะคำนึงถึงการแตกกระจายของไฟล์เฉพาะในสถิติ "เปอร์เซ็นต์การแตกกระจาย" เท่านั้น
การแตกตัวของพื้นที่ว่าง
การแตกกระจายของพื้นที่ว่าง (ที่ไม่ได้จัดสรร) เกิดขึ้นเมื่อมีพื้นที่ว่างในระบบไฟล์หลายส่วนที่สามารถเขียนไฟล์หรือข้อมูลเมตาใหม่ลงไปได้ การแตกกระจายของพื้นที่ว่างที่ไม่พึงประสงค์โดยทั่วไปเกิดจากการลบหรือการตัดทอนไฟล์ แต่ระบบไฟล์อาจแทรกส่วนย่อย ("ฟองอากาศ") ของพื้นที่ว่างโดยเจตนาเพื่ออำนวยความสะดวกในการขยายไฟล์ที่อยู่ใกล้เคียง (ดูการป้องกันการแตกกระจายด้านล่าง)
การกระจัดกระจายไฟล์
การแบ่งส่วนไฟล์ หรือที่เรียกว่าการแตกตัวของไฟล์ที่เกี่ยวข้อง หรือการแตกตัวของไฟล์ระดับแอปพลิเคชัน หมายถึงการขาดความใกล้เคียงของการอ้างอิง (ภายในสื่อจัดเก็บข้อมูล) ระหว่างไฟล์ที่เกี่ยวข้อง ซึ่งแตกต่างจากการแตกตัวสองประเภทก่อนหน้านี้ การกระจายตัวของไฟล์เป็นแนวคิดที่คลุมเครือกว่ามาก เนื่องจากขึ้นอยู่กับรูปแบบการเข้าถึงของแอปพลิเคชันเฉพาะอย่างมาก ซึ่งทำให้การวัดหรือประเมินอย่างเป็นกลางทำได้ยากมาก อย่างไรก็ตาม อาจกล่าวได้ว่าเป็นการแตกตัวประเภทที่สำคัญที่สุด เนื่องจากจากการศึกษาพบว่าไฟล์ที่เข้าถึงบ่อยที่สุดมักจะมีขนาดเล็กเมื่อเทียบกับปริมาณการรับส่งข้อมูลดิสก์ต่อวินาทีที่มีอยู่[ 4 ]
เพื่อหลีกเลี่ยงการแตกกระจายของไฟล์ที่เกี่ยวข้องกันและปรับปรุงความใกล้เคียงของการอ้างอิง (ในกรณีนี้เรียกว่าความต่อเนื่องของไฟล์ ) จำเป็นต้องมีการตั้งสมมติฐานหรือการสังเกตการทำงานของแอปพลิเคชัน สมมติฐานที่ใช้บ่อยมากคือ การเก็บไฟล์ขนาดเล็กไว้ด้วยกันในไดเร็กทอรี เดียวกัน และจัดเรียงตามลำดับของระบบไฟล์ตามธรรมชาติ แม้ว่าจะเป็นสมมติฐานที่สมเหตุสมผล แต่ก็ไม่ได้เป็นจริงเสมอไป ตัวอย่างเช่น แอปพลิเคชันอาจอ่านไฟล์หลายไฟล์ที่แตกต่างกัน อาจอยู่ในไดเร็กทอรีที่แตกต่างกัน ในลำดับเดียวกันกับที่เขียนลงไป ดังนั้น ระบบไฟล์ที่จัดลำดับการเขียนทั้งหมดอย่างต่อเนื่องอาจทำงานได้เร็วกว่าสำหรับแอปพลิเคชันนั้น ๆ
การแตกตัวของโครงสร้างข้อมูล
แคตตาล็อกหรือดัชนีที่ใช้โดยระบบไฟล์เองก็อาจเกิดการแตกกระจายได้เมื่อเวลาผ่านไป เนื่องจากมีการสร้าง เปลี่ยนแปลง หรือลบรายการที่อยู่ในนั้น ปัญหานี้เป็นเรื่องที่น่ากังวลมากกว่าเมื่อวอลุ่มมีไฟล์ขนาดเล็กจำนวนมาก มากกว่าเมื่อวอลุ่มเต็มไปด้วยไฟล์ขนาดใหญ่จำนวนน้อย ขึ้นอยู่กับการออกแบบระบบไฟล์เฉพาะ ไฟล์หรือพื้นที่ที่บรรจุข้อมูลนั้นอาจเกิดการแตกกระจายได้เช่นกัน (ดังที่ได้อธิบายไว้ข้างต้นสำหรับไฟล์ 'ปกติ') โดยไม่คำนึงถึงการแตกกระจายของระเบียนข้อมูลจริงที่เก็บรักษาไว้ภายในไฟล์หรือพื้นที่เหล่านั้น[ 5 ]
สำหรับระบบไฟล์บางระบบ (เช่นNTFS [ c ]และHFS / HFS Plus [ 6 ] ) การเรียงลำดับ / การจัดเรียง / การบีบอัดที่จำเป็นเพื่อเพิ่มประสิทธิภาพข้อมูลนี้ไม่สามารถเกิดขึ้นได้ง่ายในขณะที่ระบบไฟล์กำลังใช้งานอยู่[ 7 ]
ผลเสียที่ตามมา
การแตกตัวของระบบไฟล์เป็นปัญหามากขึ้นใน ฮาร์ดดิสก์ไดรฟ์ระดับผู้บริโภคเนื่องจากความแตกต่างที่เพิ่มขึ้นระหว่างความเร็วในการเข้าถึงแบบลำดับ และ ความหน่วงในการหมุน (และ เวลาในการค้นหาที่น้อยลง) ซึ่งโดยปกติแล้วระบบไฟล์จะถูกวางไว้[ 8 ]ดังนั้น การแตกตัวจึงเป็นปัญหาสำคัญในการวิจัยและการออกแบบระบบไฟล์ การควบคุมการแตกตัวไม่เพียงแต่ขึ้นอยู่กับรูปแบบบนดิสก์ของระบบไฟล์เท่านั้น แต่ยังขึ้นอยู่กับการใช้งานอย่างมากด้วย[ 9 ]การแตกตัวของระบบไฟล์มีผลกระทบต่อประสิทธิภาพน้อยลงในไดรฟ์โซลิดสเตตเนื่องจากไม่มีเวลาใน การค้นหาเชิงกล [ 10 ]อย่างไรก็ตาม ระบบไฟล์จำเป็นต้องจัดเก็บข้อมูลเมตาเพิ่มเติมสำหรับแต่ละส่วนที่ไม่ต่อเนื่องของไฟล์ ข้อมูลเมตาแต่ละส่วนนั้นใช้พื้นที่และต้องการพลังการประมวลผลและเวลาของโปรเซสเซอร์ หากถึงขีดจำกัดการแตกตัวสูงสุด คำขอเขียนจะล้มเหลว[ 10 ]
ใน การทดสอบประสิทธิภาพระบบไฟล์แบบง่ายมักจะละเว้นปัจจัยการแตกกระจาย เนื่องจากเป็นการยากที่จะจำลองการเสื่อมสภาพและการแตกกระจายที่สมจริง ในทางกลับกัน เพื่อความง่ายในการเปรียบเทียบ การทดสอบประสิทธิภาพระบบไฟล์มักจะดำเนินการบนระบบไฟล์ที่ว่างเปล่า ดังนั้น ผลลัพธ์อาจแตกต่างจากรูปแบบการเข้าถึงในชีวิตจริงอย่างมาก[ 11 ]
การบรรเทา
มีการพัฒนาเทคนิคหลายอย่างเพื่อต่อสู้กับปัญหาการแตกกระจายของข้อมูล โดยทั่วไปสามารถแบ่งออกได้เป็นสองประเภท คือการป้องกันล่วงหน้าและการป้องกันย้อนหลังเนื่องจากความยากลำบากในการคาดการณ์รูปแบบการเข้าถึง เทคนิคเหล่านี้จึงมักมีลักษณะเป็นแบบใช้หลักการคาดเดาและอาจทำให้ประสิทธิภาพลดลงภายใต้ภาระงานที่ไม่คาดคิด
ป้องกันการแตกตัว
เทคนิคการป้องกันล่วงหน้าพยายามลดการแตกกระจายของข้อมูลให้น้อยที่สุดในขณะที่กำลังเขียนข้อมูลลงดิสก์ วิธีที่ง่ายที่สุดคือการเพิ่มข้อมูลต่อท้ายส่วนที่แตกกระจายอยู่แล้วในตำแหน่งเดิม หากเป็นไปได้ แทนที่จะจัดสรรบล็อกใหม่ให้กับส่วนที่แตกกระจายใหม่
ระบบไฟล์ในปัจจุบันจำนวนมากพยายามจัดสรรชิ้นส่วนที่ยาวกว่า หรือชิ้นส่วนจากส่วนพื้นที่ว่างที่แตกต่างกัน ซึ่งเรียกว่าส่วนขยายให้กับไฟล์ที่กำลังถูกเพิ่มข้อมูลเข้าไปอย่างต่อเนื่อง วิธีนี้ช่วยหลีกเลี่ยงการแตกกระจายของไฟล์เมื่อมีการเพิ่มข้อมูลหลายไฟล์พร้อมกัน ซึ่งจะช่วยหลีกเลี่ยงการพันกันมากเกินไป[ 9 ]
หากทราบขนาดสุดท้ายของไฟล์ที่จะถูกแก้ไขแล้ว สามารถจัดสรรพื้นที่จัดเก็บสำหรับไฟล์ทั้งหมดล่วงหน้าได้ ตัวอย่างเช่นไฟล์สวอป (ไฟล์เพจ) ของ Microsoft Windows สามารถปรับขนาดได้แบบไดนามิกในระหว่างการทำงานปกติ ดังนั้นจึงอาจเกิดการแตกกระจายอย่างมากได้ สามารถป้องกันปัญหานี้ได้โดยการระบุไฟล์เพจที่มีขนาดต่ำสุดและสูงสุดเท่ากัน ซึ่งเป็นการจัดสรรพื้นที่จัดเก็บสำหรับไฟล์ทั้งหมดล่วงหน้าอย่างมีประสิทธิภาพ
BitTorrentและ แอปพลิ เคชันแชร์ไฟล์แบบ peer-to-peer อื่นๆ จำกัดการแบ่งส่วนโดยการจัดสรรพื้นที่ทั้งหมดที่จำเป็นสำหรับไฟล์เมื่อเริ่มต้นการดาวน์โหลด[ 12 ]
เทคนิคที่ค่อนข้างใหม่คือการจัดสรรแบบหน่วงเวลาในXFS , HFS+ [ 13 ]และZFSเทคนิคเดียวกันนี้ยังเรียกว่าการจัดสรรเมื่อทำการล้างในreiser4และext4เมื่อมีการเขียนข้อมูลลงในระบบไฟล์ บล็อกของระบบไฟล์จะถูกสงวนไว้ แต่ตำแหน่งของไฟล์เฉพาะยังไม่ได้ถูกกำหนดไว้ ต่อมา เมื่อระบบไฟล์ถูกบังคับให้ทำการล้างการเปลี่ยนแปลงอันเป็นผลมาจากแรงดันหน่วยความจำหรือการยืนยันธุรกรรม ตัวจัดสรรจะมีข้อมูลที่ดีขึ้นเกี่ยวกับลักษณะของไฟล์ ระบบไฟล์ส่วนใหญ่ที่ใช้วิธีนี้จะพยายามทำการล้างไฟล์ในไดเร็กทอรีเดียวอย่างต่อเนื่อง สมมติว่าการอ่านหลายครั้งจากไดเร็กทอรีเดียวเป็นเรื่องปกติ ความใกล้เคียงของการอ้างอิงจึงดีขึ้น[ 14 ] Reiser4 ยังจัดลำดับเค้าโครงของไฟล์ตามตารางแฮช ของไดเร็กทอรี ดังนั้นเมื่อมีการเข้าถึงไฟล์ตามลำดับของระบบไฟล์ตามธรรมชาติ (ตามที่กำหนดโดยreaddir ) ไฟล์เหล่านั้นจะถูกอ่านตามลำดับเสมอ[ 15 ]
การจัดเรียงข้อมูลใหม่
เทคนิคการแก้ไขย้อนหลังพยายามลดการแตกกระจายของข้อมูล หรือผลกระทบเชิงลบจากการแตกกระจายของข้อมูล หลังจากที่เกิดขึ้นแล้ว ระบบไฟล์หลายระบบมี เครื่องมือ จัดเรียงข้อมูล (defragmentation tools) ซึ่งพยายามจัดเรียงชิ้นส่วนของไฟล์ใหม่ และบางครั้งก็ลดการกระจายตัวของไฟล์ (เช่น ปรับปรุงความต่อเนื่อง หรือความใกล้เคียงของการอ้างอิง ) โดยการเก็บไฟล์ขนาดเล็กไว้ในไดเร็กทอรีหรือโครงสร้างไดเร็กทอรี หรือแม้แต่ลำดับไฟล์ที่อยู่ใกล้กันบนดิสก์
ระบบ ไฟล์ HFS Plusจะทำการจัดเรียงข้อมูลไฟล์ที่มีขนาดน้อยกว่า 20 MiBและถูกแบ่งออกเป็น 8 ส่วนขึ้นไปอย่างโปร่งใสเมื่อเปิดไฟล์[ 16 ]
ระบบไฟล์อัจฉริยะ (SFS) ของ Commodore Amiga ซึ่งปัจจุบันล้าสมัยไปแล้วจะทำการจัดเรียงข้อมูล (defragmentation) ด้วยตัวเองในขณะที่ระบบไฟล์กำลังใช้งานอยู่ กระบวนการจัดเรียงข้อมูลนั้นแทบจะไม่มีสถานะใดๆ (ยกเว้นตำแหน่งที่กำลังทำงานอยู่) ดังนั้นจึงสามารถหยุดและเริ่มต้นใหม่ได้ทันที ในระหว่างการจัดเรียงข้อมูล ความสมบูรณ์ของข้อมูลจะได้รับการรับประกันทั้งข้อมูลเมตาและข้อมูลปกติ
ดูเพิ่มเติม
หมายเหตุ
- ^ระบบไฟล์บางระบบ เช่น NTFSและ ext2 + อาจจัดสรรพื้นที่ว่างต่อเนื่องไว้ล่วงหน้าสำหรับวัตถุประสงค์พิเศษ
- ^การที่โปรแกรมกู้คืน ไฟล์ยังคงปล่อยพื้นที่ที่ไฟล์ที่ถูกลบเคยใช้ไว้โดยไม่รบกวนมากนัก เป็นสาเหตุที่ทำให้ โปรแกรมเหล่านั้นสามารถทำงานได้ เพราะโปรแกรมเหล่านั้นจะกู้คืนไฟล์ที่มีชื่อถูกลบออกจากไดเร็กทอรี แต่เนื้อหาของไฟล์ยังคงอยู่บนดิสก์
- ^ NTFS สงวนพื้นที่ 12.5% ของวอลุ่มไว้สำหรับ 'โซน MFT' แต่เฉพาะจนกว่าพื้นที่นั้นจะถูกใช้โดยไฟล์อื่น (เช่น หากวอลุ่มเต็มเกิน 87.5% จะไม่สามารถรับประกัน MFT ที่ไม่แตกกระจายได้อีกต่อไป) [ 5 ]
อ่านเพิ่มเติม
- Smith, Keith; Seltzer, Margo. โครงสร้างไฟล์และประสิทธิภาพของระบบไฟล์ (PDF) (เอกสาร). มหาวิทยาลัยฮาร์วาร์ด .
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การแตกกระจายของระบบไฟล์
การแตกกระจายของระบบไฟล์ หรือบางครั้งเรียกว่า การเสื่อมสภาพของระบบไฟล์ เป็นลักษณะเฉพาะของ ระบบไฟล์ ที่จัดเก็บ ไฟล์ ในบล็อกที่ไม่ต่อเนื่องกัน นับเป็นกรณีพิเศษของ...
สาเหตุ
เมื่อ ระบบไฟล์เริ่มต้นทำงาน บน พาร์ติชัน ครั้งแรก ระบบไฟล์ จะมีโครงสร้างภายในขนาดเล็กเพียงไม่กี่อย่าง และโดยทั่วไปแล้วจะเป็นบล็อกพื้นที่ว่างต่อเนื่องกัน [ a ] ซึ่งหมายความว่าระบบไฟล์สามารถวางไฟล์ที่สร้างขึ้นใหม่ได้ทุกที่บนพาร์ติชัน...
ตัวอย่าง
ตัวอย่างต่อไปนี้เป็นการทำให้เรื่องที่ซับซ้อนนั้นง่ายขึ้น ลองพิจารณาสถานการณ์ต่อไปนี้: ดิสก์ใหม่มีไฟล์ห้าไฟล์ชื่อ A, B, C, D และ E บันทึกไว้ต่อเนื่องกันตามลำดับ แต่ละไฟล์ใช้พื้นที่ 10 บล็อก (ในที่นี้ขนาดบล็อกไม่สำคัญ) พื้นที่ที่เหลือของดิสก์คือหนึ่งบล็อกว่าง...
ความจำเป็น
ระบบไฟล์รุ่นแรกๆ บางระบบไม่สามารถแบ่งไฟล์ออกเป็นส่วนย่อยได้ ตัวอย่างเช่น ระบบไฟล์ Acorn DFS ที่ใช้ใน BBC Micro เนื่องจากไม่สามารถแบ่งไฟล์ออกเป็นส่วนย่อยได้ บางครั้งจึงปรากฏข้อความแสดงข้อผิดพลาดว่า " ไม่สามารถขยายได้"...