Pe lângă ceea ce s-a spus, vreau să adaug banul meu, dar acesta este o considerație importantă.
Ce un drum când sectorul este lent de citit?
Se presupune că conduce un dispozitiv proiectat să funcționeze singur, de ex. g. unități „desktop” tipice, presupunem că nu există altă modalitate de a prelua datele stocate în acel sector defect. Ei vor încerca să recupereze datele cu orice preț, repetând din nou și din nou, pentru o perioadă lungă de timp. Desigur, vor marca și acel sector ca eșuat, așa că îl vor remapa data viitoare când îi scrieți, dar trebuie să scrieți pentru asta. Până când îl rescrieți, se vor sufoca de fiecare dată când citiți din acel loc. Într-o setare RAID, aceasta înseamnă că pentru RAID unitatea încă funcționează și nu există niciun motiv pentru a o da afară, dar pentru aplicație matricea va încetini până la un crawl.
Pe de altă parte, unitățile „întreprindere”, în special cele „de marcă”, presupun adesea că sunt întotdeauna folosite în setarea RAID. Un controler „de marcă”, văzând unitatea „de marcă”, ar putea chiar notifica firmware-ul lor despre prezența RAID. Deci unitatea se va opri mai devreme și va raporta o eroare I/O, chiar dacă a fost posibil să faceți mai multe încercări și să citiți sectorul. Apoi, controlerul are șansa să răspundă mai rapid, oglindind instrucțiunile de citire pe o unitate frate (și scoțând-o pe cea proastă din matrice). Când retrageți și explorați/testați cu atenție acea unitate declanșată, nu găsiți nicio problemă aparente – a fost doar încetinită pentru o clipă și a fost suficient pentru a înceta să o mai utilizați, conform unei logici a controlerului.
Speculez că asta poate fi singura diferența dintre unitățile „desktop” și cele „de marcă”/„întreprindere” NL-SAS și SATA. Acesta este, probabil, motivul pentru care plătiți de trei ori mai mult atunci când cumpărați o unitate „HPE” care a fost de fapt produsă de Toshiba, în comparație cu cumpărarea celei cu marca „Toshiba”.
Cu toate acestea, unele unități acceptă unele controale generice ale acestui lucru. Se numește SCT ERC care shands pentru Control de recuperare a erorilor de transport SMART Command. Așa arată înăuntru smartctl
:
nesuportat
# smartctl --all /dev/sda
=== ÎNCEPEREA SECȚIUNII DE CITIRE DE DATE INTELIGENTE ===
Capabilități SCT: (0x3037) Stare SCT acceptată.
SCT Feature Control acceptat.
Tabel de date SCT acceptat.
sprijinit
=== ÎNCEPEREA SECȚIUNII DE CITIRE DE DATE INTELIGENTE ===
...
Capacități SCT: (0x003d) Stare SCT acceptată.
SCT Error Recovery Control acceptat.
SCT Feature Control acceptat.
Tabel de date SCT acceptat.
Dacă aveți noroc, puteți controla această funcție cu smartctl
. Puteți să preluați sau să setați două timeout-uri, cât timp să încercați să recitiți și cât să încercați să rescrieți:
# smartctl -l scterc /dev/sda
Control de recuperare a erorilor SCT:
Citire: 70 (7,0 secunde)
Scriere: 70 (7,0 secunde)
# smartctl -l scterc /dev/sde
Control de recuperare a erorilor SCT:
Citiți: Dezactivat
Scriere: Dezactivat
# smartctl -l scterc /dev/sdd
Avertisment: dispozitivul nu acceptă comanda SCT Error Recovery Control
smartctl -l scterc,120,60 /dev/sde
Ceea ce înseamnă: 120 de zecimi de secundă pentru a reîncerca citirea; 60 de zecimi de secundă pentru a reîncerca scrierea. Zero înseamnă „reîncearcă până mori”. Diferite unități au setări implicite diferite pentru aceasta.
Așadar, dacă utilizați singur unitatea „RAID edition”, mai bine setați timeout-urile ERC la zero, sau puteți pierde date. Pe de altă parte, dacă utilizați unități în RAID, este mai bine să setați o setare rezonabilă și scăzută, diferită de zero.
Sursa de amarao @ Habrahabr, în rusă.
P.S. Și o notă despre SAS. Utilizare sdparm
, acceptă mai multe controale ale acestui lucru.