--------------------------- +-------+ --------
| |
| 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 の使用可能なスペースがすべてバックアップされます。