ไดเรกทอรีมีพื้นที่ใช้งานเท่าใด


13

ไดเรกทอรีที่ว่างที่ว่างใช้เวลาเท่าไหร่?

ในระบบไฟล์ Windows และ NTFS มันบอกว่า '0 ไบต์' ซึ่งเป็นไปไม่ได้

ไดเรกทอรีมีจำนวนเท่าใด มันขึ้นอยู่กับระบบไฟล์หรือระบบปฏิบัติการหรือไม่?


1
ในทางเทคนิคสิ่งที่หน้าต่างคุณสมบัติกำลังแสดงให้คุณเห็นคือเนื้อหาของโฟลเดอร์นั้นถ้าว่างเปล่ามีขนาด 0 ไบต์บนดิสก์ใด ๆ คำถามของคุณเกี่ยวกับพื้นที่ของโครงสร้างโฟลเดอร์ที่ใช้ระบบไฟล์ เห็นได้ชัดว่ามันขึ้นอยู่กับระบบไฟล์ ใน FAT32 สิ่งเดียวที่คุณต้องเก็บคือธง (ซ่อนเก็บถาวร) และชื่อและเส้นทาง ใน NTFS คุณต้องจัดเก็บสิทธิ์และสิ่งอื่น ๆ อีกมากมาย สรุปแล้วพื้นที่นั้นอยู่ใกล้เล็กน้อย
Doktoro Reichard

ดังนั้นใน NTFS ไดเรคทอรี่ว่างจะใช้พื้นที่เท่าใด เช่นถ้าฉันสร้างรายได้ 1 พันล้านไดเรกทอรีจะต้องใช้พื้นที่เท่าใด
ShadowHero

อย่างที่ฉันพูดขึ้นอยู่กับชื่อและเส้นทางโฟลเดอร์ สมมติว่าคุณใช้อักขระทั้งหมด 26 ตัวโดยมีชื่อเฉพาะ 1 พันล้านชื่อคุณสามารถมีชื่อโฟลเดอร์ยาวประมาณ 7 ตัว ดังนั้น 7 ไบต์ * 1.000.000.000 เท่ากับพื้นที่ 7GB โดยประมาณ นี่เป็นขั้นต่ำฉันคิดว่า ฉันคิดว่าฉันมีโฟลเดอร์ประมาณ 1 ล้านโฟลเดอร์ในไดรฟ์ทั้งหมดของฉันดังนั้นค่าจึงไม่ถึงกับเป็นจริง อย่าลืมว่านี่เป็นค่าประมาณคร่าวๆ
Doktoro Reichard

เยี่ยมมากฉันเห็น ... การอนุญาตจัดเก็บอย่างไร
ShadowHero

1
@AthomSfere อืม ... ซึ่งหมายความว่าโฟลเดอร์ไม่สามารถจัดเก็บสิทธิ์ของผู้ใช้ที่ไม่มีที่สิ้นสุดเว้นแต่จะสามารถกำหนดเรคคอร์ด MFT ได้หลายรายการ จะพยายามค้นหามัน
Doktoro Reichard

คำตอบ:


16

ในทางเทคนิคสิ่งที่หน้าต่างคุณสมบัติกำลังแสดงให้คุณเห็นคือเนื้อหาของโฟลเดอร์นั้นถ้าว่างเปล่ามีขนาด 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


1
ฉันพบข้อมูลบางส่วนเกี่ยวกับความยาว 1024 ไบต์ที่ฉันกล่าวถึงก่อนหน้านี้c-ad.bnl.gov/kinyip/windows/MFT.htmlเป็นการอ่านที่ดีมากและอาจเป็นประโยชน์ต่อคำตอบของคุณหากคุณต้องการขยาย
Austin T French

ฉันต้องการขยาย (เพื่อทำให้คำตอบนี้สมบูรณ์ยิ่งขึ้นโดยไม่ต้องใช้เทคนิคเกินไป ... ) แม้ว่าฉันจะต้องออกจากสิ่งนี้ในวันพรุ่งนี้ ขอบคุณสำหรับแหล่งที่มาต่อไป
Doktoro Reichard

การแก้ไขทางเทคนิค: ไม่มีขีด จำกัด ของพา ธ 255 แต่มีขีด จำกัด MAX_PATH 260 ตัวอักษรสำหรับเส้นทางมาตรฐานแล้วมีเส้นทางที่ขยายความยาวของตัวละคร 32,767 (ใช่กว่า 32 พันตัวอักษร) สำหรับเส้นทาง Unicode จริง (โดยใช้ `\\?` ตัวบ่งชี้ว่าจะเป็น เส้นทางแบบขยายความยาวธรรมดาหรือเป็นเส้นทาง UNC) ดูdocs.microsoft.com/en-us/windows/win32/fileio/…สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้
Kamermans ของไมค์ 'Pomax'

3

สำหรับตัวอย่างโลกแห่งความจริงฉันเพิ่งบันทึกพื้นที่ว่างของฉันจากนั้นฉันสร้างโครงสร้างไดเรกทอรีขนาดใหญ่และลบฟรีใหม่เพื่อค้นหาว่ามีการใช้พื้นที่เท่าใด ฉันสร้างไดเรกทอรี 0-6 สำหรับแต่ละวันของสัปดาห์จากนั้นภายในไดเรกทอรี 0-23 สำหรับชั่วโมงของวันนั้นแล้ว 0-59 สำหรับนาทีของชั่วโมง รวม 10,080 ไดเรกทอรี การใช้งานดิสก์ของฉันเปลี่ยนไป 6,926,336 ไบต์ ใช้งานได้ถึง 687 ไบต์ต่อไดเรกทอรี ในกรณีที่คุณสนใจนั่นก็เท่ากับ 0.0006% ของไดรฟ์ 1TB (ถ้าคุณคำนวณ 1TB เป็น 1024 ^ 4)


3
คุณสามารถเพิ่มระบบไฟล์ลงในคำตอบของคุณได้หรือไม่? ชื่อไดเรกทอรีสั้นทั้งหมดหรือไม่
fixer1234

0

ใน Windows 10 ฉันสร้างโฟลเดอร์ว่าง 1,000,000 โฟลเดอร์และตามgetsizeฟังก์ชั่นของ python มันใช้พื้นที่มากถึง 200540160 ไบต์ นั่นคือค่าเฉลี่ย 200.54016 ไบต์ต่อโฟลเดอร์

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