Verschiedene Festplatten als Array im Server

DasBossInDaHaus

Vice Admiral Special
Mitglied seit
30.07.2007
Beiträge
916
Renomée
7
Standort
zuhause ;-)
Hallo zusammen,

ich hab hier einen ganzen Schwung Festplatten unterschiedlichster Größen (350gb bis 2TB alles dabei) rum fliegen und einen Server** mit viel Platz für Festplatten drin. Nun möchte ich beides gern kombinieren. Die ganzen Festplatten in den Server rein bauen und einfach* nutzen. Und genau da setzt das Problem an.

Was ich gerne hätte wäre eine software-konfiguration, die sich alle diese Festplatten nimmt und so verwaltet, dass
1. alle Festplatten zusammengefasst werden, sodass ich sie als einziges großes Laufwerk verwenden kann
2. Redundanz gegeben ist, sodass eine einzelne Festplatte ausfallen kann, ohne dass Daten verloren gehen
3. das ganze Array einfach zu erweitern ist, indem ich eine kleine Platte raus nehme und eine größere dafür rein baue.

Zu welcher Softwarelösung möchte ich da greifen? ZFS? BtrFS? ...oder gibt's da vielleicht noch was anderes hübsches?
Auch nett wäre ein bisschen Crypto und "Loadbalancing" (sodass die meist verwendeten Datenblöcke auf der schnellsten Platte landen) – sind aber beides nur Bonus-Punkte

**im Moment kein OS drauf, steht also noch zur Wahl, vorzugsweise Linux
*;D


Besten Gruß,
DBIDH
 
Kommt drauf an, ob es Linux oder BSD/Solaris werden soll. Für ersteres btrfs, für letztere zfs.
Beide beherrschen das. zfs über fuse würde ich eher nicht machen, den nativen zfs Treiber zu verwenden ist relativ viel Aufwand, insbesondere, wenn die root Partition drauf liegt.

Redundanz wird bei btrfs automatisch geregelt, d.h. alle Daten/Metadaten werden per default auf mind. 2 unterschiedliche Devices verteilt. Höhere Redundanz sollte einstellbar sein, 100% sicher bin ich mir jetzt aber nicht.
Erweitern ist aktuell glaube ich noch etwas problematisch, zumindest in den höheren raid leveln, aber da bin ich auch nicht unbedingt auf dem aktuellsten Stand, am besten vorher informieren.
crypto geht eigentlich gut. Ich nutze da dm-crypt für jede einzelne Festplatte und btrfs fasst dann die devices zusammen. Man kann es auch umgekehrt machen, d.h. btrfs auf die Devices und dann ecrypt o.ä. oben drauf. Mit dm-crypt hatte ich ein paar Probleme, das lag aber eher daran, dass systemd etwas rumgezickt hatte und ich daher manuell die entsprechenden service units erstellen musste anstatt die automatisch generierten zu verwenden. Beschränkt sich aber glaube ich auf mein System, die Ursache habe ich noch nicht gefunden (und war mir dann auch irgendwann egal...).
Wenn das btrfs gleichzeitig die root Parition sein soll, dann kann es aber etwas komplizierter werden, in dem Fall am Besten nochmal nachfragen. ;)

Bei mir ist btrfs inzwischen seit einem halben Jahr im Einsatz und funktioniert sehr gut. Zumindest in meinem Anwendungsfall hat es auch deutliche Vorteile (i.e.FS-geleitete Synchro der Festplatten) gegenüber md RAID, daher bin ich froh darauf umgestiegen zu sein. Auch das Problem mit dem Speicherplatz empfand ich jetzt nicht (mehr) als tragisch, der Wert, den df ausgibt stimmt in erster Näherung schon ganz gut (da liest man von früheren Versionen ganz andere Geschichten im Inet).

Die btrfs Doku ist wirklich hilfreich, da gibt es 3-4 Seiten, wo einige Dinge seht gut erklärt sind:
https://btrfs.wiki.kernel.org/index.php/Main_Page
 
Ist schon eine Zeit her da hatte ich zum Test btrfs-corrupt-block benutzt und ich habe es hinterher nicht mehr geschafft das Filesystem zu reparieren bis ich die betreffende Datei gelöscht habe (die beim repair auch nicht angezeigt wurde).
ZFS on Linux habe ich derzeit unter Debian im Einsatz aber auch mehr weil ich noch eine zweite Kiste mit FreeBSD/ZFS habe.
Langfristig wird sich sicher btrfs unter Linux durchsetzen. ZFS ist halt nicht so nativ im Kernel wie btrfs.
 
Hi,
vielen dank für die schnelle Antwort, Berniyh! Ich hab mich mal ein bisschen durchgegoogelt und lauter posts gefunden, wo Leute verschieden große Platten in einem Array verwenden wollten. Es hieß aber immer, dass bei allen Platten der nur Platz genutzt werden könne, der auf der kleinsten zur Verfügung steht. Und das sowohl für ZFS als auch für BtrFS. =(
Ist da vielleicht nur die Rede von 'ner alten Version? Oder weißt du da vielleicht was, was diese Leute nicht wussten?
Irgendwie muss das ja gehen, der Drobo kann's doch schließlich auch. =/

Besten Gruß,
DBIDH
 
Also zuerst, btrfs nutzt per default eine RAID1/RAID0 Kombination. Wenn bei der Erstellung des Dateisystems keine weiteren Paramter angegeben werden, gilt für Metadaten RAID1 und für die Daten RAID0. Das heißt, Metadaten werden über zwei devices gespiegelt, während die Daten über alle vorhandenen devices verteilt werden. Wie die Daten genau verteilt werden, lässt sich nicht einfach voraussagen. Deshalb stimmt die Aussage, dass überall nur maximal der Platz genutzt werden kann, welcher auf dem kleinsten device vorhanden ist, so nicht.
Auch wenn man für die Daten RAID1 konfiguriert, muss das so nicht stimmen. Es muss nur immer genug Platz vorhanden sein, die geforderterte Redundanz bereit stellen zu können.

Ein Beispiel:
Nehmen wir vier Platten, 2x500G und 2x3T sowie eine RAID1/RAID1 Konfiguration. Wenn wir jetzt eine gleichmäßige Verteilung annehmen, wäre bei einer Belegung von 1T die zwei 500er Platten voll sowie 500G von jeweils einer 3T Platte. Dann haben wir immer noch 2x2.5T auf den großen Platten, die genutzt werden können. Die werden von btrfs auch genutzt, da die Daten ja immer noch auf zwei devices verteilt werden können. Die RAID1-Bedingung ist also noch erfüllt.

Das ganze funktioniert in der Realität natürlich nicht so einfach. Btrfs alloziert für Metadaten immer 256MiB am Stück und für Daten 1GiB, genannt chunks. Je nach Verteilung gibt das unterschiedlich Verschnitt. Das lässt sich durch rebalancieren ausgleichen (und dabei auch ungenutzte/freie chunks wieder freigeben).
 
Also ich würde dir raten alles unter 2 TB zu verkaufen und für den Erlös ein oder mehrere weitere 2 TB Festplatten zu kaufen, bzw. die 2TB ebenfalls weg und dafür ein-zwei Große Festplatten zu holen. Oft erreicht man für gebrauchte Laufwerke gerade bei Ebay noch soviel Einnahmen dass man die neuen Festplatten damit komplett finanzieren kann.
 
Jein, ganz so ist es scheinbar nicht. Die Frage ist hier beantwortet:
https://btrfs.wiki.kernel.org/index..._I_get_with_unequal_devices_in_RAID-1_mode.3F

The general rule of thumb is if your largest device is bigger than all of the others put together, then you will get as much space as all the smaller devices added together. Otherwise, you get half of the space of all of your devices added together.

For example, if you have disks of size 3TB, 1TB, 1TB, your largest disk is 3TB and the sum of the rest is 2TB. In this case, your largest disk is bigger than the sum of the rest, and you will get 2TB of usable space.

If you have disks of size 3TB, 2TB, 2TB, then your largest disk is 3TB and the sum of the rest of 4TB. In this case, your largest disk is smaller than the sum of the rest, and you will get (3+2+2)/2 = 3.5TB of usable space.

Dann kommen noch zwei etwas kompliziertere Beispiele. Mit anderen Worten:
Die Speicherplatzberechnung ist etwas komplexer, aber es wird relativ viel des verfügbaren Speicherplatzes genutzt, auch bei ungleichen Plattengrößen.

Hier gibt es auch ein Tool um das berechnen zu lassen:
http://carfax.org.uk/btrfs-usage/index.html

Beispiel mit 5 Festplatten (1000 GB, 160GB, 320GB, 250GB und 700GB):
Code:
Kapazität: (1000+160+320+250+750)/2 = 1240
Nutzbar: 1115

Kritisch wird es vor allem, wenn man eine Festplatte hat, die wesentlich größer ist als der Rest. D.h. z.B. 2000GB + 320GB + 500GB würde nicht gut funktionieren, man würde mehr als ein TB einfach liegen lassen.
Es ist aber nicht so wie bei md RAID, wo man dann wirklich auf das kleinste Device beschränkt ist.

@ghostadmin: Ich glaube früher gab es da mehr Probleme, aber inzwischen sollte btrfs weitgehend "self-healing" sein, d.h. solche Problem beheben. Falls man auf Nummer sicher gehen will kann man auch auf 3 Copies / Data hochsetzen (und evtl. entsprechend viele Devices hinzufügen) und immer mal wieder ein btrfs scrub anstoßen.
 
Also ich würde dir raten alles unter 2 TB zu verkaufen und für den Erlös ein oder mehrere weitere 2 TB Festplatten zu kaufen, bzw. die 2TB ebenfalls weg und dafür ein-zwei Große Festplatten zu holen. Oft erreicht man für gebrauchte Laufwerke gerade bei Ebay noch soviel Einnahmen dass man die neuen Festplatten damit komplett finanzieren kann.

Wäre jedenfalls ökologischer und ökonomischer. Dürfte sich merkbar im Energieverbrauch niederschlagen.

--- Update ---

Kritisch wird es vor allem, wenn man eine Festplatte hat, die wesentlich größer ist als der Rest. D.h. z.B. 2000GB + 320GB + 500GB würde nicht gut funktionieren, man würde mehr als ein TB einfach liegen lassen.
Kommt sehr auf die RAID-Level an. Bei RAID1/RAID1 stimmt das, bei RAID1/RAID0 oder RAID1/single passt es schon wieder nicht mehr. Richtig lustig wird es, wenn dann für ein Dateisystem mehrere solcher Kombinationen möglich sind. Dann lässt sich das wirklich nicht merh voraussagen.

@ghostadmin: Ich glaube früher gab es da mehr Probleme, aber inzwischen sollte btrfs weitgehend "self-healing" sein, d.h. solche Problem beheben. Falls man auf Nummer sicher gehen will kann man auch auf 3 Copies / Data hochsetzen (und evtl. entsprechend viele Devices hinzufügen) und immer mal wieder ein btrfs scrub anstoßen.
Das hilft für die wirklich kritischen Fehler nicht. Hatte letztens so einen Fall, dass mir ein btrfs-System kaputt ging und sämtliche tree roots gleichermaßen korrupt waren. Da half mir erstmal wirklich nur noch das recovery tool.

Btrfs hat zur Sicherheit mehrere Superblock- und tree root Kopien. Wenn aber der seltene Fall passiert, dass die alle irgendwie kaputt sind, hilft im Moment wirklich nur noch das recovery tool. Reparieren lässt sich das zur Zeit noch nicht.
 
Kommt sehr auf die RAID-Level an. Bei RAID1/RAID1 stimmt das, bei RAID1/RAID0 oder RAID1/single passt es schon wieder nicht mehr. Richtig lustig wird es, wenn dann für ein Dateisystem mehrere solcher Kombinationen möglich sind. Dann lässt sich das wirklich nicht merh voraussagen.
Hatte mich auf RAID1 beschränkt, da oben ja von Redundanz die Rede war. Aber klar, wenn man andere Modi verwendet kommt etwas anderes bei raus.
Allerdings verstehe ich eh nicht, wie man sowas wie RAID0 nutzen kann, ist aber auch nicht mein Bier. ;)

Das hilft für die wirklich kritischen Fehler nicht. Hatte letztens so einen Fall, dass mir ein btrfs-System kaputt ging und sämtliche tree roots gleichermaßen korrupt waren. Da half mir erstmal wirklich nur noch das recovery tool.

Btrfs hat zur Sicherheit mehrere Superblock- und tree root Kopien. Wenn aber der seltene Fall passiert, dass die alle irgendwie kaputt sind, hilft im Moment wirklich nur noch das recovery tool. Reparieren lässt sich das zur Zeit noch nicht.
Das stimmt natürlich, aber so ein Fall dürfte wirklich jedes Dateisystem an die Grenze bringen. Vorteil bei ext* ist hier ja eigentlich nur, dass das Recoverytool ausgereifter ist und (was man nicht unterschätzen sollte), es von diversen externen Recovery-Tools unterstützt wird, man also im Zweifelsfall viele oder sogar alle Daten auch ohne explizite Infos retten kann.
Inwiefern das bei btrfs möglich ist kann ich momentan nicht abschätzen.
 
Das stimmt natürlich, aber so ein Fall dürfte wirklich jedes Dateisystem an die Grenze bringen. Vorteil bei ext* ist hier ja eigentlich nur, dass das Recoverytool ausgereifter ist und (was man nicht unterschätzen sollte), es von diversen externen Recovery-Tools unterstützt wird, man also im Zweifelsfall viele oder sogar alle Daten auch ohne explizite Infos retten kann.
Inwiefern das bei btrfs möglich ist kann ich momentan nicht abschätzen.
Ext hat immer noch einen leichten Vorteil durch die starre Block-Aufteilung. Damit lässt sich zumindest noch ungefähr voraussagen, wo auf der Platte welche Information/Daten liegen sollten. Bei der komplett dynamische Allokation, wie sie btrfs verwendet, wird das sehr kompliziert. Ähnliches Problem hat übrigens auch XFS. Und bei den Dateisystemgrößen, die man heute antrifft, ist es eigentlich sinnvoller, das Dateisystem neu zu machen und das Backup einzuspielen. Wird übrigens auch für ZFS empfohlen.
 
Wieviel Speicherplatz bleibt eigentlich bei btrfs wenn man bei 2 Platten die Daten nicht spiegelt aber die Metadaten?
 
Kann man auch mit dem Tool oben ausrechnen. Ist aber im Endeffekt sehr variabel, da es stark davon abhängt wie viele Metadaten entstehen und wie oft man das Balancing durchführt.
Würde mir aber darüber nicht so viele Gedanken zerbrechen, es ist in jedem Fall der kleinere Effekt.
 
Kann man auch mit dem Tool oben ausrechnen. Ist aber im Endeffekt sehr variabel, da es stark davon abhängt wie viele Metadaten entstehen und wie oft man das Balancing durchführt.
Würde mir aber darüber nicht so viele Gedanken zerbrechen, es ist in jedem Fall der kleinere Effekt.

Ich weise mal darauf hin, dass inline gespeicherte Daten auch in den Metadaten landen.
 
Zurück
Oben Unten