ขนาดของไดเรกทอรีหมายถึงอะไรในเอาท์พุทของ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 entriesin 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 ไม่สามารถจัดสรรใหม่ได้โดยไม่ต้องลบไดเรกทอรี
ไดเรกทอรีเป็นเพียงไดเรกทอรีเช่นสมุดโทรศัพท์ มันเป็นเพียงไฟล์ที่มีรายการตัวเลขและชื่อถัดจากพวกเขา แต่ละหมายเลขอ้างอิงไฟล์ในระบบไฟล์ (หมายเลขไอโหนด) และชื่อคือชื่อไฟล์
คุณต้องการพื้นที่ดิสก์ในการบันทึกข้อมูลวิธีการจัดสรรและพัฒนาและหดตัวขึ้นอยู่กับระบบไฟล์