Linux上のzfsraidzプールを、スパースファイルである仮想デバイスを介して新しいディスクに移行してきました。ディスクはそれぞれ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セクターサイズに「移行」することはできないため、後で再作成する必要がないようにします。