Testování plotnových pevných disků: badblocks
Obecně se mi osvědčila linuxová utilitka badblocks. Ta disk otestuje 4x úplným přepsáním a následným kontrolním čtením: poprvé zapíše na všechny sektory 0, kontrolně celý povrch disku přečte, ze jsou skutečně všude nuly; a tohle zopakuje třikrát, jenom s jedničkami, potom na střídačku 10101010 a 010101. V praxi by to mělo znamenat, že každý sektor během testu 4x změní svoji hodnotu a testuje se, že si ji udrží…
Na závěr na disk ještě pustím integrovaný dlouhý SMART self-test, a pokud vše vyjde bez chyb, považuju disk dostatečně v kondici pro další provoz.
Spousta lidí spoléhá jenom na prvotní pomalé zformátování, což u úplných zmetků stačí, ale už jsem měl dva disky, kde začaly vypadávat tisíce vadných sektorů až při třetím zápisu/čtení při badblocks testu, proto tuhle metodu považuju za spolehlivější.
Nevýhodou je jen to, že tohle otestování poměrně dlouho trvá, je to prostě 4x zápis a 4x čtení celého povrchu disku omezené maximální rychlostí čtení a zápisu.
Stejný testovací „setup“ potom používám i na použité disky: a to jak na ty, které jsem použité koupil (občas se takto dají sehnat super dealy), tak na ty které se chystám prodat:
- zjistím, že disk je dostatečně v kondici a novému majiteli s vysokou pravděpodobností ještě nějaký čas poslouží
- bezpečně ho vymaže (pro bezpečné vymazání pevného disku stačí jediný přepis nulami, při badblocks se vše přepíše 4x, a ještě k tomu napřeskáčku)
Pokud není disk na odchodu úplně, tak naopak toto čtyřnásobné přepsání jej donutí přemapovat všechny sektory, které přemapovat jdou. Mám stále v provozu několik disků, kde už to vypadalo bledě (pravidelně chodily emaily ze SMART monitoringu o přibývajících sektorech), ale úplný přepis disku donutil firmware všechny tyto sektory skutečně přemapovat, a potom fungovaly dál, některé i několik desítek tisíc hodin. Samozřejmě už to pak není na produkční použití.
Mám to zautomatizované pomocí bash scriptu, který dělá toto:
– uloží úplný SMART výpis disku před testem (smartctl -a /dev/sdxxx)
– spustí badblocks test (badblocks -vsw /dev/sdxxx)
– spustí dlouhý SMART Self-Test (smartctl -t long /dev/sdxxx)
– znovu uloží SMART výpis
– přes dd rychle otestuje rychlost čtení a zápisu
– odešle na Telegram notifikaci, že je hotovo
smartctl -a $device >/tmp/smart-before.txt badblocks -wsv $device smartctl -t short $device >/dev/null smartctl -t long $device >/dev/null smartctl -a $device >/tmp/smart-after.txt
Testování paměťových karet a SSD disků: f3write + f3read
Nevím, jestli je nějaký pokročilejší způsob, jak testovat SSD disky a paměťové karty. Bez keců se přiznám, že na úrovní flash bloků a sektorů už se začínám ztrácet, co přesně se tam hardwarově děje, různé SSD disky mají často i relativně rozsáhlé prostory kam za běhu mohou přesměrovávat data z unavených nebo vadných bloků, proto se tady spokojím s jednoduším testem s využitím f3write a f3read.
f3 utilitka originálně slouží k otestování flash médií na falešnou kapacitu: na úrovni filesystému (nikoliv na úrovni bloků jako badblocks) zapisuje data, „dokud je místo“, a když místo dojde, ověří, že všechna zapsaná data lze přečíst zpátky. Otestuje tak skutečnou kapacitu a rychlost zápisu a čtení. Pokud nastane problém, je něco špatně.
Tohle spustím třikrát po sobě a pokud je vše OK, fixou si na paměťovku udělám tečku a jde do provozu. Zmetek jsem zatím chytil jen jednou a nebyla to zrovna ani paměťovka, ale SSD disk. 1 TB disk se po zapsání cca 600 GB dat zpomalil, až se zcela kousnul (opět jsem měl 2 ks do RAID1, ten první to nedělal a v plné rychlosti projel zápis i čtení přes celou kapacitu).
Pokud by někdo znal nějaký spolehlivější test flash pamětí a SSD disků na nižší úrovni, klidně se podělte. Já si pokaždé, když dělám tento „jednoduchý“ test říkám, že si to pořádně nastuduju, a pak se na to vždy vykašlu. :D
Zároveň jsem tenhle test použil na všechny svoje SD a microSD karty, kterých jsem za 15 let nasbíral asi 30 ks. Až jsem se divil, kolik i velkých karet (16 GB), které ale měly maximální rychlost zápisu třeba jen 8 MB/s jsem doma vlastně měl. Všechno pod 30 MB/s čtení a 20 MB/s zápis jsem prostě vyhodil do koše. :D
Flash média obecně nechci moc trápit opakovaným přepisováním, vzhledem k tomu, jak já chápu, že fungují, to asi není úplně efektivní způsob. Vadné sektory se rovnou mapují na ty ze záložního poolu, takže mi tam prostě stačí, že zapíšu a přečtu data přes celou kapacitu disků bez nějakých hiccupů (třeba jsem měl nějaký SATA SSD, kde rychlost po vyčerpání cache spadla pod úroveň HDD a navíc při větším množství operací začalo být nepoužitelné úplně, což byla trochu zrada :D).
Postup je rovněž jednoduchý:
# f3write f3write /Volumes/EOS_DIGITAL/ | tee ~/tmp/f3write.txt f3read /Volumes/EOS_DIGITAL/ | tee ~/f3read.txt f3readspeed=$(cat ~/f3read.txt | grep Average | awk '{print $4}') # + u SSD smart test (viz HDD)
Nevytřízené poznámky, co jsem měl u článku:
https://gist.github.com/ilyaigpetrov/e451200ea9b59e8c348422a8f9c5e8e5
https://forum.level1techs.com/t/reliable-hard-drive-test/169181
# from [forums](https://forum.level1techs.com/t/reliable-hard-drive-test/169181/13)
Usually I mostly follow the steps from this guide 11, especially when dealing with 2nd hand drives:
SMART short test
SMART conveyance test
SMART long test
badblocks
SMART long test
For new drives I might do only 1, 2 and 3, depending on time.
This script 5 (from TheArtOfServer) is useful to test big batches btw. It can send you a mail when done, which is nice as badblocks runs can take a while…