Einführung

Meine Erfahrungen mit der FreeBSD Implementierung von „The Z filesystem„. In diesem Kapitel werde ich eine Dokumentation verfassen mit welchen Mitteln ich meine aktuelle Dateisystemstruktur aufgebaut habe. Ein schönes Feature von zfs ist der Befehl „zpool history“. Mit diesem Befehl kann man als Administrator nachvollziehen was in der Vergangenheit alles für Änderungen auf dem System durchgeführt werden.

[root@trinitron ~]# dmesg|grep -i zfs
ZFS filesystem version 5
ZFS storage pool version 28

[root@trinitron ~]# zpool upgrade -v
This system is currently running ZFS pool version 28.

[root@trinitron ~]# zpool history 
History for 'raid1p1':
2013-01-27.23:47:05 zpool create raid1p1 mirror ada1 ada2

In meinem Fall sieht man an der Ausgabe das ich am 27. Januar 2013 um 23:47 Uhr den zfs Pool „raid1p1“ erstellt habe. Ich verwende in meinem System sieben Festplatten. Davon sind vier Festplatten der Marke Western Digitial (Modell WD20EARX-00PASB0) als primäre Datenspeicher im Pool genutzt. Mein FreeBSD 9.1 boote ich über eine KINGSTON SVP200S37A60G (60 GB SSD) mit UFS als Dateisystem. Zwei weitere KINGSTON SV300S37A120G (120 GB SSD) arbeiten als ZIL und L2ARC im System. Dazu aber später in einem eigenen Abschnitt mehr Informationen. FreeBSD und das Root-Filesystem auf UFS-Basis wollte ich eigentlich auf einem gespiegelten zfs Pool übertragen und hatte dafür die beiden 120 GB SSD gekauft. Das ist mir bisher aber nicht zufriedenstellend gelungen und auch nicht mehr so wichtig. Das Ergebnis meiner Konfigurationsarbeit drückt sich nun wie folgt aus:

[root@trinitron ~]# zpool status
  pool: raid1p1
 state: ONLINE
  scan: scrub repaired 0 in 5h46m with 0 errors on Sat Feb 16 08:56:41 2013
config:
        NAME        STATE     READ WRITE CKSUM
        raid1p1     ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            ada6    ONLINE       0     0     0
            ada5    ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            ada3    ONLINE       0     0     0
            ada4    ONLINE       0     0     0
        logs
          mirror-2  ONLINE       0     0     0
            ada1p1  ONLINE       0     0     0
            ada2p1  ONLINE       0     0     0
        cache
          ada1p2    ONLINE       0     0     0
          ada2p2    ONLINE       0     0     0

errors: No known data errors
[root@trinitron ~]# zpool list
NAME      SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
raid1p1  3.62T  1.51T  2.12T    41%  1.00x  ONLINE  -

[root@trinitron ~]# zpool list -v
NAME         SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
raid1p1     3.62T  1.51T  2.12T    41%  1.00x  ONLINE  -
  mirror    1.81T  1.29T   539G         -
    ada6        -      -      -         -
    ada5        -      -      -         -
  mirror    1.81T   226G  1.59T         -
    ada3        -      -      -         -
    ada4        -      -      -         -
  mirror     992M  1.02M   991M         -
    ada1p1      -      -      -         -
    ada2p1      -      -      -         -
cache           -      -      -      -      -      -
  ada1p2     111G  63.4G  47.4G         -
  ada2p2     111G  63.4G  47.4G         -

Ich habe die vier Daten-Festplatten auf den sechs vorhandenen SATA II-Ports (3 Gbit/s) des ASUS P8H67-M angeschlossen (das sind die logischen Devices: ada3, ada4, ada5 und ada 6). Die beiden 120 GB SSD ZIL-/L2ARC-Festplatten (ada1xx und ada2xx) stecken ebenfalls auf zwei SATA II-Ports mit 6 Gbit/s Transferrate. Die 60 GB SSD Boot-Festplatte fand einen Connector auf einem „einfachen“ RAID-Controller und wurde im BIOS als Boot-Festplatte definiert. Die RAID-Funktionalität des Controllers und des Mainboards wollte ich auf keinen Fall einsetzen. Die Technologie wird bestimmt sehr gut implementiert sein aber ich möchte unabhängig vom Hersteller sein und vertraue zfs und glaube die selbe Leistung erzielen zu können. Hinzu kommt noch das ich die „Copy-on-write“ (COW) Funktionalität von zfs damit nicht eleminieren wollte.

[root@trinitron ~]# camcontrol devlist  
at scbus2 target 1 lun 0 (ada0,pass0)
at scbus3 target 0 lun 0 (ada1,pass1)
at scbus4 target 0 lun 0 (ada2,pass2)
at scbus5 target 0 lun 0 (ada3,pass3)
at scbus6 target 0 lun 0 (ada4,pass4)
at scbus7 target 0 lun 0 (ada5,pass5)
at scbus8 target 0 lun 0 (ada6,pass6)
at scbus10 target 0 lun 0 (cd0,pass7)
at scbus11 target 0 lun 0 (da0,pass8)

Ich hoffe mit diesem Artikel eine kurze Einleitung in den Ist-Zustand (Februar 2013) meiner aktuellen Hard- und Software-Konfiguration gegeben zu haben. In den nun folgenden Artikel werde ich versuchen den Aufbau zu beschreiben. Die hier beschriebenen Befehle und Informationen sind als ein Protokoll meiner Tätigkeiten zu betrachten und spiegeln meine Erfahrungen wieder und sollten nicht als Referenz für die Konfiguration von zfs und FreeBSD falsch verstanden werden. Es gibt sicherlich kompliziertere und/oder leistungsstärkere Setups auf dieser Welt. Alles was ich bisher auf der Maschine konfiguriert habe wurde immer mit einer gewissen „Angst“ begleitet „War das jetzt gut?!“. Meine Daten sind alle noch vorhanden. Es scheint keine negativen Einflüsse gegeben zu haben. Und genau das möchte ich mit dieser Seite vermitteln. Leider habe ich zu wenige Beschreibungen im Internet gefunden die mir die Angst hätten nehmen können. Manchmal muss man einfach etwas Mut zeigen und konzentriert Arbeiten um keine Datenverluste zu erleiden. Ich habe mir jeden Schritt wirklich gut überlegt. Kannst Du jetzt das Device aus dem Pool herausnehmen oder nicht? Was passiert wenn Du eine Festplatte mit Defekten indentifiziert hast und via smartctltools einen Self-Test durchführen willst? Stört das zfs in seinem Betrieb? Diese und andere Fragen sind dabei aufgekommen und ich werde auch so eine Vorgehensweise beschreiben.

Für Fragen und Anregungen stehe ich natürlich gern zur Verfügung.

Letzte Beiträge