Mengapa ukuran alokasi default exFAT di Windows begitu tinggi?

12

Merujuk halaman ini: https://support.microsoft.com/en-us/kb/140365

NTFS tidak melampaui ukuran cluster 4KB sampai volumenya melebihi 16TB, dan FAT32 mencapai 16KB dalam kisaran volume 16GB – 32GB pada versi Windows modern.

Namun exFAT hanya default ke 4KB dalam kisaran volume 7MB – 256MB. Setelah itu melompat ke 32KB dalam kisaran 256MB - 32GB, dan 128KB di luar itu.

Mengapa demikian? Ukuran cluster yang relatif tinggi tampaknya boros, terutama dalam format yang dirancang untuk perangkat eksternal yang lebih kecil, seperti flash drive. Tidak diragukan lagi jika Anda memformat memori flash, karena seperti yang saya pahami, manfaat utama untuk ukuran cluster yang lebih besar adalah IO yang lebih cepat karena lebih sedikit fragmentasi dan kurang keseluruhan cluster untuk dibaca. Perbaiki saya jika saya salah, tetapi memori flash jauh, apalagi rentan terhadap pelambatan yang disebabkan oleh fragmentasi. Jadi mengapa membuat ukuran cluster sangat tinggi?

InsanityOnABun
sumber
"Ukuran" dan "tinggi" tidak cocok. Angka bisa "tinggi". "Besar" adalah kata petaruh bukannya "tinggi".
serbuk gergaji
Kemungkinan duplikat Kerugian dari ukuran unit alokasi kecil
serbuk gergaji
hanya ingin menyebutkan bahwa saya baru saja memformat drive 1TB menggunakan ukuran cluster default, dan windows menggunakan ukuran cluster 2048KB !!! Ini tidak hanya menentang spesifikasi di halaman mereka, ini juga selalu WAYY terlalu tinggi
woojoo666
Bagi siapa pun yang mencapai ini dengan Googling & mungkin pernah mencadangkan direktori git ke drive / kartu yang bersangkutan, juga penting untuk mengetahui kelemahan sektor besar, juga: setiap file ~ 200 byte dalam direktori git membutuhkan 1 unit alokasi penuh. Sektor besar dapat membuat direktori dev (yang dapat memiliki 10k + file kecil) mengambil banyak ukuran HDD normal. Mis: superuser.com/questions/704218/… superuser.com/questions/1370780/…
kcrumley

Jawaban:

11

Karena exFAT digunakan terutama untuk hal-hal seperti kartu SD berkapasitas besar, dan pada kartu SD Anda harus menghapus sektor sebelum Anda dapat menulisnya. Jika Anda menggunakan cluster kecil pada kartu dengan ukuran sektor erase besar akan menghasilkan banyak menghapus dan menulis perintah ke sektor yang sama menulis beberapa cluster sekuensial senilai data ke disk tidak hanya mengurangi kinerja tetapi juga terlalu cepat memakai flash. sel. Ukuran sektor yang dihapus umumnya tidak didokumentasikan dalam lembar data kartu tetapi dapat ditemukan dalam register kartu CSD. Isi register ini akan bervariasi dari kartu ke kartu tergantung pada desain internalnya. Karena kartu SD umumnya digunakan dalam hal-hal seperti kamera yang menyimpan file besar, ruang yang terbuang dari ukuran cluster yang besar tidak penting,

Halaman web ini memiliki isi daftar ini sekitar selusin kartu:

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

Dan jika Anda memasukkan isinya ke kalkulator berikut ini, Anda dapat melihat beberapa kartu 32/64GB ukuran sektor yang dihapus adalah 128 blok dengan blok menjadi 512 byte. Dan untuk kartu 2GB ukuran sektor hapus adalah 32 blok dengan blok 1024 byte.

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

Apakah Windows cukup pintar untuk menanyakan register CSD dan menyarankan ukuran cluster, atau apakah hanya menebak berdasarkan partisi atau ukuran disk tidak diketahui. Jika Anda meniru kartu SD dengan mikrokontroler, Anda bisa mengetahuinya.

Muh Fugen
sumber
1
saya tidak tahu tentang perlunya menghapus memori flash sebelum Anda bisa menulisnya. Itu masuk akal sekarang. Terima kasih!
InsanityOnABun
1
Anda tampaknya mengasumsikan bahwa kartu SD tidak memiliki lapisan terjemahan flash, yaitu bahwa sektor logis yang berdekatan akan selalu berdekatan secara fisik di NAND. Kalau tidak, sektor logis dalam sebuah cluster tidak harus milik eraseblock yang sama. Bukti apa yang Anda miliki untuk mendukung asumsi ini?
serbuk gergaji
Memang beberapa kartu SD dan flash drive berkinerja tinggi memiliki lapisan terjemahan dan masih diformat dengan cluster 32kb ?? Saya telah memverifikasi bahwa cluster 4kb meningkatkan kinerja untuk menulis dan membaca secara acak
thomasrutter