Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tux:zfs_raid-z [2012/10/18 15:18]
wikisysop angelegt
tux:zfs_raid-z [2012/10/18 17:21] (aktuell)
wikisysop [»RAID-Z Pools« anlegen]
Zeile 1: Zeile 1:
 [[:tux|{{ :​linux.png?​40|}}]] [[:tux|{{ :​linux.png?​40|}}]]
 =====ZFS RAID-Z Pool erstellen und verwalten===== =====ZFS RAID-Z Pool erstellen und verwalten=====
-ZFS >>​RAID-Z<<​ Pools sind neben den [[:​tux:​zfs_mirror|»ZFS Mirror Pools«]] eine weitere Möglichkeit die Datenintegrität und Verfügbarkeit auch beim Ausfall einer oder sogar mehrerer Platten zu gewährleisten. Das Prinzip ist das gleiche wie bei konventionellen RAID-Systemen,​ hier wird zu den Daten eine Parität ermittelt und sowohl die Daten, wie auch die Parität werden so auf den Platten verteilt, dass beim Fehlen der Informationen auf einer Platte (RAID-5) oder mehreren Platten ( ≥ RAID-6) aus den verbliebenen Informationen die fehlende Information restauriert werden kann. +ZFS >><fc #008000>RAID-Z</fc><< Pools sind neben den __[[:​tux:​zfs_mirror|»ZFS Mirror Pools«]]__ eine weitere Möglichkeit die Datenintegrität und Verfügbarkeit auch beim Ausfall einer oder sogar mehrerer Platten zu gewährleisten. Das Prinzip ist das gleiche wie bei konventionellen RAID-Systemen((http://​de.wikipedia.org/​wiki/​RAID)), hier wird zu den Daten eine Parität ermittelt und sowohl die Daten, wie auch die Parität werden so auf den Platten verteilt, dass beim Fehlen der Informationen auf einer Platte (RAID-5) oder mehreren Platten ( ≥ RAID-6) aus den verbliebenen Informationen die fehlende Information restauriert werden kann. 
- +====Grundsätzliches==== 
-Vereinfacht,​ kann man sich das Paritätsschema folgendermaßen anhand einer >>​ungeraden Kreuzparität<<​ vorstellen+Vereinfacht,​ kann man sich das Paritätsschema folgendermaßen ​zB anhand einer >>​ungeraden Kreuzparität<<​ vorstellen:
  
 <​code>​ <​code>​
Zeile 13: Zeile 13:
 </​code>​ </​code>​
  
-Die erste Zeile ''>>​0 0 1 0 1 1 0 0<<''​ repräsentieren hierbei die Daten auf einer Platte und die abschließende ''​ >>​1<<''​ ergibt sich als Parität durch die ungerade Anzahl der Einsen in den Daten. Die letzte Zeile (unter der gestrichelten Linie) ergibt sich wiederum aus der Anzahl der Einsen in den Datenblöcken darüber. Eine Eins bei einer ungeraden Anzahl Einsen, eine Null bei einer geraden Anzahl Einsen (wobei Null Einsen als gerade Anzahl gewertet wird) Fällt nun zB die erste Platte aus, können aus den verbliebenen Daten die verlorenen Daten der ersten Platte rekonstruiert werden.+Die erste Zeile ''>>​0 0 1 0 1 1 0 0<<''​ repräsentieren hierbei die Daten auf einer Platte und die abschließende ''​ >>​1<<''​ ergibt sich als Parität durch die ungerade Anzahl der Einsen in den Daten. Die letzte Zeile (unter der gestrichelten Linie) ergibt sich wiederum aus der Anzahl der Einsen in den Datenblöcken darüber. Eine Eins bei einer ungeraden Anzahl Einsen, eine Null bei einer geraden Anzahl Einsen (wobei Null Einsen als gerade Anzahl gewertet wird) Fällt nun zB die erste Platte aus, können aus den verbliebenen Daten die verlorenen Daten der ersten Platte rekonstruiert werden. ​In der Praxis laufen diese Vorgänge zwar wesentlich komplexer ab aber im Prinzip läuft das nach diesem Schema ab. 
 + 
 +Die heute gebräuchlichsten paritäts-basierten RAID-Level sind >><​fc #​008000>​RAID-5</​fc><<​ und >><​fc #​008000>​RAID-6</​fc><<,​ wobei bei einem >><​fc #​008000>​RAID-5</​fc><<​ eine Platte und bei einem >><​fc #​008000>​RAID-6</​fc><<​ zwei Platten des RAID-Verbunds ausfallen können, ohne das Daten verloren gehen. Bei einem ZFS-RAID entspricht ein >><​fc #​008000>​raidz1</​fc><<​ (>><​fc #​008000>​single-parity</​fc><<​) einem >>​RAID-5<<​ und ein >><​fc #​008000>​raidz2</​fc><<​ einem >><​fc #​008000>​RAID-6</​fc><<​ (>><​fc #​008000>​double-parity</​fc><<​). ZFS stellt darüber hinaus ein >><​fc #​008000>​raidz3</​fc><<​ (>><​fc #​008000>​triple-parity</​fc><<​) zur Verfügung, wo man den Ausfall einer dritten Platte ohne Datenverlust hinnehmen kann.  
 + 
 +Der Hauptunterschied zu klassischen RAID-Systemen liegt bei RAID-Z in der Vermeidung des >><​fc #​008000>​write-holes</​fc><<,​ welches entsteht wenn Daten und Prüfsummen (Paritäten) noch nicht vollständig auf die Platten geschrieben wurden und es während diesen Vorgangs zu einem Systemausfall kommt. In so einem Fall sind die Daten auf dem RAID-System nicht konsistent und idR unbrauchbar. ZFS macht sich hier ihr [[:​tux:​zfs_copy-on-write|»Copy-On-Write« (CoW)]] zunutze, wo eine Schreibaktion erst dann als abgeschlossen gilt, wenn alle Teil-Vorgänge (zB das Errechnen und Schreiben der Prüfsumme etc) ebenfalls abgeschlossen sind. Da ZFS vorhandene Daten nicht überschreibt sondern zuerst eine Kopie des zu bearbeitenden Blocks anlegt und dort dann die Änderungen vornimmt, kann bei einem fehlerhaften oder unterbrochenen Schreibvorgang jederzeit auf die alten Daten zurückgegriffen werden. So verfährt ZFS generell, dass ist kein Merkmal nur der ZFS-RAID Komponenten. 
 + 
 +====»RAID-Z Pools« anlegen==== 
 +Für einen >>​RAID-Z<<​ Verband benötigt man mindestens zwei Platten, wobei ein solches sinnvoll aber erst mit mindesten drei Platten betrieben werden kann. Jede weitere Platte im Verbund erhöht dabei die Performance des Gesamtverbundes,​ weil sich zB Schreibzugriffe auf die Anzahl der Platten verteilt und mit jeder Platte im Verband mehr parallele Schreibzugriffe möglich sind. 
 + 
 +Legen wir also ein RAID-Z1 Pool >>​tank<<​ mit drei Festplatten an: 
 + 
 +<​xterm>#​ <fc #​008000>​zpool create -f tank raidz1 /dev/sdb /dev/sdc /​dev/​sdd</​fc></​xterm>​ 
 + 
 +<​xterm>#​ <fc #​008000>​zfs list</​fc>​ 
 +NAME   ​USED ​ AVAIL  REFER  MOUNTPOINT 
 +tank   ​115K ​ 1,94G  38,6K  /​tank</​xterm>​ 
 + 
 +Wir sehen in der Ausgabe des >><​fc #​008000>​zfs list</​fc><<​ Kommandos zB die totale Kapazität des RAID-Z Pools >><​fc #​008000>​tank</​fc><<,​ welche um die Größe einer Platte dezimiert wurde. Der Verband besteht aus drei 1GiB Platten und hat eine Kapazität von knappe 2GiB. __Die Gesamtkapazität eines RAID-Z1 Pools wird immer um die Kapazität einer Festplatte reduziert (single-parity)__. 
 + 
 +Bei einem >><​fc #​008000>​double-parity</​fc><<​ basierten RAID-Z Pools, fehlen bei der Gesamtkapazität dann die Summe der Kapazitäten von zwei Platten, bei einer >>​triple-parity<<​ dann analog dazu drei Platten: 
 + 
 +  * **>>​double-parity<<:​**\\ <​xterm>#​ <fc #​008000>​zpool create -f tank raidz2 /dev/sdb /dev/sdc /dev/sdd /​dev/​sde</​fc></​xterm>​ <​xterm>#​ <fc #​008000>​zfs list</​fc>​ 
 +NAME   ​USED ​ AVAIL  REFER  MOUNTPOINT 
 +tank   ​111K ​ 1,93G  43,3K  /​tank</​xterm>​ 
 +  * **>>​triple-parity<<:​**\\ <​xterm>#​ <fc #​008000>​zpool create -f tank raidz3 /dev/sdb /dev/sdc /dev/sdd /​dev/​sde</​fc></​xterm>​ <​xterm>#​ <fc #​008000>​zfs list</​fc>​ 
 +NAME   ​USED ​ AVAIL  REFER  MOUNTPOINT 
 +tank  76,5K   ​976M ​   30K  /​tank</​xterm>​ 
 +====»RAID-Z Pools« erweitern==== 
 +Einem RAID-Z Pool können ebenso einfach weitere Platten während der Laufzeit hinzugefügt werden, wie in den anderen ZFS-Konzepten >>​Simple-Pool<<​ und >>​Mirror-Pool<<:​ 
 + 
 +<​xterm>#​ <fc #​008000>​zpool status tank</​fc>​ 
 +  pool: tank 
 + ​state:​ ONLINE 
 + scan: none requested 
 +config: 
 + 
 + NAME        STATE     READ WRITE CKSUM 
 + tank        ONLINE ​      ​0 ​    ​0 ​    0 
 +   raidz1-0 ​ ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdd     ​ONLINE ​      ​0 ​    ​0 ​    0 
 + 
 +errors: No known data errors</​xterm><​xterm>#​ <fc #​008000>​zpool add -f tank raidz1 /dev/sde /​dev/​sdf</​fc></​xterm><​xterm>#​ <fc #​008000>​zpool status tank</​fc>​ 
 +  pool: tank 
 + ​state:​ ONLINE 
 + scan: none requested 
 +config: 
 + 
 + NAME        STATE     READ WRITE CKSUM 
 + tank        ONLINE ​      ​0 ​    ​0 ​    0 
 +   raidz1-0 ​ ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdd     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +   raidz1-1 ​ ONLINE ​      ​0 ​    ​0 ​    0 
 +     sde     ​ONLINE ​      ​0 ​    ​0 ​    0 
 +     sdf     ​ONLINE ​      ​0 ​    ​0 ​    0 
 + 
 +errors: No known data errors</​xterm>​ 
 + 
tux/zfs_raid-z.1350566332.txt.gz (17869 views) · Zuletzt geändert: 2012/10/18 15:18 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0