Jak określić rozmiar bloku Nand wymazywania SSD?

14

Niedawno wybrałem dysk SSD Crucial M500 240 GB (NAND 20 nm) i staram się znaleźć najlepszy sposób na podzielenie go na partycje. Obecnie używam fdisk -cuod sektora 2048.

Uważam, że nand page sizejest to 16 KB.

Nigdzie nie mogę znaleźć, co to nand erase block sizejest.

Czy ktoś zna odpowiedź na tę lub ogólną poradę dotyczącą partycjonowania tej konkretnej serii dysków SSD?

Dacto
źródło
1
Może być konieczne otwarcie napędu i przeglądanie numerów części na chipach NAND.
LawrenceC

Odpowiedzi:

8

Informacje te są czasami publikowane w specyfikacjach producenta dysków SSD, ale innym razem ich nie ma, szczególnie w przypadku kart pamięci CF lub SD. Zamiast używać Google do szukania kogoś, kto przeprowadził badanie, możesz spróbować oszacować go samodzielnie, używając FlashBench. Pobierz tutaj: https://github.com/bradfa/flashbench

To narzędzie wykonuje losowe odczyty na dysku SSD i wykreśla tabelę pokazującą czasy odczytu. (Powinieneś już był zrobić kilka zapisów na dysku SSD, ponieważ odczyt całkowicie wymazanych stron jest często symulowany przez układ kontrolera). Szukając przerw w czasie według rozmiaru bloku, możesz wywnioskować, jaki jest rozmiar bloku usuwania. Oto próbka z README:

== Zgadnij, skasuj rozmiary bloków i stron ==

''flashbench -a <device>''

Jest to prosty test tylko do odczytu, przeprowadzający małe odczyty ponad granicami różnych rozmiarów. Przykład:

$ sudo ./flashbench -a /dev/mmcblk0  --blocksize=1024
align 134217728 pre 735µs       on 1.08ms       post 780µs      diff 324µs
align 67108864  pre 736µs       on 1.05ms       post 763µs      diff 300µs
align 33554432  pre 722µs       on 1.04ms       post 763µs      diff 294µs
align 16777216  pre 727µs       on 1.05ms       post 772µs      diff 302µs
align 8388608   pre 724µs       on 1.04ms       post 768µs      diff 299µs
align 4194304   pre 741µs       on 1.08ms       post 788µs      diff 317µs
align 2097152   pre 745µs       on 950µs        post 811µs      diff 171µs
align 1048576   pre 745µs       on 945µs        post 807µs      diff 169µs
align 524288    pre 743µs       on 936µs        post 799µs      diff 165µs
align 262144    pre 746µs       on 948µs        post 809µs      diff 171µs
align 131072    pre 737µs       on 935µs        post 804µs      diff 165µs
align 65536     pre 735µs       on 925µs        post 796µs      diff 159µs
align 32768     pre 735µs       on 925µs        post 800µs      diff 157µs
align 16384     pre 745µs       on 911µs        post 781µs      diff 148µs
align 8192      pre 785µs       on 808µs        post 725µs      diff 53.3µs
align 4096      pre 784µs       on 788µs        post 779µs      diff 5.85µs
align 2048      pre 787µs       on 793µs        post 789µs      diff 4.65µs

Pokazuje to czas dostępu do wykonania dwóch odczytów 1024-bajtowych wokół granic potęgi dwóch wyrównanych bloków. Odczyt na końcu jednostki 128 MB zajmuje około 735 mikrosekund, odczyt ostatniego bloku tego urządzenia wraz z pierwszym blokiem następnego zajmuje około 1080 mikrosekund, a odczyt dwóch pierwszych bloków w jednostce 128 MB zajmuje około 780 mikrosekund.

Najciekawsza jest tutaj ostatnia, różnica między drugą liczbą a średnią pierwszej i trzeciej wynosi 324 mikrosekundy. Wszystkie te liczby są w przybliżeniu takie same dla wszystkich jednostek od 4 MB do 128 MB.

Jednak od 2 MB do 16 KB ostatnia kolumna ma znacznie niższą wartość. Oznacza to, że cokolwiek robi karta pamięci na granicy 4 MB, nie dzieje się na innych granicach. Zgaduje się, że 4 MB to rozmiar bloku kasowania, zwany także rozmiarem segmentu lub jednostki alokacji. To wymazanie rozmiaru bloku będzie musiało zostać użyte w innych testach następujących po tym.

Podobnie, granice 16 KB i 8 KB są wyjątkowe. Logicznym wyjaśnieniem tego jest to, że karta ma strony o wielkości 8 KB, ale może korzystać z dostępu wielopłaszczyznowego do odczytu dwóch stron o wielkości 8 KB jednocześnie.

Niektóre karty pokazują tylko wyraźny wzór przy użyciu dostępu o określonych rozmiarach bloków, inne karty nie wykazują żadnego wzoru, co oznacza, że ​​liczby muszą być określone inaczej.

Ponadto karty, które nigdy nie zostały w pełni zapisane, mogą wykazywać inne zachowanie, ponieważ czasy dostępu do wstępnie usuniętych segmentów różnią się od tych, które zostały zapisane.

Greg Kennedy
źródło
2

Kolejną próbą jest wyrównanie do granicy, która jest wielokrotnością dowolnego praktycznego rozmiaru bloku.

Przy tej koncepcji najczęściej wyrównuje się na granicy 1 MB, więc nie będzie miało znaczenia, czy rozmiar bloku wynosi 4 czy 16 kb; wszystkie z nich będą wielokrotnością 2 i poniżej 1 M, więc wyrównanie na tej granicy będzie pasować do nich wszystkich.

Jednak stosowanie tej koncepcji zależy od tego, co wyrównujesz; utrata 1 MB na początku urządzenia pamięci masowej jest całkowicie do przyjęcia, a utrata wiele razy w innym scenariuszu może nie być.

Manuel Arwed Schmidt
źródło
1

Rozmiar bloku kasowania nie ma wpływu na wyrównanie, a M500 obsługuje odśmiecanie, więc wydajność nie stanowi problemu. Proszę odnieść się do drugiej strony tego pliku PDF ze strony micron, która pomoże ci określić rozmiar bloku na podstawie NAND zastosowanego w twoim M500.

jeśli chodzi o porady dotyczące wyrównania, sprawdź ten fantastyczny post Superuser .

Oto zrzut ekranu strony: wprowadź opis zdjęcia tutaj

G Koe
źródło
2
Więc w takim przypadku, gdzie na tym schemacie podano rozmiar bloku kasowania?
hbogert