ZFS

Allgemeine Hinweise

ZFS wird von SUN seit Solaris 10 6/06 supportet. Damit kann man wohl davon ausgehen, dass die Kinderkrankheiten beseitigt sind. Ausführliche Information über ZFS findet man hier. Die Eckdaten machen deutlich, das es für die Zukunft designed ist:

Wortlänge 128-Bit
Volumemanager Integriert
Ausfallsicherheit RAID 1, RAID-Z1 (~RAID 5) und RAID-Z2 (~RAID 6) integriert
Höchstanzahl von Dateien 248
maximale Größe des Dateisystems 16 Exbibyte (= 16 × 260 Byte)
maximale Größe einer Datei 16 Exbibyte (= 16 × 260 Byte)
maximale Größe jedes Pools 3 × 1023 Pebibyte (ca. 2 × 1038 Byte)
maximale Anzahl an Dateien in einem Verzeichnis 256
maximale Anzahl an Geräten im zPool 264
Dateisysteme im zPool 264
zPools im System 264

ZFS ist dabei nicht ausschließlich ein Filesystem, sondern es ist gleichzeitig auch Volumemanger. Diese beiden Teile finden sich auch in der Administration wieder. Über die beiden Kommandos zfs (Filesystem) und zpool (Volumemanager) lässt sich alles administrieren.

Besonders hervorzuheben ist das ZFS  mit Hilfe von Checksummen die Datenintegrität sicherstellt. Das bedeutet, das z.B. bei Plattenspiegelung eindeutig festgestellt werden kann, welcher Spiegel defekt und welcher intakt ist. Im Gegensatz zu den alten Volumemanager / Filesystem Kombinationen ist das ein großer Fortschritt für die Datenintegrität. Das alte “fsck” entfällt dadurch.

Hier nun meine Übliche “Befehlssammlung” zum Thema. Wie immer gibt es keine Garantie, weder auf Vollständigkeit noch auf Fehlerfreiheit. Wenn man sich auf dieser Ebene bewegt sollte man wissen was man tut, oder es bleiben lassen und Support einkaufen.

ZFS Pools (der Volumemanager …)

Alle Filesysteme sind in Pool organisiert. Einem Pool stellt man normalerweise die gesamte Platte zur Verfügung, aber es geht natürlich auch Partitionsweise (RAID Sets machen auf Partitions Ebene keinen Sinn). Die Devices können einzeln, gespiegelt oder in  RAID 5 (RAID Z) Pools gepackt werden.

1. Infos Sammeln

zpool list

zpool status  [-xv] <pool>

-x : nur fehlerhafte

-v : verbose

zpool history [-il] <pool>

-i : zusätzlich zu User Events auch interne Events

-l : long

2. Anlegen und Löschen

zpool create [-fn] [-m mountpoint] <pool> <vdev>

-f : force (könnte auch schon benutzt sein …)

-n : nur anzeigen, nix machen

vdev: disk, file, mirror, raidz, raidz1, raidz2, spare

zpool destroy [-f] <pool>

3. Devices (Platten) hinzufügen und entfernen (für Erweiterung)

zpool add [-fn] <pool> <vdev>

zpool remove <pool> <vdev>

4. Spiegeln

zpool attach [-f] <pool> <device> <new-device>

zpool detach <pool> <device>

5. Devices wechseln

zpool replace [-f] <pool> <device> <new-device>

6. Export / Import

zpool export [-f] <pool>

zpool import <pool>

7. Überprüfen

zpool scrub [-s] <pool>

-s : Stoppen

8. Pool Einstellungen

zpool get all <pool>

zpool set property=value <pool>

Hilfreich bei defekten Pools. Default ist “wait”, damit klemmen dann auch alle Status Abfragen:

zpool set failmode=continue <pool>

9. Performance

zpool iostat [-v] [<pool>] … [interval [count]]

ZFS Datasets (das Filesystem …)

Und das hier ist dann das Filesystem, das man nicht kleiner machen kann, weil es auch nur den Platz beansprucht den der aktuelle Füllstand benötigt. Vergrößern und Formatieren muss man es auch nicht …

Aber neben Filesystemen umfasst der Begriff Dataset auch Volumes (zB. RAW Volume für DB) und Snapshots.

1. Inofs Sammeln

zfs list [-r] [filesystem|volume|snapshot]

-r : rekursiv

2. Anlegen und Löschen

zfs create [-p} [-o property=value] <filesystem>

-p :  alle nicht vorhanden Parents werden auch angelegt

zfs create [-ps] [-b blocksize] [ -o property=value] -V <size> <volume>

-s : sparse volume ohne Platzreservierung

zfs destroy [-rRf] <filesystem|volume|snapshot>

-R : rekursiv auch mit Clone

3. Umbenennen

zfs rename <filesystem|volume|snapshot> <filesystem|volume|snapshot>

5. Snapshots

zfs snapshot [-r] <filesystem@snapname|volume@snapname>

zfs rollback [-rFf] snapshot

destroy und rename funktionieren genau wie bei Filesystemen oder Volumes

6. Clones

Snapshots sind nur read-only. Zum Bearbeiten brauchen wir einen Clone von einem Snapshot

zfs clone [-p] <snapshot> <filesystem|volume>

Es besteht aber nach wie vor eine Abhänigkeit zwischen dem Snapshot und dem Clone. Wenn man den Snapshot löschen will, geht das erst wenn man den Clone “promotet”, dh. die Abhängigkeit auflöst.

zfs promote <clone-filesystem>

7. Dataset Replications und Backups

Immer nur die Snapshots …. macht doch Sinn oder?

zfs send <snapshot>

zfs receive <filesystem|volume|snapshot>

zfs receive -d <filesystem>

Beispiele:

# zfs send tank/fish@trip | zfs receive newpool/crab@trap

# zfs send tank/fish@trip | ssh faraway zfs receive backup_tank/fish

# zfs send -R tank@today | zfs receive -d backup

8. Dataset Einstellungen

zfs get all <filesystem|volume|snapshot>

zfs set property=value <filesystem|volume|snapshot>

Damit werden z.B Mountpoints gesetzt oder auch die Kompression eingeschaltet. Quotation und Reservation werden auch als Property gesetzt.

9. Owner

zfs allow <everyone|user|group> <filesystem|volume>

zfs unallow <everyone|user|group> <filesystem|volume>

Versionierung / Upgrades

Anzeigen der verfügbaren Version auf dem System

zpool upgrade [-v]

Upgrade des gesamten Pools

zpool upgrade <pool>

Upgrade einzelner Datasets

zfs upgrade [-r] [-V version] <filesystem>

Trackback: Trackback-URL |  Autor: Michael Zimmer

Diesen Beitrag kommentieren.

Ein Kommentar

  1. Ergänzt am 02.03.2010

Kommentar abgeben