HyperBart schreef op maandag 20 april 2015 @ 00:49:
[...]
Kan je hier even dieper op ingaan? Vind het namelijke reuze-interessant en uit persoonlijke paranoia (die me het nu waard is, daarvoor vond ik het relatief gezien te duur) ga ik nu ook een hoger niveau van redundantie (RAIDZ2) implementeren, omdat ik met de overstap van 5 naar 10 disks van 4TB niet het risico wil lopen (zeker als je de "badkuipcurve" van failures van disks in het achterhoofd houdt, een ongeluk komt nooit alleen maw) op data-verlies. Dit is uiteraard maar in een basale setup van een stel hobbyisten,wat bedoel je specifiek met die planning? Een setup zoals velen van ons hier, of richtte je je theorieën vooral op enterprise omgevingen?
Eerst de "open deur", "de dooddoener", maar wel waar:
Betrouwbaar , Prestatie, Goedkoop
je kan er altijd maar twee van drie hebben. Kies maar.
Onderstaand artikel is niet compleet en laat overwegingen, technieken en criteria weg die in de enterprise markt van toepassing zijn. Het is gericht op de SOHO gebruiker en niet voor TIER-1 en 2 storage inkoper op admin. Mochten er opmerkingen voor zover relevant voor de doelgroep dan hoor ik dat natuurlijk graag.
Laat niemand zich nu schrik aanjagen door onderstaand artikel. Het is geschreven op verzoek. Harddisken zijn van 0.1 Gigabit/ vierkante inch in 1990 naar 10 Gb/sq. in. naar 1200 Gb/sq. in. gegaan tegelijk met hogere toerentallen en doorvoersnelheden en zeer lage prijzen. Terwijl de betrouwbaarheid de afgelopen tien jaar op papier niet is verbeterd en de afgelopen jaren misschien wel is verslechterd.
ZFS kan je helpen om toch een betrouwbare opslag te realiseren ondanks dat de harddisken niet echt betrouwbaar zijn. Het vereist wel wat planning. Onderstaand artikel probeert daarin wat ondersteuning te bieden. Veel lees plezier.
Ook bij het inrichten van je zpool en schijf model selectie moeten wederom afwegingen gemaakt worden:
- netto opslag vs MTTDL
- Kosten vs MTTDL
- Resilver prioriteit tov reguliere io's
Factoren die van invloed zijn
- De opslag grootte van de schijf
- IOPS van de schijf
- UBER van de schijf (niet echt van belang maar enige "officiele" houvast mbt tot betrouwbaarheid)
- MTBF van de schijf (niet echt van belang maar enige "officiele" houvast mbt tot betrouwbaarheid)
- zpool layout en vdev grootte
- De onderliggende data (kleine of grote files)
- De belasting van het systeem
- Model schijf, is de schijf bestemd voor jouw workload?
- De bedrijfscondities van de schijven (hitte, vibratie)
- Hoe oud zijn de schijven?
- Zijn het schijven uit een batch?
- Zijn de schijven vervoerd buiten hun spec's? Oftewel heeft Michael Jordan jouw paketje met schijven in het busje gedunkt?
- backplanes, kabels en hba's kunnen ook fouten veroorzaken of falen maar dat laat ik hier buitenbeschouwing.
Wat ik bedoel met planning is dat je eigenlijk al deze zaken mee moet nemen in je beslissing voor een opslag systeem. Deze lijst ziet misschien wat overweldigend uit maar ik zal proberen wat praktische handvaten aan te reiken om hier toch uit te komen.
Laten we eerst naar een enkele disk kijken. Hier zijn twee failure modes: een UBE of device fault. Bij de device fault is de complete disk kaput, bijv de motor of controller. Het is duidelijk dat je alles kwijt bent. Maar waarom? Was de schijf qua levensduur aan het begin of einde van de badkuip curve? Wat het een slechte batch of model (bijv Deathstar)? Had de schijf transportschade? Was de schijf veel te warm geworden?
"Wat maakt het uit? Alles is weg, toch?" Ja, maar waarom stopte die schijf uitgerekend nu? Want als jij een rijtje van deze schijven in je RAIDZx stopt en ze stoppen allemaal tegelijk dan ben je ondanks je redundancy toch alles kwijt.
Bovengeschetste uitval is lastig te quantificeren. Toch valt het risico met wat planning wel te verminderen, maar later daarover meer.
De fabrikant specificeert een UBER van 10^14 bij low end / consumenten schijven en 10^15 of zelfs 10^16 bij enterprise schijven. Dit betekent gemiddeld 1 foute gelezen bit per UBER gelezen bits. Bij een schijf met een UBER van 10^14 is dat een UBE per 12.5TB gelezen data. Dus als je een twee keer een 6TB helemaal leest is de kans op een UBE niet zo klein meer. Het is geen garantie dat na 12.5TB aan gelezen data je een UBE krijgt. De fabrikant specced alleen dat de kans niet groter is dan 1 op 10^14. Ook moet alleen de gebruikte data in beschouwing worden genomen, niet de bruto opslag capaciteit van de schijf. Als je maar een byte in gebruikt hebt op je schijf een je zou die altijd vanaf media lezen dan zou je dat 12.5 * 10^12 keer kunnen doen voordat je een UBE tegenkomt. Dus een grote lege schijf is wat dat betreft hetzelfde als een kleine volle schijf.
Al zou je de UBE tegen komen bij een enkele schijf met een ZFS erop dan nog is alles niet verloren. Van sommige essentiele data zijn standaard meerdere copieen aanwezig. Je zal waarschijnlijk een file verliezen maar niet zomaar de zpool. Ook hier heeft ZFS nog een optie voor, namelijk zfs set copies=2 [fs] Je gaat dan ook van je data copieen maken. Kom je nu een UBE tegen dan probeer je de andere kopie. Ja, je schijf halveert in netto cappaciteit.
Na wat achtergrond informatie, nu naar de zpool layout. Ik begin met een zpool met een enkele vdev. Er zijn mirror1,mirror2, RAIDZ1, RAIDZ3, RAIDZ3 vdevs. Naast de echte mirror(1) met een enkele pariteit schijf ondersteunt ZFS ook mirror's met twee pariteit schijven. Bij RAIDZn kan je n schijven van p (p>n+1) schijven verliezen zonder gegevens verlies.
De mirror vs RAIDZ afweging is een van performance samen met MTTDL vs opslag capaciteit. Een mirror vdev levert 2 of 3 maal het aantal IOPS van een enkele schijf bij lezen, de reads worden gestriped. Bij een RAIDZ vdev levert worst case het aantal iops van een enkele schijf. Bij streaming reads van een RAIDZ vdev is het minder erg, maar de IOPS en performance schaalt niet zo als bij mirrors.
Omdat de kansen onvoorwaardelijk zijn is de kans min of meer linear met het aantal disks in een vdev. Je hebt een bijv 4x zo grootte kans bij 20 schijven in een enkel RAIDZ1 vdev dan bij 4 RAIDZ1 vdevs met elk 5 schijven.
De keuze van type vdev is een afweging van MTTDL vs netto opslag.
Nu de fysieke schijf. Het ene model is niet het andere. Soms brengt een fabrikant een ramp model uit, een deathstar of die barracuda 7200.11. Maar hoe kom je hier achter? Het korte antwoord is: NIET. Wij hebben simpel weg geen toegang tot de QA van de fabrikant en niet genoeg vergelijkings materiaal om hier uitspraken over te doen. Wat bij de een jaren zonder probleem werkt gaat bij de ander na een half jaar stuk. Dit zijn kansen. Het enige wat iets van houvast bied zijn de BlackBlaze harddisk betrouwbaarheids cijfers. Ja, het zijn statistisch significante samples per model. Mijn bezwaar tegen deze cijfers is dat BlackBlaze een zeer specifieke workload heeft. De schijf wordt eenmalig volgeschreven en daarna incidenteel gelezen. Dat is een specifieke workload, voor diegene hier die eenmalig zijn NAS vol schrijft met films en daarna een uurtje wat per dag een filmpje eraf streamt. Is het zeker waardevol, maar algemeen gebruik is het niet. De betrouwbaarheids cijfers zouden er heel anders uit kunnen zien bij een andere (lees jouw!) workload.
Naast selectie op basis van ervaring zijn er nog enkele zaken die in overweging genomen kunnen worden.
Als eerste de beroemde TLER/ERC of hoe de fabrikant het ook noemt, de tijd die een schijf besteed aan het proberen een lees fout te voorkomen door het opnieuw en opnieuw en .. te lezen. Als dit de enige schijf is dan is het buitengewoon vriendelijk van je schijf dat het je data probeert te redden. Dat dit tijd kost zal je op dat moment weinig kunnen schelen. In je ZFS NAS tijdens normaal bedrijf kan het van vervelend (je film stream hapert/stopt) tot onacceptabel in druk belaste bedrijfsomgeving. Maar op zich geen probleem. Anders is het tijdens resilveren. Op dat moment heb je minder redundancy. Doel is zo snel mogelijk weer de extra redundancy te verkrijgen. Anders gezegd het venster van verminderde bescherming dient zo kort mogelijk te zijn. Als tijdens het resilveren door gebrek aan TLER je minuut per sector aan het proberen bent ipv de normale 14-16 milliseconden dan kan het resilver proces van een lange tijd veranderen in een bijna eeuwigheid. Nogmaals het is geen fout maar het duurt langer. En al die tijd heb je verminderde bescherming en des te langer het duurt des te groter de kans dat zich een probleem met een volgende schijf zich voordoet. Als je schijf aan het proberen gaat is dat vaak niet een enkele sector maar een heel gebied met ellende.
De volgende feature wil ik illustreren aan de hand van deze classic:
Shouting in the Datacenter Vibratie is een niet te verwaarlozen factor. Nu is schreeuwen niet hetzelfde als resonantie maar de gevolgen zijn hetzelfde, de schijf heeft moeite om te tracken. Letwel het gaat om de Rotational Vibration Sensors niet om de valbeveiliging sensor die de koppen intrekt bij een val. Weer is het ontbreken van de vibratie compensatie op zich geen probleem maar het kan de performance tijdens bedrijf alsmede de resilver tijd negatief beinvloeden.
Nu wat subjectieve factoren. "Het waren allemaal schijven uit een batch" Ik denk niet dat er maandag ochtend batches zijn. Fabrikage is een volledige geautomatiseerd proces. Kwaliteits verschillen tussen exemplaren zullen klein zijn. Wat wel kan is dat een doos tijdens transport is gevallen. De doos passeert een aantal partijen voordat hij bij jouw komt. De bulkverpakking van de fabrikant is vaak erg goed. Maar jij krijgt zelfden je schijven in zo'n goede verpakking gelevert. Met pech schuift alles op de bodem van een dun kartonnen doosje. Het grootste risico zit in de handling en transport van de winkel, paket dienst naar jouw toe. Jij koopt 8 drives bij een winkel en daar falen er snel een paar van wordt dan als "slechte batch" bestempeld. Terwijl de drives eigenlijk prima waren.
Temperatuur is ook subjectief. Weer een classic is deze
Google study Daaruit bleek dat hoge temperaturen pas vanaf jaar 2 voor een hogere uitval zorgen. Koeling en airflow kunnen nooit kwaad. Te hoge temperaturen zijn niet goed.
Iets wat ik niet kan onderbouwen met externe cijfers maar wel vermoed is dat met het toenoemen van de capaciteit van de schijfen de complexiteit en gevoeligheid is toegenomen en de betrouwbaarheid is afgenomen. Ik zie veel meer uitval de laatste twee jaar dan daarvoor. Vroeger konden goede modellen jaren mee. Ik zie dat bij de nieuwste generaties niet terug, terwijl ze de dezelfde betrouwbaarheids specificaties hebben als modellen van enkele jaren terug.
Tot slot deelt de fabrikant schijven niet voor niets op in segmenten. Als de fabrikant meent dat een bepaald model bestemd is voor een desktop en jij gaat die toch in een ZFS array opnemen en dan 24x7 gebruiken dan ben je daar natuurlijk vrij in.
Maar als jij het allemaal zo goed weet wat doe je dan hier op tweakers?
Het kiezen van een bepaald model is ook weer een afweging. Wil je een model met meer features of hogere betrouwbaarheid dan betaal je daarvoor.
Tot slot de resilver tijd. Ieder moment dat je zpool in degraded toestand is loop je een risico. Naarmate deze toestand langer aanhoud zal het risico op data verlies toenemen. De duur van de degraded toestand hangt af van een aantal factoren.
- Wanneer begint de resilver actie? Dit wordt bepaald door het moment dat de vervangende schijf beschikbaar komt. En eventuele actie van de admin, soms moet de resilver handmatig gestart worden.
- Hoeveel data moet er geresilverd worden?
- Wat voor soort data moet er geresilverd worden?
- Hoeveel prioriteit krijgt het resilver proces?
Voor een mirror vdev is de resilver tijd behoorlijk gecorreleerd met de snelheid van de schijf en de te resilveren hoeveelheid data. Het is niet zo simpel dat je de tijd kan uitrekenen door de hoeveelheid te resilveren data delen door de gemiddelde snelheid van de schijf. Maar als je een factor toepast komt het grotendeels wel overeen. Mirror vdevs resilveren het snelste, vooral bij druk belaste zpools en de load is veel lager.
Voor een RAIDZ vdev is het wat lastiger te verspellen hoe lang de resilver gaat duren. Het hangt af van de ZFS implementatie, soort data, aantal schijven in het RAIDZ vdev en de zpool load. Maar het kan tussen een paar MB/sec en de gem. snelheid van de nieuwe schijf liggen.
Als je 4TB aan data met 30MB/sec moet resilveren dan kost dat zo'n 36 uur. Al die tijd is het vdev (alle schijven) heel druk. Geen io's is weinig risico maar continu io's is wel een risico. Lange rebuild tijden zijn niet goed voor je MTTDL. Niet alleen de duur maar ook de stress van de continue io's verhogen het risico behoorlijk.
Samenvattend:
Mag je 6TB schijven gebruiken in je zpool? Alles mag.
Is het handig om in een bestelling 6 desktop schijven te kopen van 6TB die door een slam dunkende paket bezorger te laten bezorgen. Vervolgens een zpool te maken met een enkel RAIDZ1 vdev van deze schijven op een mobo met slechts 6 sata poorten. Vervolgens dit snel helemaal vol te copieren met data. Om na deze geslaagde build even met vakantie te gaan. Dat lijkt mij een minder goed plan.
Iedereen moet voor zichzelf uitmaken wat voor schijven en zpool layout hij wil.
Wel heb ik enkele tips en best-practices
- Probeer schijven fysiek af te halen.
- Als het om veel schijven gaat probeer bij verschillende winkels of met enig interval te kopen.
- Gebruik bij drives groter dan 1TB minimaal RAIDZ2 (bij voldoende drives in je vdev)
- Voor efficient gebruik van de ruimte; gebruik dan voldoende schijven in je vdev.
- Meer schijven in een vdev is een hoger risico; splits het vdev of gebruik een betere RAIDZ
- Heb je meerdere vdevs, probeer dan als het even kan een hotspare toe te voegen. Kost wat, maar de schijf slijt niet. Als je weg bent loop je veel minder risico. Bij zes sata poorten is dat misschien wat veel van het goede maar de mensen met bijv 24+bays kunnen eigenlijk niet zonder. Het je een enkel RAIDZ1 of RAIDZ2 vdev kan je ipv de hotspare beter je RAIDZ met 1 verhogen.
- Als je geen hotspare kan of wil plaatsen zorg dan dat je een coldspare hebt liggen. Dat niet op het moment zelf je nog weken moet wachten op een vervanging omdat er een fabriek in Thailand was overstroomd.
- Als er schijf niet volledige defect is maar wel fouten geeft, voeg dan de vervangende schijf toe. Je hebt dan ook nog informatie van de oude schijf.
- Probeer het wisselen en/of toevoegen van een schijf als het maar even kan op een live systeem te doen. Dus niet uitzettten maar eerst de zpool weer in een gezonde toestand brengen. Is dat lastig? Overweeg dan een beter chassis. Het hoeft geen fancy chassis te zijn met echte drive caddies, maar wel zo dat je de schijven eruit kan schroeven of klikken.
- Test je resilver proces. Schrijf je hele zpool vol met realistische data. Dat mogen gedeeltelijk best copieen zijn. Trek een schijf eruit. Meet wat erover blijf van je performance. Misschien is de performance wel zo slecht geworden dat je niet meer naar je stream kan kijken. Pak je coldspare en start het resilver proces. En meet hoelang het duurt, meet de load, test of je nog voldoende preformance overhoud voor je workload.
- Om de badkuip curve tegen te gaan kan je de vdevs over langere tijd plaatsen. Niet in een keer 4 vdevs maar pas als de eerste 60 procent vol is schijven voor de volgende kopen. "Maar .. onbalans..." Je kan een of twee schijven per eerder gemaakt vdev vervangen door je nieuwe schijven. Die nieuwe schijven hebben zich nog niet bewezen maar de rest je bestaande vdevs wel. Door wat nieuwe en oude in een juiste verhouding te mengen kan je hier iets tegen doen. Maar het vereist wel een redelijk aantal schijven voordat het werkt. De onbalans kan je oplossen door de files te herschrijven of door een locale send en receive te doen. YMV. En als een enkel vdev voor jouw genoeg is qua performance dan zou ik me geen zorgen maken over de onbalans. Dit is een procedure voor de liefhebber
- Alle enterprise schijven, ECC memory, RAIDZ3 vdevs bij elkaar zijn nooit zo betrouwbaar als een (offsite) backup. Als bijv je voeding raar doet en een flink overspanning op al je schijven zet ben je nergens met al je mooie spullen
Niks moet (behalve de backup)
Het spijt me dat ik niet een aantal hapklare recepten kan geven maar dat als je bovenstaand verhaal het gelezen en begrepen snap je dat er niet 1 oplossing is. Het is maatwerk. Wel zal ik proberen een beter beeld te krijgen van de verschillende workloads hier en dan kunnen we kijken of we misschien wel enkele aanbevelingen kunnen doen. Ook al betwijfel ik of dat zin heeft. De wensen en budgetten zijn daarvoor te verschillend. Ook zal ik de komende tijd proberen wat performance data te verzamelen om resilver tijden te illustreren.
edit 2 Nav CurlyMo heb ik het hotspare advies aangepast..
[
Voor 8% gewijzigd door
tvwes op 20-04-2015 20:56
]