ฉันแน่ใจว่าไฟล์ไดเรกทอรีมีข้อมูลน้อยกว่า 4096 ไบต์ ฉันรู้ว่าขนาดเซกเตอร์คือ 4096 ไบต์ แต่ไฟล์ปกติมีขนาดเล็กกว่านั้น
ทำไม Unix สำรอง 4096 bytes สำหรับแต่ละโฟลเดอร์?
ฉันแน่ใจว่าไฟล์ไดเรกทอรีมีข้อมูลน้อยกว่า 4096 ไบต์ ฉันรู้ว่าขนาดเซกเตอร์คือ 4096 ไบต์ แต่ไฟล์ปกติมีขนาดเล็กกว่านั้น
ทำไม Unix สำรอง 4096 bytes สำหรับแต่ละโฟลเดอร์?
คำตอบ:
เป็นขนาดเริ่มต้นที่จำเป็นในการจัดเก็บข้อมูลเมตาเกี่ยวกับไฟล์ที่มีอยู่ในไดเรกทอรีนั้น การจัดสรรเริ่มต้นเท่ากับขนาดของภาคหนึ่ง แต่สามารถเติบโตได้มากกว่านั้นหากจำเป็น เมื่อจัดสรรแล้วพื้นที่จะไม่ถูกทำให้ว่างหากไฟล์ถูกลบเพื่อลดการแตกแฟรกเมนต์
ตัวอย่างเช่น:
$ mkdir testdir
$ cd testdir
$ ls -ld .
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:28 ./
$ for ((i=0; i<1000; i++)); do touch some_longish_file_name_$i; done
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ rm some_longish_file_name_*
$ ls -ld .
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 ./
$ cd ..
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 36864 2007-12-03 20:29 testdir/
$ rmdir testdir ; mkdir testdir
$ ls -ld testdir
drwxr-xr-x 2 matthew matthew 4096 2007-12-03 20:29 testdir/
บางครั้ง 4096 ไบต์เป็นหน่วยการจัดสรรที่เล็กที่สุดสำหรับระบบไฟล์บางระบบ นั่นเป็นสาเหตุที่ไดเรกทอรีมี 4096
สิ่งเดียวกันนำไปใช้กับไฟล์ แม้ว่าไฟล์บางไฟล์อาจรายงานน้อยกว่า 4096 แต่พวกเขากำลังใช้พื้นที่จัดเก็บอย่างน้อย 4096 จากดิสก์
4096 ถูกสงวนไว้เพื่อลดการแตกแฟรกเมนต์เนื่องจากบ่อยครั้งที่ขนาดจริงของข้อมูลเมตาที่มีอยู่จะผันผวนตามเนื้อหาไดเรกทอรี หากมีการเติบโตและหดตัวอย่างต่อเนื่อง (กล่าวว่ามีไฟล์บันทึกหรือเนื้อหาแบบไดนามิก) เมื่อเวลาผ่านไปอาจส่งผลกระทบต่อประสิทธิภาพการทำงาน สิ่งนี้อาจไม่เกิดขึ้นกับโฟลเดอร์เดียว แต่ในทั้งระบบไฟล์มันจะเพิ่มขึ้นอย่างรวดเร็ว
มันขึ้นอยู่กับระบบไฟล์ บน ext2 / 3/4 it "คือ" 4096. ใน reiserfs มันสามารถเป็น 9608 (ของฉัน$HOME
) 1032 ( /tmp
) หรือ 48 (บาง dir ใน/tmp
)
โดยค่าเริ่มต้นใน ext2 / 3/4 บล็อกคือ 4096 - และไฟล์ต้องไม่น้อยกว่านั้น หากไฟล์มีขนาดเล็กกว่าจะใช้ทั้งบล็อกต่อไป เนื่องจากมันไม่มีประโยชน์ที่จะถามเกี่ยวกับขนาดโลจิคัลของไดเรกทอรีและข้อมูลนี้อาจไม่ได้อยู่บนดิสก์อยู่แล้วและต้องรายงานสิ่งที่มันรายงานขนาดบล็อกครั้งจำนวนบล็อกที่ใช้เช่นพื้นที่ทางกายภาพที่ได้รับ
actual
ขนาดของไฟล์
\0
ตัวอักษรในไฟล์ไบนารี่ PS เป็นไปได้ที่จะสร้าง FS ที่ไม่ได้เก็บไว้ - แต่ก็ไม่ขยายไปถึง familly (และอาจไม่เป็นที่นิยมอื่น ๆ )