ZFSで、RAID-Z(またはRAID-Z2またはRAID-Z3)vdevを拡張する唯一の方法は、ディスクをより大きなディスクと交換することです。ジオメトリを変更する方法はありません。しかし、その過程でアレイを劣化させることなくそうすることは可能ですか?
例として、4つのディスクを備えたRAID-Zアレイがあるとします。1x2TBと3x1TBは、3 TBの使用可能スペースになります。すべてのドライブが機能している状態で、アレイを拡張するために2TBをさらに3つ購入します(6 TB使用可能に)。 1TBのそれぞれを一度に1つずつ取り外して2TBに交換し、各再銀を強制すると、アレイが不必要に繰り返し劣化し、プロセスで障害が発生するリスクが高まります。
私が可能だと思っているのは、ディスクを交換する前に各ディスクをミラーリングすることです。つまり、最初の2 TBをスペアベイに追加し、最初の1 TBディスクをミラーリングしてから、1 TBを取り外し、2 TBを取り外されたドライブのスロット。次に、2番目と3番目の1 TBディスクについて繰り返します。これにより、とにかく、再シルバー化する必要性、またはパリティを再計算する必要性さえも不要になる可能性があります。
そのようなことは可能ですか?
提案された解決策は可能ですが、いくつかの重大な欠点があります。
zpool import -o readonly=on ${YOUR_ZFS_POOL}
)に何も書き込むことはできません。zpool export ${YOUR_ZFS_POOL}
)をエクスポートする必要があります。Vdevディスクのクローンを作成した後、次のことを行う必要があります。
zpool export ${YOUR_ZFS_POOL}
)。zpool labelclear ${OLD_DISK_DEVICE}
)するか、古いディスクを物理的に取り外します。zpool import ${YOUR_ZFS_POOL}
)。zpool online -e ${NEW_DISK_VDEV}
)。交換するディスクごとにこれらの手順を繰り返すと、新しい容量が有効になります。
ZFSの組み込みの置換機能は、上記のセクションで説明したこの余分な複雑さをすべて回避するように設計されています。 resilver中にRAID-Zzpoolが破損することを恐れている場合は、次のことを行う必要があります。
さらに、ディスクに実際に障害が発生した場合でも、RAID-Zに満足できますか?
予算が厳しく、データセットをバックアップする場所が本当にない場合は、クローンがトランザクションのオールオアナッシング操作になるため、計画を実行する方が実際に安全ですが、プールは読み取り専用になることに注意してください。またはしばらくオフラインにすると、クローン作成後の手順でミスを犯すリスクもあります。
zpool replace
を使用すると、次のようになります。