กำหนดขนาดไดเรกทอรีอะไร


10

ฉันรู้ว่าขนาดของไดเรกทอรีนั้นแตกต่างจากขนาดของไฟล์ในนั้น

ฉันคิดว่าไดเรกทอรีเป็นรายการของไดเรกทอรีและไฟล์ภายในดังนั้นขนาดของไดเรกทอรีควรจะเกี่ยวข้องกับจำนวนไฟล์ / ไดเรกทอรีภายในอย่างน้อย 4096 ไบต์เนื่องจากข้อ จำกัด ขนาดบล็อก

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


1
สำหรับการอ่านเพิ่มเติมนี้เป็นข้อมูลค่อนข้างมาก: askubuntu.com/a/404716/380067
kos

3
มันไม่ได้เป็นเพียงเกี่ยวกับจำนวนรายการในไดเรกทอรี แต่ยังเกี่ยวกับความยาวของชื่อ
kasperd

คำตอบ:


13

ระบบไฟล์ที่ใช้และจำนวนสูงสุดของเอนทิตีในไดเรกทอรีนั้น ณ เวลาใด ๆ กำหนดขนาด เมื่อขนาดเริ่มต้นที่จองไว้สำหรับไดเรกทอรีหมดลงจะมีการจัดสรรพื้นที่เพิ่มเติมสำหรับไดเรกทอรี อย่างไรก็ตามเมื่อจำนวนเอนทิตีลดลงพื้นที่ที่จัดสรรไม่ได้ถูกทำให้เป็นอิสระโดยอัตโนมัติ ดังนั้นหากถึงจุดหนึ่งไดเรกทอรีมี 10 ล้านหน่วยงานมันจะยังคงขนาดเดียวกันถ้าลบ 9,999,999 ของพวกเขา นำไปสู่สถานการณ์ที่น่าสนใจนี้ชอบอยู่ในนี้ Unix และ Linux โพสต์

$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072

นี่ไม่จำเป็นต้องมีไว้สำหรับระบบไฟล์อื่น ๆ ext{2,3,4}filesystems ได้รับผลกระทบ NTFS นั้นมีขอบเขตน้อยกว่า tmpfsและ btrfs ไม่ใช่ ZFS ค่อนข้างอนุรักษ์นิยมฉันได้รับผลลัพธ์จากคำสั่ง2ที่สองstat

ที่เกี่ยวข้อง:


ที่ดี! ฉันยังคงสงสัยว่าจะเป็นอย่างไร
kos

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