ZFS / graid5 configuratie - comments?

Pagina: 1
Acties:

  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
Voor mijn storage thuis wil ik iets nieuws gaan bouwen, en ik wil graag gebruik maken van ZFS. Als OS kies ik FreeBSD AMD64, op een dual core AMD3800+ met 3GB ram.

Wat ik in grote lijn wil is: storage met raid5 redundancy die kan groeien.

Na wat experimenteren en proberen ben ik op het volgende uitgekomen:
Met graid5(-pp) maak ik met de eerste 4 1TB schijven een raid5 volume:
graid5 label -v -s 131072 graid5a da0 da1 da2 da3 (mijn os staat op ad0).

Die zet ik dan in een ZFS pool om het makkelijk te beheren en het te kunnen laten groeien:

zpool create bigvol /dev/raid5/graid5a
/bigvol is dan ~3TB groot

Later kan ik dan met nog een set van 4 extra schijven zo'n nieuwe set maken:
graid5 label -v -s 131072 graid5b da4 da5 da6 da7

en die kan in de ZFS pool toegevoegd worden met:
zpool add bigvol /dev/raid5/graid5b
/bigvol is nu ~6TB groot.

Een drive uit een van de graid5 sets vervangen bij defect werkt zonder problemen in simulaties (vmware), ZFS merkt er niets van zolang graid5 genoeg drives in iedere set heeft, maar er kan er dus 1 falen per set.

Ik heb ook alternatieven bekeken natuurlijk. Ik dacht eerst dat het allemaal met ZFS alleen zou moeten kunnen, maar het groei/redundancy aspect gaat dan stuk. Je kan idd heel makkelijk een raidz aanmaken van 4*1TB, maar als je daar later nog een drive bij 'add' dan maakt die niet deel uit van die raidz configuratie, maar staat er los naast. Hij telt wel mee in de storage, maar is dus niet redundant.

Met ZFS een 2e raidz bij een 1e joinen kan ook niet:

vbsd# zpool create tank1 raidz da0 da1 da2 da3
vbsd# zpool create tank2 raidz da4 da5 da6 da7
vbsd# zpool create bigtank tank1
cannot use '/dev/tank1': must be a GEOM provider

Dus, wat vinden jullie van de ZFS / geom_raid5 combo?

Ik weet dat FreeBSD nog wel wat getuned moet worden voor optimaal ZFS etc en dat geom_raid5 nog niet officieel in de release zit, maar ik heb er wel vertrouwen in en wil het proberen.

edit: ik zit behoorlijk verkeerd qua forum zie ik nu.. sorry, er werd zoveel over freebsd, graid5 en zfs gesproken..

  • VisionMaster
  • Registratie: Juni 2001
  • Laatst online: 17-01 14:14

VisionMaster

Security!

Ik had ook wel eens willen experimenteren met ZFS. Maar ik ben zelf vooral linux gewend. Dus het is nogal onwennig voor me om naar FreeBSD te kijken. :)

Zoals ik je alternatief lees, maak je een gestapelde set van zpool. Dus een zpool uit een zpool. En blijkbaar moet het een block device zijn.

In je eerste oplossing zie ik meer heil. Ik gok dat het geheim in het tweede zpool commando zit. Daar heb je je tweede raid5 set toegevoegd, maar AFAIK moet je nog expliciet duidelijk maken aan je pool dat dit data redundantie moet toevoegen aan de pool ipv een platte toevoeging (zoals met een eenvoudige uitbreiding eenvoudig block device uitbreiding met LVM). Bij LVM moet je ook aangeven dat iets een uitbreiding, striped toevoeging is, of een mirror.

Ik gok dat je voor ZFS ook zoiets moet vertellen hoe je zpool is samengesteld.

I've visited the Mothership @ Cupertino


  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
Een raidz array kan (nog) niet groeien met extra disks, maar je kunt zeker wel een extra raidz array maken en toevoegen aan je zpool. Je kunt geen zpools 'stacken' zoals jij probeert, je zpool moet je zien als een grote tank met al je providers. Je moet even kijken naar de exacte syntax, ik heb nog niet genoeg gewerkt met zfs dat ik dat zo uit de mouw slinger. als je een zpool met een bestaande raidz array hebt en je voegt er een tweede aan toe zal ZFS als het goed is vanzelf gaan stripen tussen de arrays.
Wat ook kan is 1 voor 1 alle disks (hot)swappen voor een grotere disk en rebuilden. Als de laatste disk toegevoegd is neemt zfs automatisch de extra ruimte van de provider. Als je de disks raw gebruikt hoef je niets te doen, als je een slice gebruikt zul je deze even moeten aanpassen met bsdlabel oid. Of met gpart als je al GPT gebruikt (aanrader!)

Mijn storage plannen voor mijn komende nas build behoeven geen raid[5,z], ik mirror gewoon 2 disks.
Ik gebruik dan geom_mirror voor de swap (swap wil je niet in een ZVOL omdat juist met weinig free mem ZFS gaat bokken, en je dan ook niet meer je swap kunt benaderen) en een zpool met mirror. Bij een eventuele crash gaat rebuilden (resilveren) van raidz of zfs mirror veel sneller dan raid5/geom_mirro omdat zfs op fileniveau kijkt en niet op bitniveau. Alleen de daadwerkelijke files worden gecontroleerd. Dat scheelt een hoop tijd.

Gek genoeg komt freebsd vooral ter sprake in het NAS topic, eigenlijk verdient het meer aandacht in non-win systems subforum :)

[ Voor 27% gewijzigd door P5ycho op 04-01-2009 07:59 ]

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
edit:
ISaFeeliN schreef op zaterdag 03 januari 2009 @ 19:35:
Met ZFS een 2e raidz bij een 1e joinen kan ook niet:

vbsd# zpool create tank1 raidz da0 da1 da2 da3
vbsd# zpool create tank2 raidz da4 da5 da6 da7
vbsd# zpool create bigtank tank1
cannot use '/dev/tank1': must be a GEOM provider
code:
1
2
vbsd# zpool create tank raidz da0 da1 da2 da3 #(er is maar 1 zpool!)
vbsd# zpool add rpool raidz da4 da5 da6 da7

Dat zou je een zpool met 2 raidz rpools moeten opleveren.
code:
1
vbsd# zpool create tank raidz da0 da1 da2 da3 raidz da4 da5 da6 da7

Hetzelfde, maar dan in 1 keer.

rpool: raid provider bestaande uit een aantal disks in mirror, raidz, of raidz2
zpool: grote bak met storage providers.(elke rpool is dus 1 provider). data wordt dynamisch over alle providers gestriped.
damn, per ongeluk een nieuwe post aangemaakt.

[ Voor 3% gewijzigd door P5ycho op 04-01-2009 11:51 ]

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
code:
1
2
vbsd# zpool create tank raidz da0 da1 da2 da3 #(er is maar 1 zpool!)
vbsd# zpool add rpool raidz da4 da5 da6 da7


dat had ik nog niet geprobeerd, ga ik vandaag even doen. thanks!

  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
ISaFeeliN schreef op zondag 04 januari 2009 @ 09:45:
code:
1
2
vbsd# zpool create tank raidz da0 da1 da2 da3 #(er is maar 1 zpool!)
vbsd# zpool add rpool raidz da4 da5 da6 da7


dat had ik nog niet geprobeerd, ga ik vandaag even doen. thanks!
nice, dit werkt idd! alleen je laatste regel is wel fout, het moet zijn:

zpool add tank1 raidz da4 da5 da6 da7
(de tank1 was aangemaakt met 'zpool add tank1 raidz da0 da1 da2 da3')

Nu heb ik dan:

vbsd# zpool iostat -v
capacity operations bandwidth
pool used avail read write read write
---------- ----- ----- ----- ----- ----- -----
tank1 183K 63.5G 0 0 2 74
raidz1 146K 31.7G 0 0 2 70
da0 - - 0 0 8 179
da1 - - 0 0 14 179
da2 - - 0 0 14 178
da3 - - 0 0 14 176
raidz1 37K 31.7G 0 0 0 2.65K
da4 - - 0 2 6.18K 131K
da5 - - 0 2 6.18K 131K
da6 - - 0 2 6.18K 131K
da7 - - 0 2 6.18K 130K
---------- ----- ----- ----- ----- ----- -----

Nice. Thanks!

  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
Geen probleem :)
zoals je ziet is mijn kennis van ZFS ook nog niet helemaal 100%.
Aangezien FreeBSD 7.1 uit is ga ik morgen maar eens beginnen aan het bouwen van m'n vernieuwde NAS, daar gaat ook ZFS op gebruikt worden, met GPT.

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16-02 11:13

voodooless

Sound is no voodoo!

Het adden van drives aan een zpool zorgt ervoor dat de drives als stipe gaat fungeren. Wil je de toevoeging dus redundant blijven zal die dus zelf ook redundant moeten zijn, kortom: of een mirror, of een raidz(2) config. Je data wordt dan automatisch over de nieuwe stripe herverdeeld.

Overigens zitten er nog wel wat haken aan zfs op freeBSD. Zo zou het bijvoorbeeld onder hoge load niet erg stabiel zijn (of is dat ondertussen opgelost?). Ik zou dus zeggen, wil je ZFS, neem dan Solaris.

[ Voor 39% gewijzigd door voodooless op 04-01-2009 12:17 ]

Do diamonds shine on the dark side of the moon :?


  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
voodooless schreef op zondag 04 januari 2009 @ 12:14:
Het adden van drives aan een zpool zorgt ervoor dat de drives als stipe gaat fungeren. Wil je de toevoeging dus redundant blijven zal die dus zelf ook redundant moeten zijn, kortom: of een mirror, of een raidz(2) config. Je data wordt dan automatisch over de nieuwe stripe herverdeeld.

Overigens zitten er nog wel wat haken aan zfs op freeBSD. Zo zou het bijvoorbeeld onder hoge load niet erg stabiel zijn (of is dat ondertussen opgelost?). Ik zou dus zeggen, wil je ZFS, neem dan Solaris.
Jep ik weet het, maar ik wil het toch gaan proberen. De officiele release van 7.1 FreeBSD zou de 6e moeten komen, maar de ISO images voor AMD64 staan al op de ftp servers, daar ben ik nu mee aan het spelen. Hoewel in 7.1 nog steeds gewaarschuwd wordt dat het 'marked as experimental' is, zijn er toch al heel wat mensen die het in produktie gebruiken en laaiend zijn over de resultaten en gebruiksgemak en natuurlijk de recovery van ellende (spontane reboots etc).

Er wordt iig. aangeraden 64-bits te draaien (dat ga ik dan maar doen, wat maakt dat ook uit eigenlijk), en genoeg geheugen te hebben. Er zit nu 1.5GB in die machine, maar ik zet er gewoon nog 1.5 of 2 bij en dan kan ik ZFS flink wat geheugen geven en zou het prima moeten werken.

Uiteraard blijven de backups op een conventionelere UFS raid5 (Adaptec controller) set gewoon doordraaien :-)

  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
voodooless schreef op zondag 04 januari 2009 @ 12:14:
Het adden van drives aan een zpool zorgt ervoor dat de drives als stipe gaat fungeren. Wil je de toevoeging dus redundant blijven zal die dus zelf ook redundant moeten zijn, kortom: of een mirror, of een raidz(2) config. Je data wordt dan automatisch over de nieuwe stripe herverdeeld.
als je een volledig redundante zpool hebt en er een single drive aan toevoegt als dataschijf, word je gewaarschuwd voor dit effect.

Je wilt graag AMD64 draaien en veel geheugen in je bak hebben. Geheugen kost geen drol meer, en er is ondertussen aardig wat keus in 64bits CPU's, ook in het low power/low budget segment.

In FreeBSD 8-current zijn een hoop van de problemen al opgelost en en is ZFS versie 13 al geimplenteerd (FBSD7.x draait ZFS 6).

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
P5ycho schreef op zondag 04 januari 2009 @ 12:59:
[...]

als je een volledig redundante zpool hebt en er een single drive aan toevoegt als dataschijf, word je gewaarschuwd voor dit effect.

Je wilt graag AMD64 draaien en veel geheugen in je bak hebben. Geheugen kost geen drol meer, en er is ondertussen aardig wat keus in 64bits CPU's, ook in het low power/low budget segment.

In FreeBSD 8-current zijn een hoop van de problemen al opgelost en en is ZFS versie 13 al geimplenteerd (FBSD7.x draait ZFS 6).
Jep ik ga AMD64 draaien en prop het moederbord (A8N-E met X2 3800+) 'vol' met 4GB memory. Dat en de disks zijn zojuist besteld, dus ik ga ergens komend volgende week beginnen met de bouw ervan.

Ondertussen zal ik mijn 7.1-RELEASE eens upgraden naar 8-CURRENT en eens koekeloeren.

  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
Hoef er natuurlijk niet ij te zeggen dat 8-current draaien niet verstandig is in 'produktie' :)
Post wat resultaten als je nieuwe ervaringen opdoet, altijd leuk om te volgen.

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
P5ycho schreef op zondag 04 januari 2009 @ 07:54:
[..]
Wat ook kan is 1 voor 1 alle disks (hot)swappen voor een grotere disk en rebuilden. Als de laatste disk toegevoegd is neemt zfs automatisch de extra ruimte van de provider. Als je de disks raw gebruikt hoef je niets te doen, als je een slice gebruikt zul je deze even moeten aanpassen met bsdlabel oid. Of met gpart als je al GPT gebruikt (aanrader!)
Dit zie ik dus niet werken..

in vmware testen (in 8-CURRENT):
zpool create tank raidz da13 da12 da11 da10

(dit zijn 'schijven' van 1.1GB per stuk)
vbsd# df -h /tank/
Filesystem    Size    Used   Avail Capacity  Mounted on
tank          3.2G      0B    3.2G     0%    /tank

Dan vervang ik de schrijven door exemplaren van 8GB per stuk
zpool replace tank da10 da3
zpool replace tank da11 da4
zpool replace tank da12 da5
zpool replace tank da13 da6

vbsd# df -h /tank/
Filesystem    Size    Used   Avail Capacity  Mounted on
tank          3.2G      0B    3.2G     0%    /tank

Doe ik iets fout?

  • P5ycho
  • Registratie: Januari 2000
  • Laatst online: 14:07
die schijf waar je die VM op draait zal het er wel moeilijk mee hebben :P

http://mail.opensolaris.o...2005-November/029698.html

zo zou het moeten werken inderdaad.

Ik zie je ook geen slices gebruiken, dus zou ZFS meteen moeten zien dat de tank kan groeien. Als je slices gebruikt moet je de slice ook even groter maken, maar dan zou je da10s1 moeten toewijzen ipv da10.

De oplossing:
Expanding Multi-Disk vdevs

A nice feature of the raidz vdev (and, I assume, the mirror vdev, though I have not personally tested it) is that if you increase the size of the smallest block device (by replacing it) the whole vdev size will increase to fill that space. In order to see this expansion, however, you must export and re-import the zpool (actually it might work by just taking it offline also...).

12x 280Wp ZW, 12x 280Wp ZO, Zubadan SHW80YAA 8kW, Zehnder Q450 ERV


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 16-02 11:13

voodooless

Sound is no voodoo!

Wat je moet doen is gewoon een nieuw array maken van je 8 GB disks, deze aan de pool toevoegen, en dan het oude array weghalen. ZFS zal dan zelf de data migreren.

Do diamonds shine on the dark side of the moon :?


  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
P5ycho schreef op maandag 05 januari 2009 @ 10:18:
die schijf waar je die VM op draait zal het er wel moeilijk mee hebben :P

http://mail.opensolaris.o...2005-November/029698.html
Ziet er duidelijk uit, exact zo geprobeerd, maar nada:

ls -lh /test/disk1 /test/disk2 /test/disk3 /test/disk4
-rw-r--r-- 1 root root 98M 2009-01-05 11:42 /test/disk1
-rw-r--r-- 1 root root 98M 2009-01-05 11:42 /test/disk2
-rw-r--r-- 1 root root 98M 2009-01-05 11:42 /test/disk3
-rw-r--r-- 1 root root 98M 2009-01-05 11:42 /test/disk4

zpool create -f pool raidz /test/disk1 /test/disk2 /test/disk3 /test/disk4

zpool list pool
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool   372M   135K   372M     0%  ONLINE  -

ls -lh /test/disk5 /test/disk6 /test/disk7 /test/disk8
-rw-r--r-- 1 root root 196M 2009-01-05 11:42 /test/disk5
-rw-r--r-- 1 root root 196M 2009-01-05 11:42 /test/disk6
-rw-r--r-- 1 root root 196M 2009-01-05 11:42 /test/disk7
-rw-r--r-- 1 root root 196M 2009-01-05 11:42 /test/disk8

zpool replace pool /test/disk1 /test/disk5
zpool replace pool /test/disk2 /test/disk6
zpool replace pool /test/disk3 /test/disk7
zpool replace pool /test/disk4 /test/disk8

zpool list pool
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool   372M   162K   372M     0%  ONLINE  -

  • ISaFeeliN
  • Registratie: November 2005
  • Laatst online: 12:57
Ik ben d'r uit, zo werkt het wel:

(disk1-4 zijn 100MB, disk5-8 zijn 200MB)


# zpool create pool raidz /test/disk1 /test/disk2 /test/disk3 /test/disk4
# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool   372M   135K   372M     0%  ONLINE  -

# zpool replace pool /test/disk1 /test/disk5
# zpool replace pool /test/disk2 /test/disk6
# zpool replace pool /test/disk3 /test/disk7
# zpool replace pool /test/disk4 /test/disk8
# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool   372M   162K   372M     0%  ONLINE  -


Maar dan doe je:

# zpool export pool
# zpool list
no pools available


..dat is even schrikken, maar dan:

# zpool import -d /test/ pool
# zpool list
NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
pool   762M   183K   762M     0%  ONLINE  -
Pagina: 1