ทำไมขนาดการจัดสรรเริ่มต้นของ exFAT ใน Windows จึงสูงมาก


12

การอ้างอิงหน้านี้: https://support.microsoft.com/en-us/kb/140365

NTFS ไม่ได้มีขนาดเกินกว่า 4KB ในคลัสเตอร์จนกว่าจะมีปริมาณมากกว่า 16TB และ FAT32 สูงสุดที่ 16KB ในช่วงความจุ 16GB – 32GB บน Windows รุ่นที่ทันสมัย

exFAT อย่างไรก็ตามมีค่าเริ่มต้นเป็น 4KB ในช่วงปริมาณ 7MB – 256MB หลังจากนั้นจะข้ามไปที่ 32KB ในช่วง 256MB – 32GB และเกิน 128KB

ทำไมถึงเป็นอย่างนั้น? ขนาดของคลัสเตอร์ที่ค่อนข้างสูงนั้นสิ้นเปลืองโดยเฉพาะในรูปแบบที่ออกแบบมาสำหรับอุปกรณ์ภายนอกขนาดเล็กเช่นแฟลชไดรฟ์ ดังนั้นถ้าคุณฟอร์แมตหน่วยความจำแฟลชเพราะฉันเข้าใจแล้วประโยชน์หลักของขนาดคลัสเตอร์ที่ใหญ่กว่านั้นคือ IO ที่เร็วกว่าเนื่องจากการแตกแฟรกเมนต์น้อยลงและกลุ่มอ่านน้อยลง แก้ไขให้ถูกต้องหากฉันทำผิด แต่หน่วยความจำแฟลชมีแนวโน้มที่จะชะลอตัวลงน้อยมากที่เกิดจากการแตกแฟรกเมนต์ เหตุใดจึงต้องทำให้ขนาดคลัสเตอร์สูงมาก


"ขนาด" และ "สูง" ไม่รวมกัน ตัวเลขอาจเป็น "สูง" "ใหญ่" เป็นคำนักพนันแทน "สูง"
ขี้เลื่อย

สำเนาซ้ำที่เป็นไปได้ของขนาดหน่วยการจัดสรรขนาดเล็ก
ขี้เลื่อย

แค่อยากจะพูดถึงว่าฉันเพิ่งจัดรูปแบบไดรฟ์ 1TB โดยใช้ขนาดคลัสเตอร์เริ่มต้นและ windows ใช้ขนาดกลุ่ม 2048KB !!! นี่ไม่เพียง แต่ท้าทายสเป็คในหน้าของพวกเขาเท่านั้น แต่ยังสูงเกินไปเสมอ
woojoo666

สำหรับทุกคนที่มาถึงสิ่งนี้โดย Googling & อาจสำรองไดเรกทอรี git ไปยังไดรฟ์ / การ์ดที่มีปัญหาสิ่งสำคัญคือต้องทราบข้อเสียของภาคขนาดใหญ่เช่นกัน: แต่ละไฟล์ ~ 200 ไบต์ในไดเรกทอรี git ใช้หน่วยจัดสรรเต็ม 1 หน่วย ภาคขนาดใหญ่สามารถทำให้ผู้พัฒนา (ซึ่งสามารถมีไฟล์ขนาดเล็ก 10k +) ใช้ขนาดใหญ่หลายเท่าของขนาด HDD ปกติ Ex: superuser.com/questions/704218/... superuser.com/questions/1370780/...
kcrumley

คำตอบ:


11

เนื่องจาก exFAT ใช้เป็นหลักสำหรับสิ่งต่าง ๆ เช่นการ์ด SD ความจุขนาดใหญ่และบนการ์ด SD คุณต้องลบเซกเตอร์ก่อนจึงจะสามารถเขียนได้ หากคุณใช้กลุ่มเล็ก ๆ บนการ์ดที่มีขนาดเซกเตอร์ลบขนาดใหญ่มันจะส่งผลให้มีการลบและเขียนคำสั่งไปยังเซกเตอร์เดียวกันเขียนกลุ่มตามลำดับจำนวนมากที่มีค่าของข้อมูลลงในดิสก์ไม่เพียงลดประสิทธิภาพ เซลล์. ขนาดเซกเตอร์ลบโดยทั่วไปจะไม่มีเอกสารในแผ่นข้อมูลการ์ด แต่สามารถพบได้ในการลงทะเบียน CSD ของการ์ด เนื้อหาของการลงทะเบียนนี้จะแตกต่างกันไปในแต่ละการ์ดขึ้นอยู่กับการออกแบบภายใน เนื่องจากโดยทั่วไปแล้วการ์ด SD จะใช้ในสิ่งต่าง ๆ เช่นกล้องที่เก็บไฟล์ขนาดใหญ่พื้นที่ที่สิ้นเปลืองของขนาดคลัสเตอร์ที่มีขนาดใหญ่จึงไม่สำคัญ

หน้าเว็บนี้มีเนื้อหาของการลงทะเบียนนี้สำหรับการ์ดโหล:

http://goughlui.com/2014/01/03/project-read-collect-decode-sd-card-csd-register-data/

และหากคุณป้อนเนื้อหาลงในเครื่องคิดเลขต่อไปนี้คุณจะเห็นการ์ด 32/64GB บางส่วนที่มีขนาดเซกเตอร์ลบคือบล็อก 128 บล็อกโดยบล็อกที่มีขนาด 512 ไบต์ และสำหรับการ์ด 2GB ขนาดเซกเตอร์ลบคือ 32 บล็อกโดยบล็อกที่มีขนาด 1024 ไบต์

http://goughlui.com/static/csdecode2.htm

ไม่ว่า Windows จะฉลาดพอที่จะสืบค้นการลงทะเบียน CSD หรือไม่และแนะนำขนาดของคลัสเตอร์หรือเพียงแค่เดาจากฐานพาร์ติชันหรือขนาดดิสก์ หากคุณต้องการจำลองการ์ด SD ด้วยไมโครคอนโทรลเลอร์คุณสามารถค้นหาได้


1
ฉันไม่รู้เกี่ยวกับการต้องลบหน่วยความจำแฟลชก่อนที่คุณจะสามารถเขียนลงไปได้ นั่นสมเหตุสมผลแล้ว ขอบคุณ!
InsanityOnABun

1
ดูเหมือนว่าคุณจะสมมติว่าการ์ด SD ไม่มีเลเยอร์การแปลแบบแฟลชนั่นคือภาคตรรกะที่อยู่ติดกันจะอยู่ติดกันเสมอใน NAND ไม่เช่นนั้นโลจิคัลเซ็กเตอร์ในคลัสเตอร์จะไม่ต้องเป็นของ eraseblock เดียวกัน คุณมีหลักฐานอะไรบ้างที่สนับสนุนสมมติฐานนี้
ขี้เลื่อย

อันที่จริงการ์ด SD และแฟลชไดรฟ์ประสิทธิภาพสูงบางรุ่นมีเลเยอร์การแปลและยังมีฟอร์แมตล่วงหน้าด้วยกลุ่ม 32kb? ฉันได้ตรวจสอบแล้วว่ากลุ่ม 4kb ช่วยเพิ่มประสิทธิภาพสำหรับการเขียนและอ่านแบบสุ่ม
thomasrutter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.