1つ以上のディスクを追加して既存のストライプ/raidz zfsプールをパリティの高いプールに変換できないのはなぜですか?

1つ以上のディスクを追加して既存のストライプ/raidz zfsプールをパリティの高いプールに変換できないのはなぜですか?

明確に言えば、私が言うのは、既存のストライプ(RAID0など)のzfsプールを取得し、新しいデバイスを1つまたは2つ追加し、既存のプール(RAID5)またはraidz2(RAID6)から追加のパリティを計算し、それをraidz1に変換することです。 。あるいは、より一般的には、N個のディスクをアレイに追加し、raidzPをraidz(P + N)に変換します。

私が知っている限り、これは比較的簡単でなければなりません(おおよそ、悪魔は詳細にあると確信しているので)、最近追加された「raidz拡張」よりも便利な機能でなければなりません。アレイの冗長性レベルを変更せずに追加のデバイスを接続して既存のraidzPプールを使用すると、新しいデバイスの数に直線的に新しいアレイのエラー確率が増加します。

RAIDレベル変換の多くのユースケースを考えることができます(両方のデバイスのうちの1つが差し迫ったエラーの兆候を示し始める前に、既存のアレイに新しいディスクを追加して気になることを防ぎます)。一方、raidz拡張はいくつかのケースでのみ役に立つようです。エッジこの場合、raidz1/2/3は特定の数のディスク(2 ^ n + P)で最適に動作することを考慮してください。

つまり、raidz1プールを破壊し、ダウングレードされたraidz3構成から古いデバイスに新しいプールを作成し、2つの新しいデバイスを追加して再同期するなど、それほど難しくないはずです。しかし、理想的には、追加のパリティディスクを作成し、データブロックを再配置するプロセス全体の間、ファイルシステムはオンライン状態を維持します。

この欠落している機能には、ユーザーの関心/必要性が不足しているのではなく、技術的な理由があると確信していますが、正確に何がこの機能を妨げているのかわかりません。

PS:この質問にいくつかの言語乱用があることを知っています。これは意図的で明確にするためです。 raidz1/2/3がRAID5/6/7に似ていますが、同じではないことをご存知ですか?しかし、問題は残っています。簡単な実装拡張で新しいディスクCをC = Aで埋めるとしましょう。

関連情報