Partition

是否可以在 Linux 中更改 zfs raidz 池的分區的扇區大小?

  • February 24, 2015

我一直在通過稀疏文件的虛擬設備將 Linux 上的 zfs raidz 池遷移到新磁碟。我在磁碟上使用了分區,因為磁碟的大小不同,每個 1.9T。最後一個要添加的磁碟是 4Tb 磁碟,我將它與其他磁碟分區,並使用 1.9T 分區添加到池中。它使用 GPT 分區表。當我嘗試用 4T 磁碟上的 1.9T 分區替換最後一個文件時,我得到以下資訊

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

如何將分區扇區大小更改為 512 像其他的一樣,或者失敗是否可以將其他池設備更改為 4024 ?顯然邏輯扇區大小都是 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

由於我已經對包含我試圖替換但它不起作用的原始第 4 個基於文件的設備的光碟重新分區,因此我重新創建了設備文件,因此它目前正在重新同步該文件。

zpool 狀態輸出:

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)

我找到了必要的選擇!發出以下命令後,池目前正在重新同步新分區:

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

雖然這是可能的,但不建議這樣做,因為強制將 4k 類型的驅動器寫入 512b 會導致性能很差。我已經學會了一個應該添加的艱難方法

-o ashift=12 

創建池以避免以後必須重新創建它,因為目前無法“遷移”到 4k 扇區大小。

引用自:https://unix.stackexchange.com/questions/90121