Ist es möglich, die Sektorgröße einer Partition für den zfs raidz-Pool unter Linux zu ändern?

9

Ich habe einen zfs-raidz-Pool unter Linux über virtuelle Geräte, bei denen es sich um spärliche Dateien handelte, auf neue Datenträger migriert. Ich habe Partitionen auf den Discs verwendet, da die Discs unterschiedliche Größen von jeweils 1,9 t haben. Die letzte hinzuzufügende Disc ist eine 4-TB-Disc, und ich habe sie wie die anderen mit einer 1,9-TB-Partition partitioniert, um sie dem Pool hinzuzufügen. Es wird eine GPT-Partitionstabelle verwendet. Wenn ich versuche, die letzte Datei durch die 1.9T-Partition auf der 4T-Disc zu ersetzen, wird Folgendes angezeigt

zpool replace -f zfs_raid /zfs_jbod/zfs_raid/zfs.2 /dev/sdd1 
cannot replace /zfs_jbod/zfs_raid/zfs.2 with /dev/sdd1: devices have different sector alignment

Wie kann ich die Größe des Partitionssektors wie die anderen auf 512 ändern oder andernfalls die anderen Poolgeräte auf 4024 ändern? Anscheinend sind die logischen Sektorgrößen alle 512

cat /sys/block/sdd/queue/hw_sector_size
Disk /dev/sdd: 4000.8 GB, 4000787030016 bytes, 7814037168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Da ich die Disc neu partitioniert habe, die das ursprüngliche 4-Datei-basierte Gerät enthielt, das ich ersetzen möchte, aber nicht funktioniert hat, habe ich die Gerätedatei neu erstellt, sodass sie derzeit stabilisiert wird.

Ausgabe des Zpool-Status:

NAME                            STATE     READ WRITE CKSUM
zfs_raid                        DEGRADED     0     0     0
  raidz1-0                      DEGRADED     0     0     0
    sda3                        ONLINE       0     0     0
    sdc2                        ONLINE       0     0     0
    sdb1                        ONLINE       0     0     0
    replacing-3                 OFFLINE      0     0     0
      /zfs_jbod/zfs_raid/zfs.2  OFFLINE      0     0     0
      /mnt/butter2/zfs.4        ONLINE       0     0     0  (resilvering)
Barrymac
quelle
Können Sie nicht stattdessen zfs zfs_raid <Datei> <Gerät> anhängen und nach der Synchronisierung zfs zfs_raid <Datei>
trennen
Würde das Anschließen eines fünften Geräts das Array nicht irreversibel erweitern? oder meinst du vielleicht so etwas wie ein Ersatz hinzufügen?
Barrymac
Wenn Sie keine Ersatzfestplatte hinzufügen oder eine neue Festplatte hinzufügen, indem Sie den zpool-Anhängepool old_device new_device ausführen, wird das old_device in das new_device gespiegelt. Anschließend entfernen Sie das old_device nach dem Resilver von Ihrem Spiegel: docs.oracle.com/cd/E26502_01/html/E29007/ gayrd.html # scrolltoc <- Informationen zum Anhängen / Trennen und den Unterschieden zwischen Hinzufügen und Anhängen.
BitsOfNix
Das sah vielversprechend aus, als leider ein "kann / dev / sdd1 nicht an /zfs_jbod/zfs_raid/zfs.2 anhängen: kann nur an Spiegel und Festplatten der obersten Ebene
angehängt
Könnten Sie Ihren aktuellen zpool-Status zfs_raid ausgeben, um das RAID-Layout zu sehen?
BitsOfNix

Antworten:

4

Ich habe die notwendige Option gefunden! Der Pool stellt derzeit die neue Partition neu aus, nachdem der folgende Befehl ausgegeben wurde:

 zpool replace  -o ashift=9 zfs_raid <virtual device> /dev/sdd1

Obwohl dies möglich ist, ist es nicht ratsam, da Sie eine schreckliche Leistung erzielen, wenn Sie ein 4k-Laufwerk als 512b schreiben. Ich habe auf die harte Weise gelernt, die man hinzufügen sollte

-o ashift=12 

Wenn Sie den Pool erstellen , um zu vermeiden, dass Sie ihn später neu erstellen müssen, ist es derzeit nicht möglich, auf die 4k-Sektorgröße zu migrieren.

Barrymac
quelle