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
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
Interessant, nur leider sind Suns Server anscheinend gerade ziemlich langsam (< 10 kB/s)... EDIT: Geht wieder.
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!
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.
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 .
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!
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.
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
moin, hier mal ein netter bericht über die filesysteme die mit solaris möglich sind. es wird nicht nur zfs beschrieben aber eben auch und daher passt das hier vllt ganz gut rein... http://www.osnews.com/story/19665/So...system_Choices viel spass, DN2
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
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
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....
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...
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
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 .