Ich habe ein vorhandenes BTRFS-Dateisystem, das aus einer 500-GB-Festplatte besteht, und ich habe gerade eine 2-TB-Festplatte gekauft, um die Speicherkapazität meines Heimservers zu erhöhen. Ich möchte die neue Festplatte zum vorhandenen Dateisystem hinzufügen. Nach dem, was ich gelesen habe, scheint es, dass kein BTRFS-Setup mit Festplatten unterschiedlicher Größe umgehen kann, ohne den Größenunterschied zwischen der größeren und der kleineren Festplatte zu verschwenden, aber ich bin neu in BTRFS und habe möglicherweise etwas verpasst. Gibt es also ein Setup? das kann mir erlauben, zwei Festplatten in einem Dateisystem zu kombinieren, ohne Platz zu verschwenden?
14
Antworten:
Btrfs können unterschiedliche RAID-Level für Daten und Metadaten verwenden:
Die Standardeinstellung (auch für eine Festplatte) ist raid1 für die Metadaten (Verzeichnisse usw.) und raid0 für die Daten.
Wenn Sie dies nicht geändert haben, werden Sie wahrscheinlich kein Problem damit haben, die zweite CD hinzuzufügen und einen Neuausgleich durchzuführen. da nur die Metadaten auf beide Datenträger kopiert werden (Sie können Ihre Metadatengröße mit sehen
btrfs filesystem df /
). Beachten Sie jedoch, dass Sie Daten verlieren, wenn eine Ihrer Festplatten ausfällt.Da die 2-TB-Festplatte sooooooooo viel größer als die 500 g ist, erhalten Sie möglicherweise bessere Chancen, wenn Sie die neue hinzufügen und dann die alte entfernen (die Wahrscheinlichkeit, dass ein bestimmtes Laufwerk ausfällt, ist viel geringer als die Wahrscheinlichkeit, dass eines der Laufwerke ausfällt Versagen).
Wenn Sie später ein RAID-Array haben möchten (mit Laufwerken ähnlicher Größe), können Sie das Dateisystem auf dem neuen Laufwerk mit RAID1 für Daten und Metadaten neu erstellen und dann alles kopieren. dann später, wenn Sie mehr Geld haben, kaufen Sie das zweite 2-TB-Laufwerk.
ps: Die Verwendung von raid1 auf einem einzelnen Laufwerk bedeutet, dass die Daten an zwei Orten auf diesem einen Laufwerk gespeichert werden (zum Schutz vor Beschädigung) und Ihren Speicherplatz reduzieren (eine wirklich gute Idee für die Metadaten).
pss: im Ernst, sei nicht versucht, raid1 nicht für Metadaten zu verwenden. psss: es besteht eine sehr gute chance, dass btrfs die möglichkeit erhält, die raid-ebenen dynamisch zu ändern.
quelle
Dies hängt davon ab, welches Profil Sie für die Datenblöcke des Btrfs-Dateisystems mit mehreren Geräten verwenden.
Wenn Sie RAID0 (die Standardeinstellung für Datenblöcke) verwenden, kann jede Festplatte nur bis zur Kapazität der kleinsten Festplatte im Array gefüllt werden.
Wenn Sie das "einzelne" Profil für die Datenblöcke verwenden, wird jede Festplatte mit ihrer vollen Kapazität gefüllt. z.B
mkfs.btrfs -d single /dev/sda /dev/sdb
Ich habe einen Dateiserver mit einer 2-TB- und einer 3-TB-Festplatte. Es bootet Ubuntu 12.10 von einem USB-Stick. Zuerst habe ich das Btrfs-Dateisystem ohne die
-d single
Option erstellt:Das Ergebnis war, dass ich nur ungefähr 4 TB (3,45 binäre TB-Dateidaten) speichern konnte.
Beachten Sie die
used 1.82TB
für das 3-TB-Laufwerk.Dann habe ich den Befehl "balance" verwendet, um die Datenblöcke von RAID0 in das Profil "single" zu konvertieren:
Es dauerte sehr lange (ungefähr 30 Stunden), um die 4 TB-Daten auszugleichen. Aber nachdem es abgeschlossen ist, könnte ich die vollen 5 TB (4,36 binäre TB-Dateidaten) verwenden.
quelle
Ich habe mehrere Geräte mit BTRFS in Ubuntu verwendet, und es hat gut funktioniert. Beachten Sie, dass btrfs keine Standard-RAID-Levels implementiert. Es implementiert optionales Striping und Mirroring, jedoch kein echtes RAID.
quelle
Es ist möglich, Laufwerke mit unterschiedlicher Größe in btrfs zu kombinieren.
Gegenwärtig verarbeitet btrfs ENOSPC (No space left on device) jedoch nicht sehr gut.
ZB habe ich 3 Laufwerke in einem RAID0-Array (Striped) installiert. 1x500 GB, 1x250 GB, 1x160 GB.
Sie würden davon ausgehen, dass Sie einen Speicherplatz zwischen 800-900 GB haben.
Dies ist , was
df -h
zeigt:/ dev / sdf 848 g 615G 234G 73% / media / Btrfs
Ich kann jedoch keine weiteren Daten auf dem Array speichern. (Kein Platz frei)
btrfs filesystem df /media/btrfs
zeigt mir dies:Daten: insgesamt = 612,51 GB, verwendet = 612,51 GB
Metadaten: insgesamt = 1,62 GB, verwendet = 990,73 MB
System: insgesamt = 12,00 MB, verwendet = 48,00 KB
Sogar das Neuausbalancieren hat nicht geholfen.
Auf einer Mailingliste sah ich diese Aufforderung:
Größe des kleinsten Laufwerks * Anzahl der Laufwerke im Array
(obwohl ich etwas mehr Speicherplatz habe: 612 GB statt 160 GB * 3 = 480 GB)
Nach dem derzeitigen Entwicklungsstand können Sie möglicherweise nicht den gesamten verfügbaren Speicherplatz nutzen, obwohl btrfs unterschiedliche Größen in einem Array unterstützt.
Ich verwende Ubuntu 10.10 mit 2.6.35-22-generischem Kernel.
quelle
Update: Die Antwort unten wurde geschrieben, bevor Linux 3.0 veröffentlicht wurde. Linux 3.0 enthält den Quasi-Round-Robin-Patch.
Beim Datenspiegeln oder Striping muss der zweite Spiegel- oder Stripe-Block auf einem anderen Gerät mit freiem Speicherplatz zugewiesen werden. BTRFS weist den Geräten im Round-Robin-Verfahren Blöcke zu, die bei Geräten unterschiedlicher Größe Platzverlust verursachen können.
Es ist ein Quasi-Round-Robin-Patch in der Pipeline, um dies zu verbessern. Natürlich ist es immer noch unmöglich, alle Chunks auf verschiedenen Geräten zu koppeln, wenn Sie über eine 500-GB- und eine 2-TB-Festplatte verfügen. Der Patch ist eher für Situationen wie 1 x 1 TB + 2 x 500 GB gedacht, in denen jede kleine Festplatte es vorziehen sollte, mit der großen Festplatte anstelle der anderen kleinen Festplatte zu spiegeln / zu streifen.
In Ihrer Situation würde ich nur den "Single" -Modus für Ihre Daten verwenden (
mkfs.btrfs -d single
). Chunks sind in diesem Modus nicht gepaart, daher würde es meines Erachtens kein Problem mit Geräten unterschiedlicher Größe geben. Ich habe es aber nicht getestet.quelle
Dieses Problem tritt nur bei btrfs-raid1-Setups auf der Gotchas- Seite auf:
quelle