Ploink en mjtdevries: jullie zitten zeker op het goede spoor.
TLER is net als
CCTL/ERC bedoeld om de standaard recoverytijd van 120- seconden naar typisch 7 seconden terug te brengen, zodat RAID controllers met timeout zo laag als 10 seconden geen problemen ondervinden.
Echter, wat Ploink hier zegt klopt niet helemaal:
Reparatie en/of reallocatie van defecte sectoren kan lang duren en normaal moet het OS (of RAID controller) net zo lang wachten tot de schijf hier mee klaar is, dit om te voorkomen dat corrupte data wordt geleverd.
Met TLER geeft de schijf het na een aantal seconden op als het dan nog niet gelukt is. Er is dan wel een reallocatie gedaan, maar zonder complete reconstructie van de data.
Dat gaat nét wat anders:
Consumentenschijf:
1. Windows leest een sector op de hardeschijf die onleesbaar is (bad sector)
2. De hardeschijf zal voortdurend opnieuw proberen de sector te lezen. Het kan zijn dat het na een bepaalde poging uiteindelijk toch lukt, dan is er niets aan de hand en gaat alles verder enkel met een kleine hickup.
3. Lukt het tot 120 seconden nog niet om de sector te lezen, dan pas wordt een I/O error gegeven. Tot die tijd zul je merken dat applicaties blijven 'hangen'. Ze wachten simpelweg op de gevraagde I/O maar krijgen dat alsmaar niet omdat de schijf dit nog niet wilt opgeven. Normaliter stellen operating systems zelf ook een limiet in (30 sec?) en doen een reset en sturen de I/O request opnieuw.
Conclusie: de schijf benut maximaal de mogelijkheid om de onleesbare sector alsnog corruptievrij te kunnen lezen/berekenen. Een hardeschijf levert
nooit corrupte data; althans zo is vastgelegd in de ATA standaard.
TLER-enabled schijf
Bij een hardeschijf met TLER ingeschakeld en ingesteld op 7 seconden, zal deze bij elke recoverypoging na 7 seconden een I/O error geven. 'Do or die': lever de data of sterf! TLER is natuurlijk maar een simpel iets; gewoon de timer op 7 seconden zetten ipv stanaard 60 of 120 seconden. Het is echt geen bijzondere technologie ofzo. En potentiëel ook gevaarlijk.
Consumentenschijf op RAID controller
Ga je nu schijven op een straffe RAID controller gooien, dan ga je problemen krijgen met consumentenschijven. De meeste RAID controllers zijn erg strict of streng als het gaat om timeouts; volkomen absurd natuurlijk maar dat is de huidige situatie.
1. RAID-controller leest bad sector op schijf A
2. schijf A doet er langer dan 10/15 seconden over om de data te leveren, al die tijd reageert de schijf niet
3. de RAID controller beschouwd de hele schijf als gefaald en schopt hem uit de RAID array. De lees of schrijfactie wordt alsnog voltooid met de resterende disks indien voldoende redundancy aanwezig is (RAID5, RAID6).
4. Alle nieuwe writes worden niet meer gesynct naar de betreffende disk. Ga je nu rebuilden, dan kun je ook nog bad sectors op overige schijven tegenkomen, die worden dan ook uit de RAID array getrapt. Oeps!
TLER-schijf op RAID controller
Om deze tekortkoming te compenseren, is er TLER als noodoplossing. Ik noem het een 'bugfix' omdat het eigenlijke probleem de strenge RAID engines zijn die in onboard RAID en hardware RAID gemeengoed zijn. Maar hoe gaat het nu precies met een TLER schijf?
1. RAID-controller leest bad sector op schijf A
2. schijf A houdt het na 7 seconden voor gezien en stuurt een I/O error terug
3. afhankelijk van de controller zal deze alsnog de schijf uit de array flikkeren. Maar een controller met een IQ groter dan 1 zal de I/O via de overige schijven uitvoeren. Een goede controller zal redundante data gebruiken om de bad sector te overschrijven, maar ik ken geen controller die dat laatste doet.
Consumentenschijf op ZFS software RAID
TLER is eigenlijk geen fix. De echte fix is dat RAID controllers en andere software/firmware die met disks omgaat niet moet uitgaan van een schijf die óf alle data kan leveren óf als defect wordt beschouwd. In plaats daarvan zou de controller redundantie moeten gebruiken om zo'n bad sector te corrigeren.
Het ZFS bestandssysteem (of eigenlijk RAID-engine, LVM en filesystem in één) doet precies dat: bij een bad sector wordt die sector direct overschreven met gegevens die uit de redundantie worden gehaald dus van de overige schijven. Door een bad sector te overschrijven, wordt de fysieke bad sector omgewisseld met een reserve sector en is het probleem opgelost. Voila, puur software.
TLER gevaarlijk?
In het geval dat je geen andere recoverymogelijkheid hebt om data te recoveren, kan TLER een gevaar opleveren. Denk aan een degraded RAID5 die je aan het rebuilden bent. Zou je dan een bad sector tegenkomen ben je de slaak. En als dat gebeurt, wil je het liefst dat de schijven er zo lang mogelijk over doen om liefst toch die sector te kunnen recoveren. TLER blokkeert deze 'last line of defence'.
En wat vind je van deze 'Red' schijven dan?
Leuk voor Hardware RAID, windows onboard RAID, kant en klare NAS systemen. Maar voor ZFS wil je deze niet, en als je ze ervoor gaat gebruiken dien je TLER op 120 seconden in te stellen, just in case.