Arbeiten mit zfs

R

ralli

Guest
Trotz größter Sorgfalt ist meine externe USB (2.0) Platte wieder gecrasht. Der Einsatz von fsck brachte auch keine Abhilfe. Das ist in den letzten 2 Jahren wohl einige Male passiert, so das ich jetzt das Device /dev/da0 mit ZFS versehen habe.

Dabei habe ich mir das entsprechende Kapitel im Handbuch durchgelesen und durchgearbeitet.

Gucks Du hier: https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/filesystems-zfs.html

zpool create backup /dev/da0

Dann die Komprimierung erstellt und aktiviert:

zfs create backup/comressed

zfs set compression=gzip backup/comressed

und das Dateisystem gemounted mit zfs mount backup/comressed

Und nun meine Frage:

Muß ich nach jedem Einhängen die Kompression aktivieren?

Wenn ich Daten archiviere, müssen die dann zwingend in den Ordner compressed gesichert werden?

Oder reicht es für eine Datensicherung einen Schnappschuß des home Verzeichnisses auf backup zu exportieren?
 
Muß ich nach jedem Einhängen die Kompression aktivieren?
Ne, das merkt er sich.
Wenn ich Daten archiviere, müssen die dann zwingend in den Ordner compressed gesichert werden?
ne, aber auf der Ebene drüber ist dann eben nicht komprimiert.
Oder reicht es für eine Datensicherung einen Schnappschuß des home Verzeichnisses auf backup zu exportieren?
Verstehe ich nicht genau, inkrementelle Snapshots können alles reproduzieren (wenn alle da sind und heile!), jenachdem wo du sie hinlegs sind sie eben compressed oder nicht.
 
Typo? comressed - compressed

Muß ich nach jedem Einhängen die Kompression aktivieren?

Nein. Wenn du mit "zfs set" etwas definierst, dann ist das wie ein Schalter fuer das entsprechende Fileset. Einmal gesetzt, immer aktiv.

Mit "zfs get all backup/compressed" kannst du dir alle Werte des Filesets anzeigen lassen...so kannst du gut nachvollziehen, das die Einstellung auch aktiviert bleibt...und auch sehen wie hoch die Komprimierungsrate ist.

Wenn ich Daten archiviere, müssen die dann zwingend in den Ordner compressed gesichert werden?

Nicht sicher, ob ich dich hier richtig verstehe, aber der "Ordner" ist das ZFS Fileset "backup/compressed"...und das hat bestimmte Eigenschaften die du definiert hast. Diese gelten nur fuer dieses Fileset. Wenn du jetzt z.B. ein weiteres Fileset "backup/uncompressed" anlegst, und bei diesem KEINE Komprimierung aktivierst, trifft das dann dafuer auch zu. Du kannst also unterschiedlichste Filesets mit unterschiedlichsten Einstellungen anlegen, verschachteln, und Einstellungen nach unten vererben, wenn du es willst. Ebenso separat Snapshots erstellen, Rollback, usw.

Oder reicht es für eine Datensicherung einen Schnappschuß des home Verzeichnisses auf backup zu exportieren?

Keine Ahnung ob das fuer DICH reicht :-) Aber du kannst das machen, und das macht durchaus auch Sinn. Wenn du allerdings zfs send/receive dafuer verwendest, nimmt der gesendete Snapshot erstmal die Einstellungen vom Original-Fileset an, und zfs legt auf dem Ziel ein neues, entsprechendes Fileset an. Das ganze setzt aber voraus, das du auf deinem System auch schon ZFS verwendest.

Zur
Trotz größter Sorgfalt ist meine externe USB (2.0) Platte wieder gecrasht.
Problematik:

Normalerweise geht auch UFS nicht so einfach kaputt...wenn in deinem Fall evtl. die Hardware der externen Platte/Gehause schlecht/fehlerbehaftet ist, wuerde ich an deiner Stelle vorsichtig sein. ZFS setzt korrekt funktionierende Hardware voraus...wenn das nicht der Fall ist, kann auch ZFS kaputt gehen und unreparierbar werden.
 
Danke für Eure Hilfestellung bei den ersten Gehversuchen mit ZFS. Grundsätzlich habe ich meine wichtigsten Daten mehrfach gesichert, so das ich mal einige Tage Daten auf ZFS sichere und dann schaue, ob die Hardware korrekt arbeitet.
 
Vielleicht eine kleine Anmerkung. Erstelle auf der HD eine Partition und verwende diese dann für das ZFS.
Code:
gpart create -s gpt $HD
gpart add -a 4k -t freebsd-zfs -l $NAME-zfs $HD
Diese findest du dann unter /dev/gpt/$NAME-zfs.
 
Vielleicht eine kleine Anmerkung. Erstelle auf der HD eine Partition und verwende diese dann für das ZFS.
Code:
gpart create -s gpt $HD
gpart add -a 4k -t freebsd-zfs -l $NAME-zfs $HD
Diese findest du dann unter /dev/gpt/$NAME-zfs.
Interessant. Aber bevor ich das durchführe, würde ich gerne erfahren, welchen Vorteil oder Mehrwert diese Vorgehensweise hat.
 
Interessant. Aber bevor ich das durchführe, würde ich gerne erfahren, welchen Vorteil oder Mehrwert diese Vorgehensweise hat.
Hallo,
Ja das hätte ich vorher schon aufzählen können. Vorteil kann z.B. folgendes sein:
  • Das alignment kann angepasst werden (4k Sektoren).
  • Möchtest du mal einen Mirror erstellen, dann wäre das nicht möglich, wenn die zweite HDD auch nur einen Sektor kleiner wäre. Kann passieren, wenn man Festplatten von unterschiedlichen Herstellern verwendet.
  • Andere Betriebssysteme kennen GPT auch bieten nicht gleich an, die unbekannte HD zu formatieren.
Gruss
 
Hallo,
Ja das hätte ich vorher schon aufzählen können. Vorteil kann z.B. folgendes sein:
  • Das alignment kann angepasst werden (4k Sektoren).
  • Möchtest du mal einen Mirror erstellen, dann wäre das nicht möglich, wenn die zweite HDD auch nur einen Sektor kleiner wäre. Kann passieren, wenn man Festplatten von unterschiedlichen Herstellern verwendet.
  • Andere Betriebssysteme kennen GPT auch bieten nicht gleich an, die unbekannte HD zu formatieren.
Gruss
Danke, Du hast mich überzeugt.
 
Ich bilde mir ein, dass Yamagi (weitere?) Argumente für eine Partition genannt hatte, finde aber den Thread nicht. Vielleicht war es im IRC? Evtl. kann er das ja ergänzen :ugly::)
 
Man kann die Partition noch mit gpt label versehen. Das sollte dann auch mit Systemen funktionieren, die kein ZFS können.

Label sind sehr schön um Partitionen/platten auseinander zu halten. Ich habe alle meine Platten eindeutig durchnummeriert, die Labels sind dann <NR><Funktion> gelabelt. Z.B. 6boot oder 3vault. Wenn man platten woanders einbaut kommt sich so nichts ins Gehege. Man kann die Systeme dann sogar direkt booten obwohl sich alle Device-Nummern geändert haben.
 
Label sind sehr schön um Partitionen/platten auseinander zu halten. Ich habe alle meine Platten eindeutig durchnummeriert, die Labels sind dann <NR><Funktion> gelabelt. Z.B. 6boot oder 3vault. Wenn man platten woanders einbaut kommt sich so nichts ins Gehege. Man kann die Systeme dann sogar direkt booten obwohl sich alle Device-Nummern geändert haben.
Hört sich sehr gut an. Das funktioniert aber nur, wenn es wirklich EINDEUTIG ist, oder? Damit meine ich, dass du dann zB 1boot nicht auf mehreren Systemen haben darfst. Richtig?
 
Natürlich nicht. Wie gesagt die Platten sind durchnummeriert. Nur eine Platte ist die 1 also sind auch nur die Partitionen auf der mit 1<Funktion> gelabelt. Ich habe z.B. 4root auf dem Desktop und 6root auf dem Laptop.
 
Für das Label bietet sich auch die Serienummer an welche man mit camcontrol identify $HD leicht findet. :)
 
Mein großes Argument für eine Partition ist, dass dann jedes halbwegs zurechnungsfähige Tool oder gleich Betriebssystem sieht, dass sich Daten auf der Festplatte befinden. Während bei einem unformatierten Medium das nicht zu erkennen ist. Windows zeigt z.B. seinen "Formatieren"-Dialog und einen Klick später sind die schönen Daten an einem besseren Ort...
 
Ich hatte mir damals bei meinem RaidZ2 (6 Platten) überlegt, dass eine feste Größe aus dem o.g. Grund sinnvoll ist, wenn ich mal eine austauschen muss, die weniger Sektoren hat ich kein Rebuild fahren kann.

Gruß
Markus
 
Ich mußte FreeBSD 10.1 neu installieren. Wie mache ich den vorher erstellen Datenpool namens backup wieder bekannt? Die externe USB Platte hat das Device /dev/da0.
 
Ich möchte die externe USB Platte /dev/da0 mounten, auf der ich mit zpool create backup /dev/da0 den Datenpool anlegte. Nach der Neuinstallation kennt er ja zfs mount backup nicht.
 
Was hast du schon versucht? Eigentlich sollte ein einfaches
Code:
zpool import backup
genügen. Wenn das nicht geht kannst du noch ein
Code:
zpool import -d /dev/da0 backup
versuchen.
 
@ralli , ist alles richtig, aber die Reihenfolge kann einfacher sein.
schau dir an, ob dein pool (backup) erkannt wird, erstelle einen mountpoint, sonst legt sich ein systembackup möglicherweise noch über dein jetziges System, mounte den pool auf den neu erstellten mountpoint und alles ist schön.
die Reihenfolge kann einfach sein:
(usb einstöpseln)
% zpool import --> zeigt unmounted pools an, und da sollte er sein. (wenn da noch irgenwelche alten pools als UNAVAIL erkannt werden, ignoriere es.)
dann entweder
% mount -t zfs $poolname $mountpoint
oder
% zpool import -o altroot=/$mountpoint $poolname

sollte $poolname unter $mountpoint zugänglich machen.

hth
 
Was hast du schon versucht? Eigentlich sollte ein einfaches
Code:
zpool import backup
genügen. Wenn das nicht geht kannst du noch ein
Code:
zpool import -d /dev/da0 backup
versuchen.
zpool import backup funktioniert, danke. Irgendwie habe ich das im Handbuch nicht gefunden oder überlesen.
 
@ralli , ist alles richtig, aber die Reihenfolge kann einfacher sein.
schau dir an, ob dein pool (backup) erkannt wird, erstelle einen mountpoint, sonst legt sich ein systembackup möglicherweise noch über dein jetziges System, mounte den pool auf den neu erstellten mountpoint und alles ist schön.
die Reihenfolge kann einfach sein:
(usb einstöpseln)
% zpool import --> zeigt unmounted pools an, und da sollte er sein. (wenn da noch irgenwelche alten pools als UNAVAIL erkannt werden, ignoriere es.)
dann entweder
% mount -t zfs $poolname $mountpoint
oder
% zpool import -o altroot=/$mountpoint $poolname

sollte $poolname unter $mountpoint zugänglich machen.

hth
Gute Idee, das mache ich dann so. ZFS ist nach kurzer Einarbeitung einfacher als ich dachte. Auch Dir danke ich für den den Tipp.:)
 
Um eine Festplatte mit 512byte oder 4K Sektoren an die physischen Sektorgrenzen auszurichten, kann man da nicht die erste Partition bei Sektor 2048 beginnen lassen ?

gpart add -a 4k -s 2048 -t freebsd-zfs -l $NAME-zfs $HD

Das sollte doch dann gleichermaßen für 512byte und 4k Laufwerke passen oder ?

Grüße
 
Sorry,
einen kleinen Buchstaben vertauscht,
ich meinte natürlich (-b 2048)

gpart add -a 4k -b 2048 -t freebsd-zfs -l $NAME-zfs $HD


Grüße
 
Ja, das sind 50% der Miete. Die anderen sind ein Mindestblockgröße von 4096 Byte durch das Dateisystem. Bei ZFS ist es der legendäre "ashift=12".
 
Zurück
Oben