Lista pecet@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [PECET] Dysk SSD ile procent zapasu

To: pecet@man.lodz.pl
Subject: Re: [PECET] Dysk SSD ile procent zapasu
From: Olaf Frikiov Skiorvensen <Belzebub@invalid.invalid>
Date: Thu, 10 Apr 2014 23:53:08 +0200
Wcale nie przypadkiem, dnia Thu, 10 Apr 2014 17:57:03 +0200 
 doszła do mnie wiadomość  <li6f0g$v1s$1@usenet.news.interia.pl> 
 od Adam <a.g@poczta.onet.pl>  :
>W dniu 2014-04-10 15:02, Latet pisze:
>>> Czy można na chłopski rozum wyjaśnić skąd taka różnica w wydajności?
>>> Wtedy taki dysk gdzie partycja zajęła 75% (czyli 25% pozostawione
>>> wolne, nieprzydzielone z całkowitej pojemności dysku?) robi sobie
>>> "coś" poza tymi 75% czego by nie mógł zrobić gdyby partycja zajęła
>>> 100% pojemności dysku SSD?
>>
>> Tak, dokładnie tak.
>> (...)
>>
>
>Czyli, że dyski SSD mają "pływającą partycję"?
>Mówię o sytuacji, gdy partycja/partycje nie obejmują całego obszaru SSD.
>
>Bo w mechanicznych HDD partycja (o ile jest, bo w linuksach nie musi 
>być), to jest dokładnie zaadresowana.

Pływającej partycji nie ma, ale są "pływające zapisy", zwie się to
wear leveling i jest dokładnie opisane w sieci:

http://en.wikipedia.org/wiki/Wear_leveling
http://en.wikipedia.org/wiki/Write_amplification

Mocno upraszczając, w przypadku dysku magnetycznego możliwe są
cykliczne zapisy do tego samego sektora fizycznego, natomiast w
przypadku dysku SSD, który ma ograniczoną dopuszczalną ilość zapisów
do komórki flash(w niektórych wypadkach nawet <1000), każdy zapis
kierowany jest do komórki, która ma najmniej zapisów "na liczniku" i
jest gotowa do zapisu(była wcześniej wykasowana).
Dysk SSD posiada tablicę, w której trzyma adresy LBA i odpowiadające
im fizyczne adresy komórek flash(strony), która to tablica
uaktualniana jest po każdym zapisie, tablica zawiera numery LBA i
odpowiadające im fizyczne numery stron w pamięci flash.
Przykładowo i łopatologicznie, system chce zapisać dane do LBA 1000 i
wysyła je do dysku SSD, dysk SSD sprawdza gdzie fizycznie w pamięci
flash znajduje się wolna komórka(strona) z najmniejszą wartością
licznika zapisów, znajduje ją(przykładowo) pod swoim wewnętrznym
adresem 4000, zapisuje w niej dane i uaktualnia tabelę translacji tak,
że LBA 1000 wskazuje w niej na wewnętrzny adres 4000. Każda próba
odczytu z LBA 1000 spowoduje, że dysk sprawdzi w tabeli translacji
jaki numer komórki(strony) jest przypisany do LBA 1000 i wyśle
systemowi zawartość strony 4000(lba 1000 --> strona 4000).
Jeśli system chce ponownie coś zapisać w LBA 1000 i wyśle dane do
zapisania dyskowi SSD, to dysk najpierw sprawdzi tabele translacji i
znajdzie w niej, że dane lba 1000 znajdują się w komórce(stronie)
4000, teraz dysk szuka innej, gotowej do zapisu komórki(strony)o
najmniejszej ilości zapisów, znajdzie ją, przykładowo, pod adresem
40000, zapisuje w niej dane i uaktualnia tabelę translacji(zmienia
przypisanie "lba 1000 --> strona 4000" na "lba 1000 --> strona 40000"
a stronę 4000 oznacza jako zwolnioną, listę zwolnionych stron
przegląda co pewien czas garbage collector starając się je kasować i
oznaczać jako gotowe do zapisu.
Garbage collector nie może kasować pojedynczych stron, lecz całe bloki
składające się z kilkudziesięciu czy nawet z kilkuset stron(to jest
ograniczenie wynikające z budowy pamięci flash), wiec czeka, aż
zostanie zwolniony cały blok(tu bardzo pomaga TRIM), i dopiero wtedy
go kasuje. Między innymi z tego względu na dysku SSD powinien być
zawsze pewien zapasowy obszar(over-provisioning), im jest go wiecej,
tym lepiej, jest to gwarancja, że zawsze znajdzie się jakaś wolna
strona do zapisu(czasem warto spartycjonować tylko część dysku, na
przykład 75% czy mawet 50%, wolne, nie spartycjonowane miejsce będzie
pełniło rolę dodatkowej przestrzeni na over-provisioning, oczywiście
pod warunkiem, że jest strimowane czyli dla dysku jest wolne, gotowe
do zapisu). W razie braku miejsza na partycji roboczej zawsze można ją
powiększyć za pomocą Gparted.
Tak, mocno łopatologizując, wygląda wear leveling.
-- 
Gdyby się wysadziło ich planety, zburzyło miasta,
spaliło księgi, a ich samych wytłukło do nogi,
może udałoby się ocalić naukę miłości bliźniego. SL.

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>