• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

ZFS in der Praxis

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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
 
  • Like
Reaktionen: Schwupz

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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
 
  • Like
Reaktionen: WDZaphod und zeno
Registriert
01.02.07
Beiträge
2.097
Interessant, nur leider sind Suns Server anscheinend gerade ziemlich langsam (< 10 kB/s)...

EDIT: Geht wieder.
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
Interessant, nur leider sind Suns Server anscheinend gerade ziemlich langsam (< 10 kB/s)...

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!
 
Registriert
01.02.07
Beiträge
2.097
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.
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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 ;).
 
Registriert
01.02.07
Beiträge
2.097
naja, theoretisch kann die platte ja schon beim synchronisieren ausfallen.
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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!
 
Registriert
01.02.07
Beiträge
2.097
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.
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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.... ;)
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
aber nur die serverversion bisher...


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.
 

WDZaphod

Prinzenapfel
Registriert
10.11.06
Beiträge
546
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.

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...
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
Ob ein Boot von ZFS möglich sein wird, steht allerdings noch nicht fest...

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 ;)
 
Registriert
01.02.07
Beiträge
2.097
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.

es gibt ja noch die mac-pro-besitzer, wie z.B. mich... ;)
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
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 ;).