Wie erstelle ich einen ZFS-Spiegel mit Festplatten unterschiedlicher Sektorgröße?

506
Louis

Versuchen, einen Spiegel in einem ZFS-Pool zu reparieren:

louis@watson:~$ sudo zpool status pool: watson state: ONLINE scan: resilvered 1.55T in 7h22m with 0 errors on Fri Oct 6 03:19:16 2017 config:  NAME STATE READ WRITE CKSUM watson ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 wwn-0x50014ee0ad3655a3 ONLINE 0 0 0 ata-Hitachi_HUA723020ALA640_MK0271YGJA5BSA ONLINE 0 0 0 wwn-0x50014ee058480994 ONLINE 0 0 0 

Wenn ich versuche, eine Festplatte hinzuzufügen, erhalte ich die Meldung " Geräte haben unterschiedliche Sektorausrichtung ":

louis@watson:~$ sudo zpool attach -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP cannot attach scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP to wwn-0x50014ee058480994: devices have different sector alignment 

Hier sind die Sektorrepots der neuen und der Ziellaufwerke:

 louis@watson:~$ sudo hdparm -I /dev/disk/by-id/scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP | fgrep Sector Logical Sector size: 512 bytes Physical Sector size: 4096 bytes Logical Sector-0 offset: 0 bytes louis@watson:~$ sudo hdparm -I /dev/disk/by-id/wwn-0x50014ee058480994 | fgrep Sector Logical/Physical Sector size: 512 bytes * SCT Long Sector Access (AC1) 

Wie kann ich diese Laufwerke in einem Pool mischen?

3
Fügen Sie es manuell hinzu, aber Sie verlieren an Leistung. DGoiko vor 6 Jahren 0

1 Antwort auf die Frage

2
user121391

Ich gehe davon aus, dass es sich um diese Überprüfung handelt (Details, die vom Benutzer DeHackEd kopiert wurden ):

Der Hauptzweck ist eine Art "Force" -Befehl, wenn Sie einen Pool mit Ashift = 9 erstellt haben und dann versuchen, eine Festplatte mit 4k-Sektoren auszutauschen. ZFS gefällt das nicht (und das mit gutem Grund). Durch Angabe von -o ashift = 9 wird die Erkennung der Sektorgröße außer Kraft gesetzt und ZFS nimmt dies in Kauf.

[...]

Nein, die Anforderung ist, dass ashift_of (inserting_disk) <= ashift_of (exists_vdev) ist. Andernfalls wird EDOM zurückgegeben und der Vorgang wird nicht fortgesetzt. Der Wert für inserting_disk wird von der Platte selbst gelesen, kann aber mit -o ashift = value mit einem Wert überschrieben werden, der die oben genannten Ungleichungen erfüllt, damit ZFS die Platte akzeptiert.

Der Grund dafür ist, dass das Anbringen einer Festplatte mit zu großer Verschiebung zu einer derartig schwerwiegenden Leistung (für Rotationsmedien ohnehin) führt, dass die Benutzer unglücklich sind. Ich habe es geschafft, mein 500-G-Spiegel (halbgefüllte 1-TB-Laufwerke) brauchte 24 Stunden, um zu resilverieren, wenn er 2 Stunden hätte sein müssen. Dies wurde durch das Mischen von Sektorlaufwerken mit 512 und 4096 Byte verursacht.

[...]

Anders herum. Der Pool hatte eine Verschiebung von 9, aber das Einsetzen einer Scheibe mit 4-k-Sektoren (Verschiebung = 12) führt zu einer Ungleichung von 12 <= 9, was falsch ist. Mit zpool ... -o ashift = 9 wird es 9 <= 9 und ZFS akzeptiert es.

Sie können Ihre Festplatte also mit anhängen sudo zpool attach -o ashift=9 -f watson wwn-0x50014ee058480994 scsi-SATA_ST2000DM001-1CH_Z1F2ZSLP, aber Ihre Leistung kann darunter leiden. Die Alternative wäre, den Pool mit korrekt ausgerichteten Datenträgern neu zu erstellen oder die Sektorgrößen nicht miteinander zu kombinieren (dh die Verwendung unterschiedlicher Datenträger).

Toller Fund! Vielversprechend ... wird es versuchen, sobald die Sicherung abgeschlossen ist. Louis vor 6 Jahren 0
Hatte Probleme mit der Sicherung. Denken Sie daran, einen Blick darauf zu werfen? https://serverfault.com/questions/882591/more-accurate-way-to-obtain-zfs-filesystem-size Louis vor 6 Jahren 0
Das funktioniert! Resilvering scheint bei 50 MB / s langsam zu sein. Dies ist jedoch eine Legacy-Box mit wenigen Benutzern. :) Louis vor 6 Jahren 0