เหตุใดจึงมีความแตกต่างอย่างมากระหว่าง 'ขนาด' และ 'ขนาดบนดิสก์'
ส่วนใหญ่ค่าสำหรับ 'ขนาด' และ 'ขนาดบนดิสก์' จะใกล้เคียงกับการจับคู่เมื่อตรวจสอบขนาดของโฟลเดอร์หรือไฟล์ แต่จะเกิดอะไรขึ้นถ้าทั้งสองมีความแตกต่างกันอย่างมาก ประกาศถามตอบ SuperUser ของวันนี้จะดูคำตอบของปัญหาที่ทำให้สับสนนี้.
เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.
คำถาม
thelastblack ผู้อ่าน SuperUser ต้องการทราบว่าเหตุใดจึงมีความแตกต่างอย่างมากระหว่าง 'ขนาด' และ 'ขนาดบนดิสก์' สำหรับโฟลเดอร์ในการ์ด SD ในโทรศัพท์ของเขา:
ดังที่คุณเห็นด้านล่างมีความแตกต่างอย่างมากระหว่างฟิลด์ 'ขนาด' และ 'ขนาดบนดิสก์' สำหรับโฟลเดอร์นี้ ทำไมเป็นอย่างนั้น?
ฉันรู้ว่า 'ขนาดบนดิสก์' ควรมากกว่า 'ขนาด' เล็กน้อยเนื่องจากหน่วยการจัดสรรใน Windows แต่ทำไมถึงมีความแตกต่างกันมาก อาจเป็นเพราะไฟล์มีจำนวนมาก?
BTW โฟลเดอร์นี้อยู่ในการ์ด SD ของโทรศัพท์ Android ของฉัน ภายในแอพนี้แผนที่ของฉันเก็บแผนที่ที่แคชไว้และแอพจะรับแผนที่จาก Google Maps.
ดูภาพหน้าจอมีความแตกต่างอย่างมากระหว่าง 'ขนาด' และ 'ขนาดบนดิสก์' ดังนั้นสิ่งที่เกิดขึ้นที่นี่เพื่อทำให้เกิดสิ่งนี้?
คำตอบ
Bob ผู้สนับสนุน SuperUser มีคำตอบสำหรับเรา:
ฉันจะสมมติว่าคุณกำลังใช้ระบบไฟล์ FAT / FAT32 ที่นี่เนื่องจากคุณพูดถึงว่านี่เป็นการ์ด SD NTFS และ exFAT ทำตัวคล้ายกับหน่วยการจัดสรร ระบบไฟล์อื่นอาจแตกต่างกัน แต่ระบบ Windows ไม่รองรับ.
หากคุณมีไฟล์ขนาดเล็กจำนวนมากเป็นไปได้อย่างแน่นอน พิจารณาสิ่งนี้:
- 50,000 ไฟล์
- ขนาดคลัสเตอร์ 32 KB (หน่วยการจัดสรร) ซึ่งเป็นค่าสูงสุดสำหรับ FAT32
ตกลงตอนนี้ ขั้นต่ำ พื้นที่ที่ใช้คือ 50,000 * 32,000 = 1.6 GB (ใช้ส่วนนำหน้า SI ไม่ใช่ไบนารีเพื่อทำให้คณิตศาสตร์ง่ายขึ้น) พื้นที่ที่แต่ละไฟล์ใช้บนดิสก์นั้นมีขนาดหน่วยการจัดสรรหลายเท่าเสมอและที่นี่เราสมมติว่าแต่ละไฟล์นั้นมีขนาดเล็กพอที่จะใส่ในหน่วยเดียวโดยมีพื้นที่เหลือ (เปล่า) เหลืออยู่.
หากไฟล์แต่ละไฟล์มีค่าเฉลี่ย 2 KB คุณจะได้รับผลรวมประมาณ 100 MB แต่โดยเฉลี่ยคุณจะสูญเสีย 15x (30 KB ต่อไฟล์) โดยเฉลี่ยเนื่องจากขนาดหน่วยการจัดสรร.
คำอธิบายเชิงลึก
ทำไมสิ่งนี้ถึงเกิดขึ้น ระบบไฟล์ FAT32 จำเป็นต้องติดตามตำแหน่งที่เก็บไฟล์แต่ละไฟล์ หากต้องเก็บรายการของทุก ๆ ไบต์ตาราง (เช่นสมุดที่อยู่) จะเติบโตที่ความเร็วเดียวกับข้อมูล - และเสียพื้นที่มาก ดังนั้นสิ่งที่พวกเขาทำคือใช้ "การจัดสรรหน่วย" หรือที่เรียกว่า "ขนาดคลัสเตอร์" ไดรฟ์ข้อมูลถูกแบ่งออกเป็นหน่วยการจัดสรรเหล่านี้และเท่าที่ระบบไฟล์มีความเกี่ยวข้องจะไม่สามารถแบ่งย่อยได้ - ซึ่งเป็นบล็อกขนาดเล็กที่สุดที่สามารถจัดการได้ เหมือนกับที่คุณมีหมายเลขบ้าน แต่บุรุษไปรษณีย์ของคุณไม่สนใจว่าคุณมีห้องนอนกี่ห้องหรือที่อยู่ในนั้น.
แล้วจะเกิดอะไรขึ้นถ้าคุณมีไฟล์ขนาดเล็กมาก? ระบบไฟล์ไม่สนใจว่าไฟล์นั้นคือ 0 KB, 2 KB หรือแม้แต่ 15 KB มันจะให้พื้นที่น้อยที่สุดเท่าที่จะทำได้ในตัวอย่างข้างต้นนั่นคือ 32 KB ไฟล์ของคุณใช้พื้นที่นี้เพียงเล็กน้อยเท่านั้นและส่วนที่เหลือก็สูญเปล่า แต่ก็ยังเป็นของไฟล์เหมือนห้องนอนที่คุณปล่อยให้ว่าง.
ทำไมขนาดหน่วยการจัดสรรแตกต่างกัน มันจะเป็นการแลกเปลี่ยนกันระหว่างการมีตารางที่ใหญ่กว่า (สมุดที่อยู่เช่นบอกว่า John เป็นเจ้าของบ้านที่ 123 Fake Street, 124 Fake Street, 666 Satan Lane, ฯลฯ ) หรือเนื้อที่ที่สูญเปล่าในแต่ละหน่วย (บ้าน) . หากคุณมีไฟล์ที่มีขนาดใหญ่ขึ้นจะเหมาะสมกว่าที่จะใช้หน่วยการจัดสรรที่ใหญ่กว่า - เนื่องจากไฟล์ไม่ได้รับหน่วยใหม่ (เฮ้าส์) จนกว่าหน่วยอื่น ๆ จะเต็ม หากคุณมีไฟล์ขนาดเล็กจำนวนมากเอาล่ะคุณจะต้องมีโต๊ะขนาดใหญ่ (สมุดที่อยู่) อยู่แล้วดังนั้นอาจให้หน่วยเล็ก ๆ (บ้าน).
หน่วยการจัดสรรขนาดใหญ่ตามกฎทั่วไปจะเปลืองพื้นที่มากถ้าคุณมีไฟล์ขนาดเล็กจำนวนมาก มักจะไม่มีเหตุผลที่ดีที่จะมีขนาดเกิน 4 KB สำหรับการใช้งานทั่วไป.
การกระจายตัวของ?
สำหรับการแยกส่วนการกระจายตัวไม่ควรเสียพื้นที่ในลักษณะนี้ ไฟล์ขนาดใหญ่อาจมีการแยกส่วนเช่นแบ่งออกเป็นหลายหน่วยการจัดสรร แต่ควรเติมแต่ละหน่วยก่อนที่จะเริ่มต้นไฟล์ถัดไป การจัดเรียงข้อมูลอาจประหยัดพื้นที่เพียงเล็กน้อยในตารางการจัดสรร แต่นี่ไม่ใช่ปัญหาเฉพาะของคุณ.
การแก้ปัญหาที่เป็นไปได้
ตามที่ gladiator แนะนำ 2345 ตัวเลือกที่แท้จริงของคุณ ณ จุดนี้คือการอยู่กับมันหรือฟอร์แมตใหม่ด้วยหน่วยการจัดสรรที่เล็กกว่า.
การ์ดของคุณอาจได้รับการจัดรูปแบบใน FAT16 ซึ่งมีข้อ จำกัด น้อยกว่าในขนาดของตารางและดังนั้นจึงต้องใช้หน่วยการจัดสรรที่ใหญ่กว่ามากเพื่อที่จะจัดการกับปริมาณที่มากขึ้น (ด้วยขีด จำกัด สูงสุด 2 GB พร้อมหน่วยการจัดสรร 32 KB) มารยาทแหล่งที่มาของ Braiam หากเป็นเช่นนั้นคุณควรจะสามารถฟอร์แมตเป็น FAT32 ได้อย่างปลอดภัย.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.