Linuxでは、zfs raidzプールパーティションのセクタサイズを変更できますか?

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)

答え1

必要なオプションが見つかりました!プールは現在、次のコマンドを実行した後に新しいパーティションを再同期しています。

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

これは可能ですが、4kタイプのドライブに512bを強制的に記録するとパフォーマンスが低下するため、お勧めできません。私は追加するのが難しい方法を学びました

-o ashift=12 

プールを作成するとき現在は、4kセクタサイズに「移行」する方法がないので、後で再生成しないようにしてください。

関連情報