1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

ZFS in der Praxis

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von DukeNuke2, 04.04.08.

  1. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    Hallo Leute,
    in einem eher Windows lastigen Forum habe ich ein paar Beiträge zum Thema ZFS geschrieben. Relativ einfache Grundlagen um mal einen Überblick in die grosse Welt des Volumemanagements zu erhalten. Ich dachte mir ich poste hier auch diese Einführung da ZFS ja auch bei OS X immer mehr an Bedeutung gewinnt.

    Viel Spaß beim lesen und nachmachen ;).

    Wie habe ich getestet?
    Ich habe auf meinem Linux Server VMware 1.0.5 laufen und darauf eine Virtuelle Maschine (VM) die mit Opensolaris (Solaris Nevada) Build 81 installiert ist. Aktuell ist die Version 85 die man sich bei Opensolaris/Sun runterladen kann.
    Der VM wurden in meinem Fall noch 5 virtuelle Platten (Files von je 1GB grösse auf dem Host System) zugeweisen.
    Das sieht dann unter Solaris wie folgt aus:

    Code:
    root@vm002 # format
    Searching for disks...done
    
    
    AVAILABLE DISK SELECTIONS:
           0. c0d0 <DEFAULT cyl 1302 alt 2 hd 255 sec 63>
              /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
           1. c2t0d0 <VMware,-VMware Virtual S-1.0-1.00GB>
              /pci@0,0/pci1000,30@10/sd@0,0
           2. c2t1d0 <VMware,-VMware Virtual S-1.0-1.00GB>
              /pci@0,0/pci1000,30@10/sd@1,0
           3. c2t2d0 <VMware,-VMware Virtual S-1.0-1.00GB> 
              /pci@0,0/pci1000,30@10/sd@2,0
           4. c2t3d0 <VMware,-VMware Virtual S-1.0-1.00GB>
              /pci@0,0/pci1000,30@10/sd@3,0
           5. c2t4d0 <VMware,-VMware Virtual S-1.0-1.00GB>
              /pci@0,0/pci1000,30@10/sd@4,0
    
    Die Platte 0. (c0d0 = interne Kennzeichnung der Platten in Solaris) ist dabei die Bootplatte und die Platten 1. - 5. sind die zum testen eingerichteten Devices.

    Was kann man nun mit ZFS mit diesen Platten anstellen?
    Man kann aus den zur verfügung stehenden Platten jedes Software RAID erstellen das einem in den Sinn kommt. Und das ganze mit nur EINEM Befehl!
    Wir wollen mal (nur für einen ersten Eindruck) ein Raid5 (welches bei ZFS RaidZ heisst) erstellen. Das wird mit dem Befehl:

    Code:
    root@vm002 # zpool create mypool raidz c2t0d0 c2t1d0 c2t2d0 c2t3d0 c2t4d0
    
    erledigt. Nach dem der o.g. Befehl abgesetzt wurde ist unser Raid auch schon fertig und kann SOFORT (ohne das man erst ein Dateisystem anlegen muss oder das Filesystem zu mounten) benutzt werden! Der Befehl erstellt das Raid und mountet es automatisch nach "/poolname" (in unserem Fall /mypool). Der Mountpoint kann natürlich auch frei gewählt werden! Der "df -h" Output zeigt wie das ganze aussieht:

    Code:
    root@vm002 # df -h
    Filesystem             size   used  avail capacity  Mounted on
    /dev/dsk/c0d0s0        7.8G   4.8G   2.9G    62%    /
    /devices                 0K     0K     0K     0%    /devices
    /dev                     0K     0K     0K     0%    /dev
    .
    .
    .
    ctfs                     0K     0K     0K     0%    /system/contract
    swap                   2.4G    52K   2.4G     1%    /var/run
    [COLOR=Red]mypool                 3.9G    28K   3.9G     1%    /mypool[/COLOR]
    
    Mit verschieden Befehlen können wir uns jetzt den Zustand des Pools ansehen.

    Code:
    root@vm002 # zpool list
    NAME     SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
    mypool  4.94G   171K  4.94G     0%  ONLINE  -
    
    root@vm002 # zpool status
      pool: mypool
     state: ONLINE
     scrub: none requested
    config:
    
            NAME        STATE     READ WRITE CKSUM
            mypool      ONLINE       0     0     0
              raidz1    ONLINE       0     0     0
                c2t0d0  ONLINE       0     0     0
                c2t1d0  ONLINE       0     0     0
                c2t2d0  ONLINE       0     0     0
                c2t3d0  ONLINE       0     0     0
                c2t4d0  ONLINE       0     0     0
    
    errors: No known data errors
    
    So. Soweit die erste kleine Einführung. Solltet ihr Interesse an einer Fortsetzung haben, lasst es mich wissen. Ich werde auch versuchen Fragen (wenn ihr welche habt) zu beantworten.

    Bis dahin,
    DN2
     
    Schwupz gefällt das.
  2. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    So, weiter geht es mit dem zweiten Teil. Diesmal eine Demonstration der "Snapshot" Möglichkeiten von ZFS.

    Mit Snapshots kann man Änderungen an einem ZFS Filesystem rückgängig machen. Etwas in der Art wie es bei Mac OS X mit der "Timemachine" gemacht wird. Nur völlig anders ;). Dazu mal eine kleine Demo.

    Wir erstellen uns im Verzeichniss des Storagepools "mypool" mal ein paar Dateien.

    Code:
    root@vm002 # cd /mypool/
    root@vm002 # mkfile 100m test100m
    root@vm002 # echo Das ist ein Test > testtext
    root@vm002 # ls -l
    total 204558
    -rw------T   1 root     root     104857600 Mar 23 18:46 test100m
    -rw-r--r--   1 root     root            17 Mar 23 18:47 testtext
    
    Durch die o.g. Befehle wird eine Datei mit 100 MB und eine Datei mit einem Text als Inhalt erstellt. Jetzt erstellen wir uns einen "Snapshot", also ein Abbild des Filesystems. Das passiert mit dem Befehl:

    Code:
    root@vm002 # zfs snapshot mypool@sunday
    
    Der Name des Snapshots ist frei wählbar. Ich habe mich mal für den Wochentag entschieden (@sunday). Jetzt können wir uns ansehen was passiert ist.

    Code:
    root@vm002 # zfs list
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    mypool            100M  3.78G  99.9M  /mypool
    mypool@sunday        0      -  99.9M  -
    
    Man beachte das der Snapshot eine Grösse von 0 MB hat! Warum ist das so? ZFS speichert nur die Änderungen die am Filesystem vorgenommen werden. Zum Beweis löschen wir doch einfach mal die 100 MB grosse Datei.

    Code:
    root@vm002 # rm test100m
    root@vm002 # ls -l
    total 3
    -rw-r--r--   1 root     root          17 Mar 23 18:47 testtext
    
    Und wieder werfen wir einen Blick auf unseren Pool.

    Code:
    root@vm002 # zfs list
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    mypool            100M  3.78G  29.6K  /mypool
    mypool@sunday    99.9M      -  99.9M  -
    
    root@vm002 # df -h
    Filesystem             size   used  avail capacity  Mounted on
    /dev/dsk/c0d0s0        7.8G   4.8G   2.9G    62%    /
    /devices                 0K     0K     0K     0%    /devices
    /dev                     0K     0K     0K     0%    /dev
    .
    .
    .
    swap                   2.3G    40K   2.3G     1%    /tmp
    swap                   2.3G    52K   2.3G     1%    /var/run
    mypool                 3.9G    29K   3.8G     1%    /mypool
    
    Der Snapshot ist jetzt gewachsen und zwar um die gelöschten 100 MB des gelöschten Files. Das Filesystem ansich wird mit einer Belegung von 29 KB angezeigt. Während der Pool selber natürlich noch mit 100 MB belegt ist. Die gelöschte Datei muss ja irgendwo bleiben.

    Jetzt wollen wir uns die gelöschte Datei doch mal wieder hervor holen. Das kann man auf 2 Arten machen.
    1. man mounted sich den Snapshot (das geht nur readonly!) und kopiert die Datei zurück
    2. man macht ein komplettes "Rollback" des Snapshots

    Ich zeige hier mal die Möglichkeit 2.

    Code:
    root@vm002 # zfs rollback mypool@sunday
    root@vm002 # zfs list
    NAME              USED  AVAIL  REFER  MOUNTPOINT
    mypool            100M  3.78G  99.9M  /mypool
    mypool@sunday        0      -  99.9M  -
    root@vm002 # ls -l
    total 204558
    -rw------T   1 root     root     104857600 Mar 23 18:46 test100m
    -rw-r--r--   1 root     root            17 Mar 23 18:47 testtext
    
    Und schon haben wir unsere "versehentlich" gelöschte Datei wieder.

    Genug für heute...

    DN2
     
    WDZaphod und zeno gefällt das.
  3. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    Interessant, nur leider sind Suns Server anscheinend gerade ziemlich langsam (< 10 kB/s)...

    EDIT: Geht wieder.
     
  4. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    Ich habe grade das OpenSolaris Build 85 gezogen. Lief bei mir mit vollen 2 Mbit. Die Sun Server sind eigentlich immer verdammt flott. Versuch es mal mit Firefox als Webbrowser und dem Downloadmanager "Down Them All" den es als Plugin für den FF gibt. Ich habe damit immer spitzen Downloadwerte!
     
  5. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    Wie ist das eigentlich, wenn ich dem RAID eine Platte hinzufüge und sie während der Synchronisation wieder abziehe - sind die Daten dann noch konsistent? Das war ja eins der Designziele von ZFS.
     
  6. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    du fügst die platte immer dem pool hinzu. nicht einem filesystem. und ob so ein vorgehen, wie von dir beschrieben, geplannt war wage ich doch zu bezweifeln. also wenn eine platte dem pool hinzugefügt wird und dann wieder entfernt wird, sind die daten konsistent. man sollte natürlich nicht eine platte einfach brutal aus dem system "reissen". sowas habe ich noch nie versucht und hoffe das ich auch nie zu sowas gezwungen werde ;).
     
  7. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    naja, theoretisch kann die platte ja schon beim synchronisieren ausfallen.
     
  8. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    eine sysnchronisation wie du es bei einem üblichem software raid kennst, gibt es bei ZFS ja nicht. somit kann der plattenausfall, bei entsprechendem design des pools, abgefangen werden. ZFS ist ja kein wunderfilesystem in dem auf magische weise alles gerettet werden kann. das design des pools muss natürlich passen um ausfälle einzelner platten abfangen zu können!
     
  9. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    So, habs jetzt mal in VMWare Fusion installiert, aber wenn ich im Bootmenü den ersten Punkt wähle, kommt nur ein weißer Cursor in der linken oberen Ecke.
     
  10. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    kann da leider nichts zu sagen... ich arbeite mit vmware server unter linux... wenn du probleme mit der solaris installation hast, empfehle ich mal in einem sun lastigem forum nachzufragen. da wäre z.b. www.sonnenblen.de wo man sich mit sowas beschäftigt. vllt hilft auch eine beschreibung deines "genauen" vorgehens. wie ist die vm eingerichtet, was für hardware nutzt du... usw.

    greets,
    DN2
     
  11. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
  12. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    Hallo Zusammen,
    für diejenigen die sich dann doch mal mit ZFS beschäftigen wollen, denen Solaris aber ein zu harter Brocken ist, habe ich heute mal eine andere Empfehlung:

    http://www.opensolaris.com/

    Das Projekt "Indiana" ist seit Anfang des Monats Mai verfügbar. Indiana ist eine Opensolaris Livecd mit Linux (Gnome) Oberfläche und mehr auf die Desktop Bedürfnisse zugeschnitten.
    Bei Indiana (oder besser Opensolaris 2008.5 wie es wohl richtig heisst) kommt z.b. auch schon ZFS-Boot zum Einsatz. Sicher eine nette Sache um mal was anderes auszuprobieren.
    Den Donload gibt es hier:

    http://www.opensolaris.com/get/index.html

    Viel Spass beim testen...

    DN2
     
  13. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    Für alle interessierten:
    Es gibt das Build 90 von OpenSolaris (SXCE). Das Besondere:
    Es gibt ZFS Unterstützung für das root Filesystem (ZFS Boot). Ich installiere die Version gerade auf meinem Server in eine VMware Session.

    Runterladen kann man die aktuelle Version hier:
    http://www.opensolaris.org/os/downloads/

    Ich bin gespannt... Greets DN2
     
  14. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    So,
    laut der Infos über "Snow Leopard" wird ZFS voll (lesend und schreibend) unterstützt. Das sind mal gute News :).

    Endlich ein Filesystem für die vielen Festplatten.... ;)
     
  15. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    aber nur die serverversion bisher...
     
  16. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559

    naja, in einem system mit EINER festplatte (mb oder mbp oder imac) macht ZFS auch nicht soooo viel sinn. wenn die bootunterstützung dabei ist kann man zwar mit der bootplatte schöne sachen machen aber das werden sicher die wenigsten nutzen.
     
  17. WDZaphod

    WDZaphod Prinzenapfel

    Dabei seit:
    10.11.06
    Beiträge:
    546
    Naja, schön ist das schon: Bootplatte jederzeit erweitern, Raid verlustfrei im Betrieb hinzufügen, Move auf andere Platte wärend dem Betrieb - YEAH!
    Ob ein Boot von ZFS möglich sein wird, steht allerdings noch nicht fest...
     
  18. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    eben... es hat gerade einzug in opensolaris gehalten... mal sehen wie es da weiter geht. ich habe auch noch keine erfahrung mit ZFS boot. erstmal die ersten erfahrungen der anderen damit abwarten ;)
     
  19. prolinesurfer

    Dabei seit:
    01.02.07
    Beiträge:
    2.092
    es gibt ja noch die mac-pro-besitzer, wie z.B. mich... ;)
     
  20. DukeNuke2

    DukeNuke2 Wagnerapfel

    Dabei seit:
    17.01.06
    Beiträge:
    1.559
    und wieviele platten hast du in oder an deinem system? ZFS ist ja schon echt klasse aber es sollte sich auch schon lohnen das einzusetzen... man muss sachen ja nicht nutzen nur weil es sie gibt ;).
     

Diese Seite empfehlen