Partition
是否可以在 Linux 中更改 zfs raidz 池的分區的扇區大小?
我一直在通過稀疏文件的虛擬設備將 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 扇區大小。