Um zu testen, welche Auswirkungen das Hinzufügen eines ZFS-Protokollgeräts zu einem ZFS-Array hätte, habe ich beschlossen, einen Zpool zu erstellen und einige Benchmarks durchzuführen, bevor ich dann eine SSD anschloss, die als ZIL fungiert.
Leider wird mein Pool immer dann beeinträchtigt, wenn ich die SSD nach der Erstellung des Zpools anschließe oder die SSD nach der Erstellung des Pools entferne (alles, was dazu führt, dass sich die Laufwerksbuchstaben nach der Erstellung des Pools ändern) und dann neu starte, wie durch Ausführen von gezeigt werden kannsudo zpool status
pool: zpool1
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpool1 DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
sda ONLINE 0 0 0
1875547483567261808 UNAVAIL 0 0 0 was /dev/sdc1
Ich vermute, das Problem rührt daher, dass ich den Pool mit den Laufwerksbuchstaben folgendermaßen erstellt habe:
sudo zpool create -f zpool1 mirror /dev/sdb /dev/sdc
Fragen
Zum Glück ist das nur ein Test und es besteht kein Risiko, dass Daten verloren gehen. Aber sollte das in der Praxis passieren, wie kann ich das Problem am besten beheben? Offensichtlich existiert das Laufwerk noch und ist einsatzbereit.
Gibt es eine bessere Möglichkeit, den Zpool zu erstellen, ohne die Laufwerksbuchstaben zu verwenden, /dev/sda
um dieses Problem in Zukunft zu vermeiden? Ich stelle fest, dassIn der Ubuntu-Dokumentation heißt esum einen Zpool auf die gleiche Weise zu erstellen wie ich.
Zusatzinformation
- Betriebssystem: Ubuntu 16.04 Server 4.10
zfsutils-linux
ZFS aus dem Installationspaket installiert
Antwort1
Nach der Hilfe von Dexter_Kane auf derTechnikforum der Stufe 1/dev/disk/by-id/...
, die Antwort besteht darin , beim Erstellen der Pools stattdessen Pfade zu verwenden .
Z.B
sudo zpool create zpool1 mirror \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 \
/dev/disk/by-id/ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H
Umbau und Sanierung vorhandener Pools
Die gute Nachricht ist, dass Sie ein vorhandenes ZFS-RAID-Array so „konvertieren“ können, dass es diese Bezeichnungen verwendet. Dadurch wird dies in Zukunft verhindert und Ihr degradiertes Array wird sogar repariert, wenn diese Situation bei Ihnen bereits eingetreten ist.
sudo zpool export [pool name]
sudo zpool import -d /dev/disk/by-id [pool name]
Sie müssen lediglich sicherstellen, dass die Datensätze des Pools nicht verwendet werden. Führen Sie die Befehle beispielsweise nicht aus, während Sie sich im Pool befinden, und stellen Sie sicher, dass sie nicht über NFS usw. freigegeben werden.
Nach der Konvertierung sudo zpool status
sollte die Ausgabe etwa wie folgt aussehen:
pool: zpool1
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
zpool1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N0PKS6S7 ONLINE 0 0 0
ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N7VXZF6H ONLINE 0 0 0
Durchgeführte Tests
Ich habe Folgendes getestet:
- Durch die Verwendung von ID-Pfaden konnte das Problem verhindert werden.
- Nachdem ich einige Daten geschrieben hatte, während sich der Pool in einem beeinträchtigten Zustand befand, konnte ich nach dem Export/Import weiterhin alle Dateien lesen und es
sudo zpool status
wurden keine Fehler gemeldet.