ขนาดของไดเรกทอรีหมายถึงอะไรในเอาท์พุทของls -l
คำสั่ง?
ขนาดของไดเรกทอรีหมายถึงอะไรในเอาท์พุทของls -l
คำสั่ง?
คำตอบ:
นี่คือขนาดของพื้นที่บนดิสก์ที่ใช้เพื่อเก็บข้อมูลเมตาสำหรับไดเรกทอรี (เช่นตารางของไฟล์ที่เป็นของไดเรกทอรีนี้) หากเป็นเช่น 1024 หมายความว่ามีการใช้ 1024 ไบต์บนดิสก์ (จะจัดสรรบล็อกเต็มเสมอ) เพื่อวัตถุประสงค์นี้
"ขนาดของไดเรกทอรี" พิมพ์ด้วยls -l
คือ (เช่นเดียวกับไฟล์ประเภทใด ๆ ) ค่าที่รายงานโดยการโทรในstat()
statbuf.st_size
สิ่งนี้st_size
หมายความว่าสำหรับไดเรกทอรีสมบูรณ์ขึ้นอยู่กับประเภทของระบบไฟล์ st_size
เว้นแต่คุณจะทราบชนิดของระบบแฟ้มและเข้าใจแนวคิดของมันคุณจะไม่สามารถได้ข้อสรุปอะไรจากค่าใน
ในระบบไฟล์ UNIX ที่มีประวัติในปัจจุบันมักจะตั้งชื่อv7-fs
ไดเรกทอรีถูกทำซ้ำ 16 รายการไบต์ที่มีหมายเลข inode 16 บิตและชื่อไฟล์ 14 ไบต์ "ขนาด" ของไดเรกทอรีมีความหมายเมื่อเทียบกับการread(2)
ดำเนินการและเติบโตหรืออยู่ในสภาพที่เป็นอยู่เสมอ .
และ..
รายการที่ถูกสร้างขึ้นโดยตนเองยากเชื่อมโยงพวกเขากับปัจจุบันและไดเรกทอรีระดับดังกล่าวข้างต้น ลิงก์นับสำหรับไดเรกทอรีหญิงสาวที่มีสติว่างคือ 2
ในระบบไฟล์ BSD-4.2 ที่เรียกว่าตั้งแต่ปี 1989 (SVr4) ufs
ไดเร็กทอรีคือชุดของเร็กคอร์ดความยาวผันแปรที่ใช้รูปแบบที่ไม่ได้รับอนุญาตให้มีความเสถียรดังนั้นคำสั่งพื้นที่ผู้ใช้จะไม่ได้รับอนุญาตให้อ่านรูปแบบนี้ รายงาน "ขนาด" มีขนาดเป็นไบต์เช่นเดียวกับใน v7-fs ขนาดมักจะโตขึ้นหรือคงอยู่ แต่ระบบไฟล์เวอร์ชันที่ใหม่กว่าอาจหดขนาดภายใต้เงื่อนไขบางประการ - แต่ไม่เสมอไปเมื่อคุณคาดหวังสิ่งนี้ นับลิงค์ที่รายงานสำหรับ directory ว่างคือ 2 v7-fs
เช่นเดียวกับ
ในWOFS
ระบบไฟล์ที่ฉันออกแบบและดำเนินการในช่วงฤดูร้อนปี 1988 ถึงเดือนพฤษภาคม 2534 ไดเรกทอรีต่างๆจะรายงาน "ขนาด" 0 และไม่เคยมีเนื้อหาประเภทใดประเภทหนึ่งที่สามารถอ่านได้โดยใช้การread(2)
โทร นี่เป็นเพราะWOFS
เป็นระบบไฟล์ Copy-on-Write ระบบแรกและเนื่องจากในWOFS
ไฟล์รายงานไดเรกทอรีที่อยู่ในนั้นแทนที่จะอยู่ในรายการในไดเรกทอรี ถ้าคุณอ่านWOFS
ไดเรกทอรีใช้readdir()
คุณจะได้รับข้อมูลสำหรับรายการที่ตั้งใจไว้ แต่ไม่เคยและ.
..
จำนวนลิงก์ของไดเร็กทอรีว่างบนWOFS
คือ 1 และพฤติกรรมทั้งหมดสอดคล้องกับ POSIX อย่างสมบูรณ์
ในZFS
ที่ถูกนำมาใช้หลังจากอ่านWOFS
เอกสาร เป็นระบบแฟ้มสำเนาเมื่อเขียนและผู้เขียนไม่ปฏิเสธว่าพวกเขาคัดลอกแนวคิดจากZFS
WOFS
ไดเร็กทอรีบน ZFS รายงานnumber of directory entries
in st_size
ดังนั้น "ขนาด" ที่รายงานจึงไม่มีความหมายที่แท้จริงเกี่ยวกับพื้นที่ว่างบนดิสก์จากข้อมูลไดเรกทอรี ไม่มี.
และ..
รายการในไดเร็กทอรี ZFS แต่ถ้าคุณโทรreaddir()
รายการเหล่านี้จะปลอมและส่งคืนสำหรับการดำเนินการสองครั้งแรก ZFS เป็น FS เดียวในรายการที่ไม่สนับสนุนไดเรกทอรีฮาร์ดไดรฟ์ แต่จำนวนลิงก์ที่รายงานสำหรับไดเรกทอรีอยู่เสมอ 2 ความผิดปกติทั้งสองนี้ใน ZFS ถูกนำมาใช้เพื่อลดความสับสนในโปรแกรมที่ไม่ใช่ POSIX
คล้ายกับ ZFS, WAFL บางฉบับ WOFS
แต่ไม่คิดทั้งหมดจาก Netapp WAFL
ถูกเขียนเมื่อ 3 ปีหลังจากที่WOFS
ตีพิมพ์บทความ WAFL เป็น copy-on-write แต่ดูเหมือนว่า WAFL จะรายงานค่า "ขนาด" ที่อาจเป็น "ขนาดไดเรกทอรีจริง" ภายใต้สมมติฐานที่ว่าไดเรกทอรีมีเนื้อหา
ไดเรกทอรีขอสงวน 4096 ไบต์ (อย่างน้อย) สำหรับ meta-data เกี่ยวกับตัวเองและเนื้อหา
นอกจากนี้ 4096 ไบต์เป็นหน่วยการจัดสรรเริ่มต้น (บล็อก) สำหรับระบบไฟล์ ext2 / ext3 / ext4 และดังนั้นไดเรกทอรีจะไม่สามารถมีขนาดเล็กลงได้
ในระบบไฟล์ที่แตกต่างกันคุณอาจพบไดเรกทอรีที่มีขนาดเริ่มต้นแตกต่างกันเนื่องจากขนาดบล็อกเริ่มต้นของระบบไฟล์
ขนาดไดเรกทอรียังสามารถเติบโตแบบไดนามิกตามที่ได้รับการเติม แต่เมื่อเติมเต็มพื้นที่ที่สงวนไว้สำหรับ meta-data ไม่สามารถจัดสรรใหม่ได้โดยไม่ต้องลบไดเรกทอรี
ไดเรกทอรีเป็นเพียงไดเรกทอรีเช่นสมุดโทรศัพท์ มันเป็นเพียงไฟล์ที่มีรายการตัวเลขและชื่อถัดจากพวกเขา แต่ละหมายเลขอ้างอิงไฟล์ในระบบไฟล์ (หมายเลขไอโหนด) และชื่อคือชื่อไฟล์
คุณต้องการพื้นที่ดิสก์ในการบันทึกข้อมูลวิธีการจัดสรรและพัฒนาและหดตัวขึ้นอยู่กับระบบไฟล์