ディスクのグループを異なる ZFS vdev に水平にパーティション分割するのは良い考えでしょうか?

ディスクのグループを異なる ZFS vdev に水平にパーティション分割するのは良い考えでしょうか?
 ---------------------------  +-------+ --------
                              |       |
                              | part  | vdev 1
                              |       | no redundancy
 ------------------ +-------+ +-------+ --------
                    |       | |       | vdev 2
                    | part  | | part  | mirroring
                    |       | |       | (2 mirrors)
 -------- +-------+ +-------+ +-------+ --------
          |       | |       | |       | vdev 3
          | part  | | part  | | part  | mirroring
          |       | |       | |       | (3 mirrors)
+-------+ +-------+ +-------+ +-------+ --------
|       | |       | |       | |       | vdev 4
| part  | | part  | | part  | | part  | raidz2
|       | |       | |       | |       | 
+-------+ +-------+ +-------+ +-------+ -------
   Disk      Disk      Disk      Disk
   1TB       2TB       3TB       4TB

たとえば、さまざまなサイズのディスクが多数あり、それらをパーティション分割して、使用可能なスペースをすべて活用しながら、パーティションをさまざまな冗長度の vdev に集約したいとします。

上図のような梯子状の構造を考えています。

各ディスク 1 ~ 4 は、それぞれ 1、2、3、または 4 つのパーティションに分割され、サイズは 1 TB です。各ディスクは、それぞれ 1、2、3、または 4 つの vdev で共有されます。

  • vdev 1 は非クリティカルデータ専用です(冗長性なし)
  • vdev 2には1回複製されたデータが含まれています
  • vdev 3は重要なデータを保持し、3つのミラーによって2回複製されます。
  • vdev 4 は、ダブルパリティを使用して 2 回複製された重要なデータを保持します。これは vdev 3 と同じ信頼性を持ちますが、よりスペース効率が高くなります。

ZFS が内部的にデータをどのようにレイアウトするかについて明確な考えがないので、パフォーマンスと堅牢性の点で、ディスクを複数の vdev 間でスライスすることが一般的な方法なのか、それとも無意味なのか疑問に思っています。

答え1

複数のプールに同時にアクセスすると、パフォーマンスはひどく低下します。

3 方向ミラーリングは、ディスク領域を無駄にする以外に、大きなメリットが見込めません。

RAIDZn は単一ディスクとほぼ同等の IOPS パフォーマンスを備えています。

堅牢性の観点からは、最小のドライブ以外のドライブを失うと、複数のプールが劣化するため注意が必要です。劣化状態になると、パフォーマンスが低下します。

オーバーヘッドも考慮してください。ディスクは 10 TB ありますが、使用可能なスペースは 5 TB で、そのうち 1 TB には冗長性がありません。

おそらく、2+3 と 4+1 の 2 つのプールを用意し、sanoid/syncoid を使用して定期的に (1 時間ごとに) スナップショットを作成し、2+3 プールのプライマリ プールから 4+1 バックアップ プールにデータを転送する構成の方がよいでしょう。これにより、はるかに簡単なセットアップで、5 TB の使用可能なスペースがすべてバックアップされます。

関連情報