Dies ist eine "Fortsetzung" der Antwort von ewwhite:
Sie müssten Ihre Daten erneut in den erweiterten Zpool schreiben, um ihn neu auszugleichen
Ich habe ein PHP-Skript ( verfügbar auf github ) geschrieben, um dies auf meinem Ubuntu 14.04-Host zu automatisieren.
Sie müssen lediglich das PHP-CLI-Tool mit installieren sudo apt-get install php5-cli
und das Skript ausführen, wobei Sie als erstes Argument den Pfad zu Ihren Pool-Daten übergeben. Z.B
php main.php /path/to/my/files
Idealerweise sollten Sie das Skript zweimal für alle Daten im Pool ausführen. Beim ersten Durchlauf wird die Laufwerksauslastung ausgeglichen, aber die einzelnen Dateien werden den zuletzt hinzugefügten Laufwerken übermäßig zugewiesen. Der zweite Durchlauf stellt sicher, dass jede Datei "fair" über die Laufwerke verteilt ist. Ich sage ziemlich statt gleichmäßig, weil es nur gleichmäßig verteilt wird, wenn Sie Laufwerkskapazitäten nicht mischen, wie ich es bei meinem RAID 10 mit Paaren unterschiedlicher Größe (4 TB Spiegel + 3 TB Spiegel + 3 TB Spiegel) bin.
Gründe für die Verwendung eines Skripts
- Ich muss das Problem "vor Ort" beheben. Ich kann zB die Daten nicht auf ein anderes System ausschreiben, sondern hier löschen und alles wieder zurückschreiben.
- Ich habe meinen Pool zu über 50% gefüllt, sodass ich nicht einfach das gesamte Dateisystem auf einmal kopieren konnte, bevor ich das Original löschte.
- Wenn es nur bestimmte Dateien gibt, die eine gute Leistung erbringen müssen, kann man das Skript einfach zweimal über diese Dateien ausführen. Der zweite Durchlauf ist jedoch nur dann wirksam, wenn der erste Durchlauf die Auslastung der Laufwerke erfolgreich ausgleichen konnte.
- Ich habe viele Daten und möchte einen Hinweis auf Fortschritte erhalten.
Wie kann ich feststellen, ob eine gleichmäßige Laufwerksauslastung erreicht wird?
Verwenden Sie das iostat-Tool über einen längeren Zeitraum (z. B. iostat -m 5
) und überprüfen Sie die Schreibvorgänge. Wenn sie gleich sind, haben Sie eine gleichmäßige Verteilung erreicht. Sie sind nicht perfekt, auch in dem Screenshot unten, weil ich ein Paar 4 TB mit 2 Paaren 3 TB-Laufwerken in RAID 10 laufen lasse, so dass die beiden 4en auf etwas mehr geschrieben werden.
Wenn Ihre Laufwerksauslastung "unsymmetrisch" ist, zeigt iostat in etwa den folgenden Screenshot an, in den die neuen Laufwerke überproportional geschrieben werden. Sie können auch feststellen, dass es sich um die neuen Laufwerke handelt, da die Lesevorgänge auf 0 stehen, da sie keine Daten enthalten.
Das Skript ist nicht perfekt, nur eine Problemumgehung, aber es funktioniert in der Zwischenzeit, bis ZFS eines Tages eine Neuausgleichsfunktion implementiert, wie sie BTRFS hat (Daumen drücken).