Archive for the tag 'opensolaris'

Fileserverupgrades

Eigentlich wollte ich meinen jetzt fast 1,5 Jahre alten Fileserver demnächst upgraden. Es sollten 2x 1,5TB Festplatten zu den schon vorhandenen 3x 640GB dazu kommen und ich wollte von Ubuntu auf Opensolaris umsteigen. Opensolaris deshalb, da es dort das großartige ZFS gibt. Ich habe mich auch schon eingelesen und dachte das würde alles meinen Vorstellungen entsprechen, bis dann ein wichtiges Feature fehlte.

Und zwar verwaltet zfs Laufwerke als sog. vdevs (Virtual Devices), das können einzelne Platten, Mirrors (raid1) oder ein raid-z (raid5, raid5 usw.) aus mehreren Platten sein. Diese vdevs werden nun in Pools verwaltet. Ein Pool besteht also aus einem oder mehreren vdevs. Das Problem ist nun folgendes, will man mehr Speicher in seinen Server einbauen, ist das erstmal kein Problem, nur die Art wie es gemacht wird ist etwas unpraktisch für meine Zwecke.

Ich erkläre mal an einem Beispiel wie das läuft: man hat 3 Platten in seinem Solaris Server. Diese 3 Platten werden als raid-z Verbund als ein vdev in einen Pool, der sich „Daten“ nennt aufgenommen. In dem Pool erstellt man dann seine Filesysteme, Snapshots und was sonst noch alles und alle sind glücklich. Eines Tages wird der Platz knapp und man will eine 4. Festplatte einbauen. Jetzt wäre es schön, wenn man das vdev erweitern könnte, aber das geht nicht. Man kann nur den Pool erweitern.

Was bedeutet das nun?

Wenn ich den Server erweitern will, habe ich nun folgende Möglichkeiten:

  • Ich lege ein vdev mit der einen neuen Platte an und füge sie dem Pool „Daten“ hinzu.
    Damit verliere ich keinen Speicher aber verzichte ich auf Redundanz. Die alten Platten laufen im raid-z Verbund, es kann also eine ausfallen. Wenn die eine neue ausfällt, sind die Daten futsch. Ob dann der ganze Pool hin ist, weiß ich nicht, aber ich nehme es mal an.
  • Ich muss mehr als eine Platte einbauen und sie zusammen als vdev dem Pool hinzufügen.
    So ist das von Sun gedacht. Nur hat man dann folgende Probleme… 1. man muss mehr Geld ausgeben, 2. man verliert unnötig Kapazität (kauft man zwei Platten verliert man 50% der neuen Kapazität + 33% Kapazität des alten vdevs aus drei Platten für die Ausfallsicherheit; kauft man drei Platten sind es trotzdem 33% des neuen + 33% des alten Verbunds), 3. hat man evtl. gar nicht die Möglichkeit mehr als eine Platte einzubauen, da der „physikalische Raum“ dafür nicht ausreicht.
  • Die letzte Möglichkeit wäre nun ein Backup anzulegen, den Pool und die vdevs zu zerstören und einen neuen Pool mit einem neuen vdev mit 4 Platten anzulegen. Wenn man genug Platz für ein vollständiges Backup hat, mag das machbar sein. Ich finde es nur extrem unschön.

Trotzdem würde ich gerne ZFS einsetzen,da mir die Konstruktion auf Linux im direkten Vergleich einfach nicht gefällt. Z.B. ist das Erweitern eines Softwareraids dort erstmal kein großes Problem, aber dann muss man das Filesystem vergrößern. Und will man Features wie Snapshots oder mehrere Filesysteme auf dem Raid, muss man sich noch mit LVM herumschlagen. Das ist zwar der Unix way aber bei ZFS gibts alles schön aufeinander abgestimmt in einer Box. 🙂

Hier noch ein paar Erfolgsgeschichten… A Home Fileserver using ZFS, Building my ZFS-Fileserver, OpenSolaris als Fileserver.

Interessant sind auch die Demos bei Sun, dort sieht man dann, wie einfach das alles sein kann.