Sonic schreef op dinsdag 15 maart 2011 @ 09:58:
Dit werkt zo perfect samen! Ik heb via Nexentastor een ZFS pool aangemaakt waar de 2TB schijf inzit die ik via CIFS aanbied aan mijn netwerk. Nu wil ik graag mijn ZFS pool uitbreiden met twee of drie extra schijven.
..
Een nadeel van ZFS is volgens mij dat je niet gemakkelijk je storage kan uitbreiden met extra schijven, maar wellicht dat hier toch wat slims voor te bedenken is. Het doel is om straks 4 tot 5 2TB schijven in de server te stoppen die ik als een Raid 5 (RAID-Z) opstelling wil configureren.
Heb je de mirror via Areca of ZFS aangemaakt? Dat is nogal een verschil.
Indien bij ZFS: je kunt gewoon een mirror toevoegen, zelfs een single disk:
zpool add <pool> <newdisk>
mirror toevoegen:
zpool add <pool> mirror <newdisk1> <newdisk2>
Bij dit laatste voorbeeld heb je dus een RAID1+0 met 4 disks uiteindelijk. Je bestaande data blijft behouden. Je kunt een mirror naar single disk veranderen en single disk naar mirror, maar je kunt niet naar RAID-Z wisselen (reshapen).
HarmoniousVibe schreef op dinsdag 22 maart 2011 @ 14:46:
Wat je hier zegt klopt toch echt niet. Het is inderdaad waar dat een reshape erg lang kan duren. Echter is je array niet degraded tijdens deze reshape. Oftewel, met raid 5 kan er nog steeds gewoon 1 HDD falen en met raid 6 2 HDD's.
Ga het maar proberen, reshapen en dan één disk eruit trekken. Ik denk dat de meeste controllers op dat moment het voor gezien houden. Maar je hebt gelijk, slimme firmware zou de array dan consistent kunnen houden of juist weer terug reshapen afhankelijk van welke disk uitvalt. Maar als je reboot, wat voor configuratie heb je dan als je midden in een rebuild bent gestopt met één originele disk kwijt? Als je RAID op dat moment de nieuwe disk als volwaardige disk ziet, heb je dus al corruptie omdat het verwacht dat deze disk juist data bevat terwijl dat alleen aan het begin is en niet aan het einde van de capaciteit, waar de reshape is opgehouden.
Kortom, afhankelijk van de controller kun je dus in de problemen komen als er tijdens de reshape iets fout gaat. Bad sector die een schijf eruit gooit (non-TLER disks) bijvoorbeeld. Dat hoeft allemaal niet meteen te betekenen dat je data weg en unrecoverable is. Maar wel dat je aan je lot wordt overgelaten en het zelf mag uitzoeken.
Mogelijk zie je dus veel verschil tussen verschillende implementaties die reshape implementeren, afhankelijk van hoe goed hun error recovery is tijdens de reshape.
Bottom line: ik zou het risico niet nemen, zonder een backup van je data. En als je die backup hebt is het mogelijk sneller om niet te reshapen maar gewoon een nieuwe array aan te maken en de data van de backup terug te gooien. Al zal dat ook wel een lange tijd duren met gigabit.
Bovendien, volgens mij is het zo wat ZFS doet een aanmaken van een nieuwe array en deze spannen met de bestaande 'arrays'/vdevs. Dat kan MDADM/LVM ook in een fractie van een seconde. Dát is het scenario wat je moet vergelijken met ZFS.
Spannen is wat anders dan stripen, bij spanning komt er geen performancevoordeel, bij striping wel. ZFS kan sommige data over 2 disks en andere data over 3 disks stripen. Stel je begint met een enkele RAID-Z en zet er wat data op, dan voeg je een 2e RAID-Z toe en schrijft er weer data naar. In dit voorbeeld staat de eerste data op de 1e RAID-Z en de tweede data op beide RAID-Zs en zal dus in theorie ook dubbel zo snel gaan qua throughput.
Reshapen daarentegen kan in ZFS niet en in MDADM wel, alleen duurt het lang. Dát is de manier waarop je het moet vergelijken.
Ik zou het eerder zo vergelijken:
Traditioneel RAID dwingt je om de redundancy te verzwakken bij expanden; je mag immers geen nieuwe parity disks toevoegen. Dit is dus zowel een voordeel als een nadeel.
ZFS dwint je om de redundancy te versterken door iedere keer dat je disks toevoegt ook parity/mirror disks toe te voegen. Dus is dus ook zowel een voordeel als een nadeel.
Overigens hoeft het niet persé; je kunt ook een single disk toevoegen en dus stripen met bestaande RAID-Z. Maar dat lijkt me niet erg praktisch. Het voordeel van de ZFS methode is dus dat je:
1) veilig kunt expanden, zonder enkel risico.
2) direct vrije ruimte beschikbaar krijgt, geen background I/O.
3) de redundancy van je pool kunt handhaven door redundancy disks toe te voegen en zo het redundancy-niveau op pijl te houden.
4) kunt wisselen met capaciteit van je disks; nu gebruik je 2TB maar later misschien 4TB.
5) kunt wisselen van RAID configuratie (RAID-Z met 6 disks expanden met 10-disk RAID-Z2)
Het voordeel van traditioneel RAID expansion is dan weer dat je RAID5 of 6 kunt uitbreiden met enkele disks zonder parity toe te voegen en dus maximale capaciteitverhoging krijgt.
Zoals alles in het leven, elke keuze heeft zijn eigen afwegingen, voordelen en nadelen.