Wytrzymałość dysków SSD — bezpieczeństwo danych (1)

Komputer stanowi dla mnie narzędzie pracy, więc bardzo istotnym aspektem jest kwestia bezpieczeństwa przechowywanych danych. Jeszcze w 2010 roku podstawowym i jedynym nośnikiem danych w moim komputerze był klasyczny dysk twardy o pojemności 1TB. W między czasie coraz popularniejsze i tańsze stawały się dyski półprzewodnikowe, tak więc z czasem podczas jednej z modernizacji w moim komputerze pojawił się dysk SAMSUNG 830 EVO o pojemności 128GB zbudowany na kościach MLC.

Moje zaufanie do dysków SSD było stosunkowo ograniczone dysk ten był wykorzystywany do przechowywania systemu, natomiast partycja /home z danymi użytkowników pozostała na tradycyjnym telerzowym dysku o wielkości 2,7TB. Ta konfiguracja sprawdzała się bardzo dobrze przez kilka lat, aż do teraz, gdy postanowiłem przeprowadzić kolejną modernizację.
Przed komputerem spędzam długie godziny i nie lubie hałasujących maszyn, a najgłośniejszym elementem mojego komputera był dysk twardy WD Red, który i tak należał do jednych z najcichszych tradycyjnych dysków. W mojej głowie więc zrodził się pomysł aby całkowicie zastąpić dysk twardy dyskiem SSD. Przed decyzją o wymianie rozpocząłem od poszukiwania artykułów dotyczących trwałości współczesnych dysków półprzewodnikowych.

reklama

Równocześnie chcąc zweryfikować dane z artykułów, postanowiłem zbadać w jakim stanie jest mój dysk EVO 830 128GB zakupiony w 2012 roku oraz EVO 840 512GB pracujący w jednym z moich serwerów linuksowych od 2013 roku. Serwer ten pracuje nieprzerwanie 24h/dobę zapewniając obsługę poczty SMTP, IMAP, WWW, FTP, DNS, SAMBA i jest użytkowany przez kilkanaście osób.

W systemach linux stan dysku możemy zbadać za pomocą polecenia smartctl -a /dev/sd<x>, gdzie X to litera dysku. ( O tym narzędziu szczegółowo będę pisał innym razem)

Przyjrzyjmy się zatem wynikowi i danymi zwróconymi przez SMART dla dysku EVO840 512GB pracującego na serwerze:


ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       30328
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       89
177 Wear_Leveling_Count     0x0013   099   099   000    Pre-fail  Always       -       4
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0032   060   049   000    Old_age   Always       -       40
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0
199 CRC_Error_Count         0x003e   100   100   000    Old_age   Always       -       0
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       67
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       3021664622

Najistotniejszym parametrem mówiącym o tym w jakim stanie jest dysk i ile jeszcze zostało przed nim życia, w przypadku dysków Samsunga jest atrybut 177 Wear Leveling Count. Atrybut ten mówi, o tym ile razy wszystkie komórki pamięci NAND dysku zostały zapisane. Wartość VALUE mówi nam procentowo w jakim stanie jest dany wskaźnik, a zatem w tym konkretnym przypadku pokazuje w jakim stanie jest dysk według założeń producenta. Wartość RAW_VALUE określa ile razy fizycznie wszystkie komórki NAND zostały nadpisane.

W przypadku wspomnianego dysku RAW_VALUE dla atrybutu WLC dla wynosi 4 natomiast parametr VALUE 99. Przy założeniu że komórki TLC powinny wytrzymać przynajmniej 1000 cykli kasowania/zapisu, możemy zauważyć, że dysk ma jeszcze długie życie przed sobą.

Mniejszy dysk 128GB po kilku latach używania miał natomiast atrybut WLC=9 co przy zastosowaniu komórek MLC oznacza, że również może pracować jeszcze kilka lat.

Każdy z dysków prędzej czy później odmówi posłuszeństwa nasuwa się więc pytanie: W jaki sposób zapobiec utracie danych znajdujących się na dysku SSD i kiedy należy go wymienić? Naturalnie nie ważne czy posiadamy dysk SSD czy magnetyczny powinniśmy pamiętać o backupach, ale akurat to nie będzie tematem dzisiejszych rozważań.

Wniosek nasuwa się sam należy monitorować stan parametru WLC i jeśli wartość VALUE będzie równa 1 lub ostatecznie 0 należy pomyśleć, o wymianie dysku SSD na nowy. Należy również obserwować atrybuty #179 Used_Rsvd_Blk_Cnt_Tot który informuje nas o tym ile zostało wykorzystanych sektorów z puli rezerwowej. Atrybuty #181 Program_Fail_Cnt_Total oraz #182 Erase_Fail_Count_Total, mówiące ile razy nie udało się skasować lub reprogramować blokow NAND. Jeśli ta wartośc nadmiernia wzrasta, oraz kończy się pula bloków rezerwowych należy również pomyśleć nad szybką wymianą dysku.

Aby nie trzeba było pamiętać o ręcznym sprawdzaniu stanu dysku również należy skonfigurować damon smartd z pakietu smartmontools, który poinformuje nas gdy coś złego będzie się działo z dyskiem.

Monitorowanie stanu dysku półprzewodnikowego za pomocą SMART powinno zapewnić większą niezawodność niż użycie dysku talerzowego, który lubi zakończyć swoje życie w zupełnie nieprzewidywalny sposób tak, że bardzo często SMART nie zdąży nas o tym poinformować.

O wyborze nowego dysku w nastepnym odcinku.

Część druga do obejrzenia tutaj  

linux sprzęt bezpieczeństwo
reklama

Komentarze