ทำไมตารางไอโหนดจึงไม่สามารถปรับขนาดได้


19

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

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

แต่ไม่มีใคร (ที่ฉันรู้) ทำสิ่งนี้จริง ๆ ดังนั้นอาจมีการจับที่ฉันหายไป มีความคิดอะไรที่อาจเป็น?


4
คุณเพิ่งสร้างใหม่ไฟล์ไดเรกทอรีหลักและดัชนีของไฟล์ -11 ใน VMS ซึ่งเป็นสารตั้งต้นของตารางไฟล์ต้นแบบใน NTFS
JdeBP

ฉันสร้างอัตลักษณ์ใหม่ให้กับ MFT ได้หรือไม่ เย็น!
ทำเครื่องหมาย VY

คำตอบ:


26

สมมติว่าคุณทำตาราง inode เป็นไฟล์ ดังนั้นคำถามต่อไปคือ ... คุณเก็บข้อมูลเกี่ยวกับไฟล์นั้นไว้ที่ไหน คุณต้องมี inodes "ของจริง" และ inodes "ที่ขยาย" เช่นตารางพาร์ติชัน MS-DOS ให้ไว้คุณจะต้องหนึ่ง (หรืออาจจะน้อย - เช่นเพื่อให้วารสารของคุณเป็นไฟล์) แต่จริงๆแล้วคุณมีกรณีพิเศษรหัสที่แตกต่างกัน ความเสียหายใด ๆ ที่เกิดขึ้นกับไฟล์นั้นก็จะเป็นหายนะเช่นกัน และพิจารณาว่าก่อนการทำบันทึกเป็นเรื่องปกติสำหรับไฟล์ที่กำลังเขียนเช่นเมื่อพลังงานดับลงอย่างหนัก การดำเนินงานไฟล์ของคุณจะต้องเป็นจำนวนมากที่แข็งแกร่งมากขึ้นเมื่อเทียบกับความล้มเหลวของอำนาจ / ผิดพลาด / ฯลฯ กว่าที่พวกเขาอยู่เช่น ext2

ระบบไฟล์ Unix แบบดั้งเดิมพบวิธีการแก้ปัญหาที่ง่ายขึ้น (และมีประสิทธิภาพมากขึ้น): ใส่ inode block (หรือกลุ่มของบล็อก) ทุกบล็อค X จากนั้นคุณจะพบพวกเขาด้วยเลขคณิตอย่างง่าย แน่นอนว่ามันเป็นไปไม่ได้ที่จะเพิ่มมากขึ้น (โดยไม่ต้องปรับโครงสร้างระบบไฟล์ทั้งหมด) และแม้ว่าคุณจะสูญเสียหรือเสียหายบล็อก inode ที่คุณเขียนถึงเมื่อพลังงานล้มเหลวนั่นเป็นเพียงการสูญเสีย inodes ไม่กี่ - ดีกว่าส่วนที่สำคัญของระบบไฟล์

การออกแบบที่ทันสมัยมากขึ้นใช้สิ่งที่ชอบB ต้นไม้สายพันธุ์ ระบบไฟล์ที่ทันสมัยเช่น btrfs, XFS และ ZFS ไม่ประสบกับข้อ จำกัด inode


2
เมื่อคุณพูดว่า "ไม่ต้องทนกับข้อ จำกัด ของไอโหนด" นั่นหมายความว่าไอโหนดใหม่จะถูกจัดสรรอย่างสมบูรณ์แบบเบื้องหลังหรือมีคนต้องการเรียกใช้คำสั่งเช่น "Expand-table-now-please"?
Mark VY

3
@MarkVY อยู่เบื้องหลังอย่างสมบูรณ์ (ถ้าใช้ inodes จริงๆเลย)
Derobert

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

ฉันจำ XFS และ btrfs ได้เป็นครั้งคราวซึ่งประสบกับความเสียหายของระบบไฟล์ที่ไม่รุนแรง - zfs ด้วยหรือไม่ ไม่ใช่ความเสี่ยงสำหรับบางคน แต่อาจเป็นความเสี่ยงสำหรับข้อมูลสำคัญและค่าใช้จ่ายในการจัดสรรแบบไดนามิก สำหรับ XFS ที่ร้านนี้ปัญหาที่เกิดจากข้อตกลงคือการไม่สามารถลดขนาดระบบไฟล์ได้อย่างสมบูรณ์
user2066657

Btrfs อาจไม่ได้รับจากข้อ จำกัด ของไอโหนด แต่มันเกิดจากความผิดพลาดที่แตกต่างกันอย่างสิ้นเชิงที่ทำให้เกิดอาการที่ทำให้เกิดความสับสนในทำนองเดียวกัน สิ่งนี้ไม่เพียง แต่ทำให้รายงานข้อผิดพลาดของดิสก์เต็มเมื่อdfรายงานพื้นที่ที่มีอยู่มากมาย แต่ก็ไม่สามารถแก้ไขได้ด้วยการลบไฟล์เพราะการลบไฟล์ต้องมีการจัดสรรพื้นที่เมทาดาทา
ทำเครื่องหมาย

17

ระบบไฟล์จำนวนมากมีตาราง inode ที่จัดสรรได้แบบไดนามิก (หรือเทียบเท่าทางศีลธรรม) (XFS, BTRFS, ZFS, VxFS ... )

Unix UFS ดั้งเดิมแม้ว่าจะมี inodes ที่ได้รับการแก้ไขในเวลาการสร้างระบบไฟล์และระบบไฟล์ที่ได้รับจากมัน (Linux EXT, Solaris UFS) มักจะดำเนินโครงการต่อไป มันแข็งแกร่งและง่ายต่อการใช้งาน กรณีการใช้งานหลายอย่างเหมาะสมดีการออกแบบระบบไฟล์ใหม่เพื่อหลีกเลี่ยงปัญหาเดียวนั้นไม่ใช่เรื่องง่ายที่จะพิสูจน์


ความก้าวหน้าอย่างมากในการคำนวณนั้นเกิดขึ้นจากการที่คนแก้ปัญหาที่ไม่ใช่เรื่องง่ายที่จะปรับแก้
user253751

2
แต่ยังมีความคืบหน้ามากในการแก้ปัญหาที่ไม่ง่ายต่อการแก้ไข :) ระบบไฟล์ "ซับซ้อน" รุ่นแรก - ยุค NT NTFS, reiserfs - มีวิธีการล้มเหลวอย่างรุนแรงเมื่อพวกเขาล้มเหลว ....
rackandboneman

6

มีระบบไฟล์ที่จัดสรร inodes แบบไดนามิก: ปิดส่วนหัวของฉันอย่างน้อย Veritas VxFS (= ระบบไฟล์เริ่มต้นของ HP-UX และหนึ่งในตัวเลือกที่มีอยู่บน Solaris) และ XFS (ประเภทระบบไฟล์มาตรฐานบน RHEL 7) ทางนั้น. Btrfs และ JFS ของ IBM ด้วย

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