Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

tux:zfs_mirror [2012/10/15 16:02]
wikisysop [ZFS Mirror Pool einrichten]
tux:zfs_mirror [2012/10/16 12:42] (aktuell)
wikisysop [ZFS Mirror Pool erstellen und verwalten]
Zeile 1: Zeile 1:
 [[:tux|{{ :​linux.png?​40|}}]] [[:tux|{{ :​linux.png?​40|}}]]
-=====ZFS Mirror Pool einrichten=====+=====ZFS Mirror Pool erstellen und verwalten=====
  
-Im Gegensatz zu einem [[:​tux:​zfs_simple_pool|ZFS Simple Pool]] bietet ein >><​fc #​008000>​ZFS Mirror Pool</​fc><<​ durch die Spiegelung Redundanz und somit Ausfallsicherheit. In einem klassischen Setup ist dieses Konzept mit einem >><​fc #​008000>​RAID-1</​fc><<​ vergleichbar. Ein ZFS Mirror Pool ist im Prinzip genau so einfach zu erstellen, wie ein ZFS Simple Pool, jedoch sind dafür logischerweise mindestens zwei Platten erforderlich. Die Entwickler von ZFS gehen sogar soweit, dass sie sagen, dass es sinnvoll ist die beiden Platten an jeweils einen Controller zu betreiben. Das hat den Hintergedanken,​ dass auch ein Ausfall eines Controllers den Betrieb der anderen Platte am anderen Controller und somit des ganzen Systems sicherstellt.+Im Gegensatz zu einem [[:​tux:​zfs_simple_pool|ZFS Simple Pool]] bietet ein >><​fc #​008000>​ZFS Mirror Pool</​fc><<​ durch die Spiegelung Redundanz und somit Ausfallsicherheit. In einem klassischen Setup ist dieses Konzept mit einem >><​fc #​008000>​RAID-1</​fc><<​ vergleichbar. Ein ZFS Mirror Pool ist im Prinzip genau so einfach zu erstellen, wie ein ZFS Simple Pool, jedoch sind dafür logischerweise mindestens zwei Platten erforderlich, es können aber auch drei oder mehr Platten sein. Die Entwickler von ZFS gehen sogar soweit, dass sie sagen, dass es sinnvoll ist die beiden Platten an jeweils einen Controller zu betreiben. Das hat den Hintergedanken,​ dass auch ein Ausfall eines Controllers den Betrieb der anderen Platte am anderen Controller und somit des ganzen Systems sicherstellt.
  
 Um einen Mirror Pool zu erstellen gehen Sie wie folgt vor: Um einen Mirror Pool zu erstellen gehen Sie wie folgt vor:
Zeile 26: Zeile 26:
 <note important>​**<​fc #​800000>​Note</​fc>:​** Bei der Auswahl der Platten ist zu beachten, dass idealerweise gleich große und gleich schnelle Platten verwendet werden. Dabei ist zu berücksichtigen,​ dass zB eine 500GB Platte eines Herstellers von der Größe her nicht zwingend mit einer 500GB Platte eines anderen Herstellers übereinstimmt. Ein fehlendes MB kann beim Auswechseln einer defekten Platte das Vorhaben zum Scheitern verurteilen.</​note>​ <note important>​**<​fc #​800000>​Note</​fc>:​** Bei der Auswahl der Platten ist zu beachten, dass idealerweise gleich große und gleich schnelle Platten verwendet werden. Dabei ist zu berücksichtigen,​ dass zB eine 500GB Platte eines Herstellers von der Größe her nicht zwingend mit einer 500GB Platte eines anderen Herstellers übereinstimmt. Ein fehlendes MB kann beim Auswechseln einer defekten Platte das Vorhaben zum Scheitern verurteilen.</​note>​
  
-Erstellen wir uns für die weiteren Schritte mal eine 1GB große, im Prinzip aber leere Testdatei:+Erstellen wir uns für die weiteren Schritte mal eine 512MiB ​große Testdatei:
  
 <​xterm>#​ <fc #​008000>​dd if=/​dev/​zero of=/​tank/​big_test_file.img bs=1M count=512</​fc>​ <​xterm>#​ <fc #​008000>​dd if=/​dev/​zero of=/​tank/​big_test_file.img bs=1M count=512</​fc>​
Zeile 40: Zeile 40:
 NAME   ​USED ​ AVAIL  REFER  MOUNTPOINT NAME   ​USED ​ AVAIL  REFER  MOUNTPOINT
 tank   ​513M ​  ​463M ​  ​512M ​ /​tank</​xterm>​ tank   ​513M ​  ​463M ​  ​512M ​ /​tank</​xterm>​
 +
 +<​xterm>#​ <fc #​008000>​zpool list</​fc>​
 +NAME   ​SIZE ​ ALLOC   ​FREE ​   CAP  DEDUP  HEALTH ​ ALTROOT
 +tank  1008M   ​513M ​  ​495M ​   50%  1.00x  ONLINE ​ -</​xterm>​
 +
 +Wir können eine Platte aus dem Mirror Pool entnehmen:
 +
 +<​xterm>#​ <fc #​008000>​zpool detach tank /​dev/​sdc</​fc></​xterm>​
 +
 +Und unser Mirror Pool hat sich selbst zu einem Simple Pool degradiert:
 +
 +<​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
 +   sdb       ​ONLINE ​      ​0 ​    ​0 ​    0
 +
 +errors: No known data errors</​xterm>​
 +
 +Aber unsere Daten sind nach wie vor vorhanden:
 +
 +<​xterm>#​ <fc #​008000>​ls -l /​tank</​fc>​
 +insgesamt 524366
 +-rw-r--r-- 1 root root 536870912 14. Okt 09:24 big_test_file.img</​xterm>​
 +
 +Durch folgenden Befehl können Sie die Platte (oder jede andere) dann wieder hinzufügen:​
 +
 +<​xterm>#​ <fc #​008000>​zpool attach -f tank /dev/sdb /​dev/​sdc</​fc></​xterm>​
 +
 +Durch das >><​fc #​008000>​zpool attach</​fc><<​ Kommando wird die zweite Platte auch wieder automatisch als Spiegelplatte hinzugefügt. Der Hinweis in der scan-Zeile zeigt auch, dass der Mirror wieder hergestellt wurde. Oracle nennt das >><​fc #​008000>​resilvered</​fc><<,​ was eine Anlehnung an den Silberbelag eines Spiegels ist und nichts anderes wie einen >><​fc #​008000>​Rebuild</​fc><<​ bedeutet:
 +
 +<​xterm>#​ <fc #​008000>​zpool status tank</​fc>​
 +  pool: tank
 + ​state:​ ONLINE
 + scan: resilvered 512M in 0h0m with 0 errors on Sun Oct 14 09:37:59 2012
 +config:
 +
 + NAME        STATE     READ WRITE CKSUM
 + tank        ONLINE ​      ​0 ​    ​0 ​    0
 +   mirror-0 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0
 +
 +errors: No known data errors</​xterm>​
 +
 +Man kann diesem einfachen Mirror Pool jetzt einen weiteren Mirror Pool hinzufügen und erhält dadurch sozusagen ein RAID-10:
 +
 +<​xterm>#​ <fc #​008000>​zpool add -f tank mirror /dev/sdd /​dev/​sde</​fc></​xterm>​
 +
 +Dem ZFS Pool >><​fc #​008000>​tank</​fc><<​ der bislang aus dem Mirror >><​fc #​008000>​mirror-0</​fc><<​ bestand, wurde nun ein weiterer Mirror >><​fc #​008000>​mirror-1</​fc><<​ hinzugefügt:​
 +
 +<​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
 +   mirror-0 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0
 +   mirror-1 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdd     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sde     ​ONLINE ​      ​0 ​    ​0 ​    0
 +
 +errors: No known data errors</​xterm>​
 +
 +Bei einem Fehler einer Platte würde sich der Status zB in etwa wie folgt verändern:
 +
 +<​xterm>#​ <fc #​008000>​zpool status tank</​fc>​
 +  pool: tank
 + ​state:​ **DEGRADED**
 +status: One or more devices could not be used because the label is missing or
 + invalid. ​ Sufficient replicas exist for the pool to continue
 + functioning in a degraded state.
 +action: Replace the device using 'zpool replace'​.
 +   see: <​nowiki>​http://</​nowiki>​zfsonlinux.org/​msg/​ZFS-8000-4J
 + scan: none requested
 +config:
 +
 + NAME        STATE     READ WRITE CKSUM
 + tank        **DEGRADED** ​   0     ​0 ​    0
 +   mirror-0 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0
 +   mirror-1 ​ **DEGRADED** ​   0     ​0 ​    0
 +     sdd     ​**UNAVAIL** ​    ​0 ​    ​0 ​    0
 +     sde     ​ONLINE ​      ​0 ​    ​0 ​    0
 +
 +errors: No known data errors</​xterm>​
 +
 +An dieser Stelle ist die Platte >><​fc #​008000>/​dev/​sdd</​fc><<​ ausgefallen und wird nun mit dem >><​fc #​008000>​zpool replace</​fc><<​ Kommando durch die >><​fc #​008000>/​dev/​sdf</​fc><<​ ersetzt:
 +
 +<​xterm>#​ <fc #​008000>​zpool replace -f tank /dev/sdd /​dev/​sdf</​fc></​xterm>​
 +
 +Der Rebuild wird automatisch veranlasst und der Status des Pools kehrt zu normalen Konditionen zurück:
 +
 +<​xterm>#​ <fc #​008000>​zpool status tank</​fc>​
 +  pool: tank
 + ​state:​ ONLINE
 + scan: resilvered 256M in 0h0m with 0 errors on Sun Oct 14 11:53:27 2012
 +config:
 +
 + NAME        STATE     READ WRITE CKSUM
 + tank        ONLINE ​      ​0 ​    ​0 ​    0
 +   mirror-0 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdb     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sdc     ​ONLINE ​      ​0 ​    ​0 ​    0
 +   mirror-1 ​ ONLINE ​      ​0 ​    ​0 ​    0
 +     sdf     ​ONLINE ​      ​0 ​    ​0 ​    0
 +     sde     ​ONLINE ​      ​0 ​    ​0 ​    0
 +
 +errors: No known data errors</​xterm>​
 +
 + --- //pronto 2012/10/16 10:23//
 +
 +**Verwandte Artikel:**
 +[[:​tux:​zfs_install|->​ ZFS Support auf Linux Debian installieren]]
 +[[:​tux:​zfs_simple_pool|->​ ZFS Simple Pool erstellen und verwalten]]
 +
 +{{keywords>​zfs zfsonlinux zpool raid-1 raid-10 mirror rebuild replace}}
tux/zfs_mirror.1350309771.txt.gz (27707 views) · Zuletzt geändert: 2012/10/15 16:02 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