Weer een hoop geklets van FreeNAS...
In a desktop, if an I/O fails, all is lost
De poorten van de Hemel storten in! Het einde der tijden!
desktop drives will retry I/Os endlessly
Dat doen ze niet. Als een hardeschijf de I/O niet kan verwerken; stuurt het I/O error terug. Als er een bad sector is, kan het afhandelen van de I/O wel tot 120 seconden duren; maar dat is wat anders. Er is één I/O request en één I/O failure; niet meerdere. Het is de host die nogmaals een I/O request stuurt; niet de hardeschijf.
If an individual drive fails an I/O, ZFS will retry the I/O on a different drive.
Dus... er is niets aan de hand?! Waarom dan 'all is lost'?
Dit stukje draait het allemaal om:
The faster that happens, the faster the array will be able to cope with hardware faults.
Aha, dus er wordt TLER aanbevolen omdat bij bad sectors het dan een aantal seconden minder lang duurt voordat ZFS de volgende disk pakt. Kijk! We hebben het over gemak; niet over veiligheid laat staan 'all is lost'.
En ipv duurdere hardeschijven te kopen met een vieze hack, kun je ook gewoon je operating system configureren om hetzelfde te doen. Binnen 7 seconden geen reactie van de hardeschijf? Dan een device reset en opnieuw proberen. Immers: de host bepaalt wat er gebeurt, niet de hardeschijf. Als de host niet wilt dat de hardeschijf 120 seconden gaat recoveren, heeft de host alle macht om in te grijpen. Dus doe dat dan ook!
code:
1
2
3
4
5
6
| # mimic TLER behavior
# note: error recovery is useful in cases where you lost your redundancy!
kern.cam.ada.default_timeout="7"
kern.cam.da.default_timeout="7"
kern.cam.ada.retry_count="2"
kern.cam.da.retry_count="2" |
Als je bang bent voor timeouts, dan kun je beter advies geven om LSI controllers te vermijden. Deze hebben namelijk quirks waardoor een timeout op één disk alle I/O voor andere disks blokkeert. Dit is zeker niet normaal en zal niet plaatsvinden op een normale AHCI controller.