Ich probiere das gebündelte OpenZFS auf Ubuntu 16.04 Xenial aus.
Beim Erstellen von Pools beziehe ich mich aus Gründen der Ausfallsicherheit immer auf Laufwerke mit ihren Seriennummern in /dev/disk/by-id/
(oder /dev/disk/gpt
unter FreeBSD). Die Reihenfolge der Laufwerke ist /dev
beim Neustart eines Computers nicht immer gleich. Wenn sich andere Laufwerke im Computer befinden, wird der Pool möglicherweise nicht ordnungsgemäß bereitgestellt.
Wenn zpool status
ich zum Beispiel mit einer 14.04-Box arbeite, bekomme ich Folgendes:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HDS722020ALA330_[..] ONLINE 0 0 0
ata-Hitachi_HUA722020ALA330_[..] ONLINE 0 0 0
Aber wenn ich am 16.04 einen neuen Pool damit erstelle (abgekürzt):
zpool create pool raidz \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..] \
/dev/disk/by-id/ata-Hitachi_HDS723030ALA640_[..]
Ich bekomme das mit zpool status
:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdf ONLINE 0 0 0
sde ONLINE 0 0 0
sdd ONLINE 0 0 0
sda ONLINE 0 0 0
Es sieht so aus, als ob zpool den Symlinks gefolgt ist, anstatt sie zu referenzieren.
Gibt es eine Möglichkeit, zpool am 16.04 zu zwingen, meine Laufwerksreferenzen beim Erstellen eines Pools zu berücksichtigen? Oder sind meine Bedenken, was hier getan wird, falsch?
Update: Problemumgehung
Ich habe auf Github einen Thread für zfsonlinux gefunden, der eine Problemumgehung vorschlug. Erstellen Sie zuerst Ihren Zpool mit /dev/sdX
Geräten, und führen Sie dann Folgendes aus :
$ sudo zpool export tank
$ sudo zpool import -d /dev/disk/by-id -aN
Ich würde es dennoch vorziehen, zpool create
wenn es möglich wäre, dies mit der Initiale zu tun .
zfs export
undzfs import -d
funktionieren trotzdem. Übrigens, es sei denn, Sie benötigen wirklich jedes Byte Speicherplatz, verwenden Sie zwei gespiegelte Paare anstelle von raidz. Die Leistung von raidz ist besser als die von raid-5, aber immer noch viel schlechter als die von raid-10 oder zfs gespiegelten Paaren. Es ist auch einfacher, einen Pool aus gespiegelten Paaren zu erweitern. Fügen Sie einfach zwei Festplatten gleichzeitig hinzu. Mit raidz müssen Sie jede der Festplatten durch größere ersetzen Pool haben mehr Platz zur Verfügung.zfs send
kopiere meine Daten in die neuen Pools. Tatsächlich ist raid-z für meine mythtv-Box in Ordnung, in der die Leistung nur dann kritisch ist, wenn 6 oder 8 Transcodierungsaufträge gleichzeitig ausgeführt werden. Das Wechseln zu gespiegelten Paaren ist in dem Pool, in dem sich mein/home
Verzeichnis befindet, sehr auffällig .Antworten:
Einer nach dem anderen
zpool import -d /dev/disk/by-id
funktioniert nicht.Ich habe dies in mehr als einer Umgebung bemerkt. Ich habe ein Importskript, das nicht nur magische Logik ausführt und physikalisch angeschlossene ZFS-Geräte anzeigt, sondern im Grunde auch Folgendes tut:
Beim zweiten Mal wird, auch ohne den
-d
Schalter, nach Geräte-ID importiert, auch wenn dies nicht beim ersten Mal mit dem expliziten Befehl der Fall war.Es ist möglich, dass dies nur auf einen ZFS-Fehler während einiger Wochen oder Monate (vor einem oder zwei Jahren) zurückzuführen war, und dies ist nicht länger erforderlich. Ich nehme an, ich hätte einen Fehlerbericht einreichen sollen, aber es war trivial, das Problem zu umgehen.
quelle
Ich weiß, dieser Thread ist irgendwie abgestanden, aber es gibt eine Antwort. Sie müssen Ihre Cache-Datei nach dem Import aktualisieren. Dieses Beispiel zeigt den Standardspeicherort für die Cache-Datei.
quelle