Wytrzymałość dysków SSD — bezpieczeństwo danych (1)
18.09.2016 | aktual.: 23.09.2016 22:08
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.
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.