ไดเรกทอรีที่ว่างที่ว่างใช้เวลาเท่าไหร่?
ในระบบไฟล์ Windows และ NTFS มันบอกว่า '0 ไบต์' ซึ่งเป็นไปไม่ได้
ไดเรกทอรีมีจำนวนเท่าใด มันขึ้นอยู่กับระบบไฟล์หรือระบบปฏิบัติการหรือไม่?
ไดเรกทอรีที่ว่างที่ว่างใช้เวลาเท่าไหร่?
ในระบบไฟล์ Windows และ NTFS มันบอกว่า '0 ไบต์' ซึ่งเป็นไปไม่ได้
ไดเรกทอรีมีจำนวนเท่าใด มันขึ้นอยู่กับระบบไฟล์หรือระบบปฏิบัติการหรือไม่?
คำตอบ:
ในทางเทคนิคสิ่งที่หน้าต่างคุณสมบัติกำลังแสดงให้คุณเห็นคือเนื้อหาของโฟลเดอร์นั้นถ้าว่างเปล่ามีขนาด 0 ไบต์บนดิสก์ใด ๆ
คำถามของคุณเกี่ยวกับพื้นที่ของโครงสร้างโฟลเดอร์ที่ใช้ระบบไฟล์ซึ่งขึ้นอยู่กับว่าชัดเจน ใน FAT32 สิ่งเดียวที่คุณต้องเก็บคือธง (ซ่อนเก็บถาวร) และชื่อและเส้นทาง ใน NTFS คุณต้องจัดเก็บสิทธิ์และสิ่งอื่น ๆ อีกมากมาย สรุปแล้วพื้นที่นั้นอยู่ใกล้เล็กน้อย
พื้นที่ที่โครงสร้างไดเรกทอรีว่างนั้นขึ้นอยู่กับชื่อและเส้นทางโฟลเดอร์ ตัวอย่างเช่นสมมติว่าคุณวางโฟลเดอร์ทั้งหมดบนไดรฟ์ราก (เช่น C :) และใช้อักขระ 26 ตัวทั้งหมด ด้วยชื่อที่ไม่ซ้ำกัน 1 พันล้านชื่อคุณสามารถมี log_26 (1.000.000.000) = ชื่อโฟลเดอร์ความยาวอักขระประมาณ 7 (6.3065) ตัว ดังนั้น 7 ไบต์ * 1.000.000.000 เท่ากับพื้นที่ 7GB โดยประมาณ
นี่เป็นขั้นต่ำตามจำนวนชื่อพื้นที่เท่านั้นที่จะต้องใช้ในโครงสร้างใด ๆ ระบบจะจัดเก็บข้อมูลเพิ่มเติมนอกเหนือจากชื่อไฟล์ในโครงสร้างไฟล์
ฉันคิดว่าฉันมีโฟลเดอร์และไฟล์ประมาณ 1 ล้านไฟล์ในไดรฟ์ทั้งหมดของฉันดังนั้นค่าจึงไม่ถึงกับเป็นจริง อย่าลืมว่านี่เป็นค่าประมาณคร่าวๆ
ระบบไฟล์ที่ใช้มากที่สุดในเวลาปัจจุบันสามารถพิจารณา (arguably) เป็น FAT (ตารางการจัดสรรไฟล์) และ NTFS (ระบบไฟล์เทคโนโลยีใหม่) FATอย่างที่เราทราบกันดีว่ามีการใช้งานมาตั้งแต่ปี 1996 เมื่อ Windows 95 เปิดตัวด้วย FAT32 แม้ว่าจะถูกแทนที่ด้วยระบบไฟล์อื่น ๆ ที่มีความยืดหยุ่นมากกว่าเช่น NFTS (Windows), HFS + (OSX) หรือ ext3 (Linux) แต่ก็ยังคงใช้กันอย่างแพร่หลายในอุปกรณ์พกพาหรือในการ์ดหน่วยความจำหรือแฟลชไดรฟ์ และเหนือสิ่งอื่นใดมันง่าย
ตอนนี้สำหรับสิ่งที่สำคัญ ไฟล์และไดเรกทอรีในพาร์ติชัน FAT แม้ว่าพวกเขาจะมีอะไรในพวกเขามีชื่อที่เป็นที่ตั้งของคุณลักษณะบางอย่างเป็นต้นว่าจะถูกเก็บไว้ในเขตที่เรียกว่าตารางไดเรกทอรี
ตารางไดเรกทอรีเป็นแฟ้มพิเศษ (คือมันถูกซ่อนจากการใช้งานปกติเช่นว่ามีเพียงระบบปฏิบัติการและการใช้งานบางอย่างที่สามารถเข้าถึงได้โดยตรงมัน) มันหมายถึงไดเรกทอรี (aka โฟลเดอร์) และไฟล์หรือโฟลเดอร์ใด ๆ ที่เก็บไว้ภายในนั้นมีรายการ 32 ไบต์ในตาราง เนื่องจากตารางไดเรกทอรีเป็นไฟล์จากนั้นจะมีหนึ่งหรือมากกว่าหนึ่งคลัสเตอร์ (เช่นกล่องที่มีขนาดที่กำหนดไว้ล่วงหน้าภายในดิสก์โดยที่มีเพียงไฟล์เดียว (หรือส่วนหนึ่งของหนึ่ง) ที่เหมาะสม)
ดังนั้นโฟลเดอร์หรือไดเรกทอรีบนไดรฟ์ที่ทันสมัย (> 512 MB) มีอย่างน้อยค่าใช้จ่ายของ 4 กิโลเพื่อให้เป็นไปเก็บโต๊ะ(ต้นฉบับ) อย่างไรก็ตามนี่หมายความว่าคุณสามารถจัดเก็บไฟล์ได้ 128 ไฟล์ (4 * 1024 B / 32 B = 128) ในโฟลเดอร์เดียวกันและค่าใช้จ่ายในการจัดเก็บระเบียนยังคงเป็น 4KB เหมือนเดิม
Piggybacking ในตัวอย่างแรกนี่หมายความว่าพันล้านโฟลเดอร์จะมีค่าใช้จ่าย 32 GB แทนที่จะเป็นประมาณ 7 GB โดยประมาณที่ฉันคำนวณ ที่เก็บ 32 GB เหล่านี้ไม่เพียง แต่ชื่อแบบสั้น (8 ตัวอักษร ASCII) เท่านั้น แต่ยังมีคุณสมบัติ, แฟล็ก, การเข้าถึง, การสร้างและวันที่แก้ไขและคุณสมบัติดั้งเดิมอื่น ๆ
สมมติว่าคุณอ่านทั้งหมดนี้อาจมีคำถามที่คุณอาจมี: "ทั้งหมดนี้เป็นชื่อที่ดีและดี แต่ชื่อยาวเช่นWabbajackหรือชื่อ hashy เช่นe4d909c290d0fb1ca068ffaddf22cbd0 , เก็บไว้ที่ใด"
Microsoft ใน Windows 95 ตัดสินใจที่จะเพิ่มคุณลักษณะนั้นเพื่อปรับปรุงประสบการณ์ผู้ใช้ เพื่อหลีกเลี่ยงการทำลายระบบ "ใกล้มาตรฐาน" พวกเขาใช้วิธีการแก้ไขที่เรียบร้อยเรียกว่า VFAT (Virtual FAT) เป็นหลักเพื่อให้พอดีกับชื่อไฟล์ยาวลงในไฟล์บันทึกเพิ่มเติมถูกเขียนก่อนที่จะบันทึกไฟล์จริง (ด้วยคุณสมบัติพิเศษบางอย่างที่ระบบก่อนหน้านี้ไม่สามารถมองเห็นได้) ระบบชื่อไฟล์ยาวจะช่วยให้มีความยาวสูงสุด 16 ตัวอักษร UTF 255 (Unicode) (ที่มา) (ที่มา)
หากคุณต้องเปลี่ยนตัวอย่างแรกเช่นว่าทุกโฟลเดอร์มี 9 ตัวอักษรค่าโสหุ้ยจะเพิ่มเป็นสองเท่าจาก 32 GB เป็น 64 GB เนื่องจากต้องมีการเขียนอีกหนึ่งเร็กคอร์ดเพื่อเก็บชื่อแบบยาว
ตามบทความWikipediaเกี่ยวกับ NTFS การอนุญาตทั้งหมดจะถูกเก็บไว้ในตาราง File Master พื้นที่มันสามารถมองเห็นได้ชัดผ่าน Disk Defragmenter ดังแสดงในที่นี่
ขนาดของเรคคอร์ด MFT ตรงจากทั้งโฟลเดอร์หรือไฟล์อธิบายไว้ที่นี่ :
เร็กคอร์ดไฟล์และโฟลเดอร์แต่ละไฟล์มีขนาด 1 KBและถูกเก็บไว้ใน MFT ซึ่งแอ็ตทริบิวต์จะถูกเขียนไปยังพื้นที่ที่จัดสรรใน MFT นอกเหนือจากคุณสมบัติของไฟล์แต่ละเรคคอร์ดไฟล์จะมีข้อมูลเกี่ยวกับตำแหน่งของเรคคอร์ดไฟล์ใน MFT
เมื่อแอ็ตทริบิวต์ของไฟล์สามารถพอดีกับเรคคอร์ดไฟล์ MFT สำหรับไฟล์นั้นพวกมันจะเรียกว่าแอททริบิวต์ที่มีอยู่ คุณสมบัติเช่นชื่อไฟล์และการประทับเวลาจะมีถิ่นที่อยู่เสมอ เมื่อจำนวนข้อมูลสำหรับไฟล์ไม่พอดีกับเรคคอร์ดไฟล์ MFT แอ็ตทริบิวต์ของไฟล์บางอย่างจะไม่ปรากฏ แอตทริบิวต์ของสถาบันการเงินต่างประเทศได้รับการจัดสรรหนึ่งหรือมากกว่ากลุ่มของพื้นที่ดิสก์ ส่วนของคุณลักษณะที่ไม่ใช่สถาบันการเงินยังคงอยู่ใน MFT และชี้ไปที่กลุ่มภายนอก NTFS สร้างแอตทริบิวต์รายการแอตทริบิวต์เพื่ออธิบายตำแหน่งที่ตั้งของระเบียนแอตทริบิวต์ทั้งหมด ตารางประเภทแอตทริบิวต์ไฟล์ NTFS แสดงรายการแอตทริบิวต์ไฟล์ที่กำหนดโดย NTFS ในปัจจุบัน
ดังนั้นใน NTFS โฟลเดอร์จะใช้พื้นที่อย่างน้อย 1 KB ยกเว้นว่าพวกเขามีรายการอาร์กิวเมนต์และสิทธิ์ที่ยาวมาก ณ จุดนั้นเรคคอร์ด MFT จะใช้คลัสเตอร์เพิ่มเติมในพาร์ติชันซึ่งขนาดนั้นขึ้นอยู่กับวิธีการจัดรูปแบบแม้ว่าจะมีมากกว่า 2GB Microsoft ในโพสต์นั้นแนะนำ 4KB clusters
สำหรับตัวอย่างโลกแห่งความจริงฉันเพิ่งบันทึกพื้นที่ว่างของฉันจากนั้นฉันสร้างโครงสร้างไดเรกทอรีขนาดใหญ่และลบฟรีใหม่เพื่อค้นหาว่ามีการใช้พื้นที่เท่าใด ฉันสร้างไดเรกทอรี 0-6 สำหรับแต่ละวันของสัปดาห์จากนั้นภายในไดเรกทอรี 0-23 สำหรับชั่วโมงของวันนั้นแล้ว 0-59 สำหรับนาทีของชั่วโมง รวม 10,080 ไดเรกทอรี การใช้งานดิสก์ของฉันเปลี่ยนไป 6,926,336 ไบต์ ใช้งานได้ถึง 687 ไบต์ต่อไดเรกทอรี ในกรณีที่คุณสนใจนั่นก็เท่ากับ 0.0006% ของไดรฟ์ 1TB (ถ้าคุณคำนวณ 1TB เป็น 1024 ^ 4)
ใน Windows 10 ฉันสร้างโฟลเดอร์ว่าง 1,000,000 โฟลเดอร์และตามgetsize
ฟังก์ชั่นของ python มันใช้พื้นที่มากถึง 200540160 ไบต์ นั่นคือค่าเฉลี่ย 200.54016 ไบต์ต่อโฟลเดอร์