Dlaczego domyślny rozmiar alokacji exFAT w systemie Windows jest tak wysoki?

12

Odwoływanie się do tej strony: https://support.microsoft.com/en-us/kb/140365

NTFS nie przekracza wielkości klastra 4KB, dopóki wolumen nie przekroczy 16 TB, a FAT32 osiąga maksymalny poziom 16 KB w zakresie wielkości 16 GB – 32 GB w nowoczesnych wersjach systemu Windows.

exFAT domyślnie przyjmuje jednak wartość 4KB w zakresie głośności 7 MB – 256 MB. Następnie przeskakuje do 32 KB w zakresie 256 MB – 32 GB, a 128 KB powyżej.

Dlaczego? Stosunkowo duży rozmiar klastra wydaje się marnotrawstwem, szczególnie w formacie zaprojektowanym dla mniejszych urządzeń zewnętrznych, takich jak dyski flash. Podwójnie więc, jeśli formatujesz pamięć flash, ponieważ, jak rozumiem, główną korzyścią dla większego rozmiaru klastra jest szybsze IO z powodu mniejszej fragmentacji i mniejszej liczby klastrów do odczytu. Popraw mnie, jeśli się mylę, ale pamięć flash jest znacznie, znacznie mniej podatna na spowolnienia spowodowane fragmentacją. Dlaczego więc zwiększać rozmiar klastra?

InsanityOnABun
źródło
„Rozmiar” i „wysoki” nie pasują do siebie. Liczby mogą być „wysokie”. „Duży” to słowo gracza, a nie „wysoki”.
trociny
Możliwy duplikat wad małego rozmiaru jednostki alokacji
trociny
chciałem tylko wspomnieć, że właśnie sformatowałem dysk 1 TB przy użyciu domyślnego rozmiaru klastra, a system Windows użył rozmiaru klastra 2048 KB !!! Jest to nie tylko sprzeczne ze specyfikacjami na ich stronie, ale zawsze jest O WIELE zbyt wysokie
woojoo666,
Dla każdego, kto osiągnął to przez Googling i mógł kiedykolwiek utworzyć kopię zapasową katalogu git na danym dysku / karcie, ważne jest, aby znać także minus dużych sektorów: każdy ~ 200 bajtowy plik w katalogu git zajmuje 1 pełną jednostkę alokacji. Duże sektory mogą sprawić, że katalogi deweloperów (które mogą mieć 10k + małe pliki) zajmują dużą wielokrotność swoich normalnych rozmiarów HDD. Np .: superuser.com/questions/704218/… superuser.com/questions/1370780/…
kcrumley

Odpowiedzi:

11

Ponieważ exFAT jest używany głównie do takich rzeczy jak karty SD o dużej pojemności, a na kartach SD musisz usunąć sektor, zanim będziesz mógł do niego pisać. Jeśli użyjesz małych klastrów na karcie z dużym rozmiarem sektora kasowania, spowodowałoby to wiele poleceń kasowania i zapisu do tego samego sektora, zapisywanie kilku kolejnych klastrów wartych danych na dysk nie tylko zmniejszając wydajność, ale także przedwcześnie zużywając pamięć flash komórki. Rozmiar sektora usuwanego nie jest na ogół udokumentowany w kartach danych karty, ale można go znaleźć w rejestrze CSD karty. Zawartość tego rejestru będzie się różnić w zależności od karty wewnętrznej. Ponieważ karty SD są zwykle używane w takich urządzeniach, jak przechowujące duże pliki, zmarnowane miejsce o dużym rozmiarze klastra nie jest ważne,

Ta strona zawiera zawartość tego rejestru dla kilkunastu kart:

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

A jeśli wpiszesz jego zawartość do poniższego kalkulatora, dla kilku kart 32/64 GB rozmiar wymazanego sektora wynosi 128 bloków, a blok ma 512 bajtów. W przypadku karty o pojemności 2 GB rozmiar usuwanego sektora wynosi 32 bloki, a blok ma 1024 bajty.

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

Bez względu na to, czy system Windows jest wystarczająco inteligentny, aby wykonać zapytanie do rejestru CSD i zasugerować rozmiar klastra lub jeśli po prostu zgaduje na podstawie rozmiaru partycji lub dysku, nie jest znany. Jeśli chcesz emulować kartę SD za pomocą mikrokontrolera, możesz się dowiedzieć.

Muh Fugen
źródło
1
nie wiedziałem o konieczności wymazania pamięci flash, zanim będziesz mógł do niej pisać. To ma teraz sens. Dzięki!
InsanityOnABun
1
Wydaje się, że zakładasz, że karty SD nie mają warstwy translacji flash, tzn. Że sąsiednie sektory logiczne zawsze będą fizycznie sąsiadować w NAND. W przeciwnym razie sektory logiczne w klastrze nie musiałyby należeć do tego samego bloku usuwania. Jakie masz dowody na poparcie tego założenia?
trociny
Rzeczywiście, niektóre wysokowydajne karty SD i dyski flash mają warstwę translacyjną, a mimo to są wstępnie sformatowane z klastrami 32 KB? Zweryfikowałem, że klastry 4kb poprawiają wydajność losowych zapisów i odczytów
thomasrutter