Ich habe das gleiche Problem, das die meisten Menschen haben: Wie man eine zuverlässige persönliche Speicherlösung mit der Tatsache erstellt, dass:
- Festplatten fallen mit alarmierender Regelmäßigkeit aus. Der Verlust von Dateien ist nicht akzeptabel.
- Ich werde von Zeit zu Zeit eine neue Festplatte kaufen. Der beste Preis / GB ist zwangsläufig eine andere Größe als der letzte Festplattenkauf.
2 bedeutet, dass ich im Laufe der Zeit eine heterogene Sammlung von Festplatten habe. Ich möchte sie alle verwenden, und ausgefallene Festplatten werden im Allgemeinen durch größere Festplatten ersetzt.
- Datenintegrität und Zuverlässigkeit sind mir wichtiger als Geschwindigkeit.
Nachdem ich einige Tage lang (und jahrelang im Hinterkopf) mit dem Kopf gegen dieses Problem geschlagen habe, schlage ich die folgende Lösung vor. Ich werde eine Lösung beschreiben, die ich basierend auf nativem Linux-ZFS getestet habe, das in einem Ubuntu-PPA verfügbar ist , aber LVM, MD und btrfs können verwendet werden, um dasselbe zu erreichen. Dafür werde ich RAID1 (ZFS Mirror Vdevs) verwenden.
- Gruppieren Sie Ihre Laufwerke in zwei Festplattensätze, sodass die Kapazität jedes Satzes so nahe wie möglich am anderen liegt.
- Partitionieren Sie die größeren Festplatten so, dass eine Partition in der anderen Gruppe genau so groß ist wie eine der kleineren Festplatten.
- Erstellen Sie Spiegel-vdevs so, dass jeder Datenträger seinen Spiegel auf einem anderen Datenträger hat.
Stellen Sie sich beispielsweise einen Festplattensatz eines neuen 2-TB-Laufwerks, eines älteren 750-GB-Laufwerks, zweier älterer 400-GB-Laufwerke und eines älteren 500-GB-Laufwerks vor. Die optimale gespiegelte Partitionierung verfügt über 2 TB nutzbaren Speicherplatz und wird in der folgenden Abbildung beschrieben, in der ':' Partitionen und '|' trennt. trennt Festplatten:
+------------------------------------------------------------------+
| 2TB (sda1) : (sda2) : (sda3) : (sda4) |
+------------------------------------------------------------------+--+
| 750 GB (sdb) | 400 GB (sdc) | 400 GB (sdd) | 500 GB (sde1) :XX|
+---------------------------------------------------------------------+
Erstellen Sie Ihren Zpool als
zpool create archive mirror /dev/sda1 /dev/sdb mirror /dev/sda2 /dev/sdc mirror /dev/sda3 /dev/sdd mirror /dev/sda4 /dev/sde1
Dadurch werden 4 gespiegelte vdevs erstellt. Wenn eine der Festplatten ausgefallen ist, kann sie ersetzt (durch eine Festplatte beliebiger Größe) und partitioniert werden, um die fehlenden Partitionen neu zu erstellen. Es ist wichtig, dass ZFS-vdevs einem Pool hinzugefügt, aber nicht entfernt werden können . Wenn es also möglich ist, wenn Sie ein neues Laufwerk kaufen, möchten Sie die vorhandenen vdevs neu anordnen. Angenommen, der nächste Kauf war ein 3-TB-Laufwerk. Ihre optimale Konfiguration ist mit 3,5 TB verwendbar, wie in der folgenden Abbildung beschrieben. Dies sind jetzt 5 vdev-Paare. Dies kann durch geeignete Partitionierung und sukzessives Versagen und erneutes Partitionieren der Laufwerke erreicht werden.
+--------------------------------------------------------------+-------------+
| 3 TB (sdf1) : (sdf2) : (sdf3) : (sdf4) | 500GB (sde) |
+--------------------------------------------------------------+-------------+-+
| 2TB (sda1) | 400GB (sdb) | 400GB (sdc) | 750GB (sdd1) : (sdd2) :X|
+------------------------------------------------------------------------------+
Die Aufrechterhaltung dieser Paarung gespiegelter Laufwerke kann auch mit LVM oder MD RAID erfolgen. Dabei sollte sichergestellt werden, dass jedes Laufwerk immer über ein Spiegellaufwerk oder eine Spiegelpartition verfügt. Da alles gespiegelt ist, können wir Laufwerke ausfallen lassen und Paritionen neu anordnen, wenn Laufwerke hinzugefügt oder entfernt werden. Mit LVM oder MD wäre es möglich, Laufwerke zu entfernen und das Array bei Bedarf zu verkleinern, und zwar auf Kosten weniger ausgefeilter Wiederherstellungstools in ZFS im Vergleich zu BTRFS.
Irgendwelche Kommentare zu diesem Verfahren? Ein gutes Skript könnte die verlustfreie Zuordnung und Neuanordnung von Laufwerken bewältigen. Irgendwelche Kommentare zu LVM vs. MD vs. ZFS? Irgendwelche Kommentare zur Leistung des resultierenden seltsam partitionierten Arrays? Verursacht die Datenanordnung über mehrere Partitionen auf demselben Laufwerk hinweg eine übermäßige Kopfsuche und einen frühen Ausfall?
BTRFS-Entwickler: Jeder möchte dies und LVM oder MD sind technisch nicht notwendig (und meiner Meinung nach nicht optimal). Die einfache Verwaltung eines redundanten heterogenen Arrays wäre für btrfs ein Killer-Feature. Es ist ein Hack auf LVM / MD / ZFS wie es ist. Das Minimieren von Resliver / Resync ist massiv wünschenswert.
Ja, das ist offensichtlich der Drobo eines armen Mannes. Dafür sollte man keine dedizierte Hardware benötigen ...