現在、RAID 1にext4を備えた2つの4TBディスクを備えたUbuntuサーバーをセットアップしています(zfsを使用していません)。ドライブに障害が発生した場合に備えて、完全な冗長性が必要です。
マシンにさらに2台の4TBドライブを追加しています。おそらく将来またこれを行うので、これをサポートするためにzfsに切り替える必要があると考えています。
いくつかのガイドで、zfsを使用してストライピングとミラーリングの両方を実行できることを読みました。これが私が行きたい方法だと思います。
通常、ドライブを2つのペアにストライプ化し、次に2つのペアをRAID 1して、高速で冗長な「8TB」ドライブを取得します。
Zfsでこれをどのように達成しますか?そして、それにより、ドライブを簡単に追加できるようになりますか?
それを構成するのは非常に簡単です(構造を見やすくするための行分割):
# zpool create <poolname> \
mirror <disk1> <disk2> \
mirror <disk3> <disk4>
これにより、それぞれが2つのディスク間のミラーである2つのストライプを持つプールが作成されます。これは優れた柔軟なセットアップです(新しいドライブの追加が簡単で、理解しやすい)。将来、別のミラーを追加するには、次のようにします。
# zpool add -n <poolname> \
mirror <disk5> <disk6>
would update '<poolname>' to the following configuration:
<poolname>
mirror
<disk1>
<disk2>
mirror
<disk3>
<disk4>
mirror
<disk5>
<disk6>
(オプション-n
を使用すると、最初にドライランが実行され、検査できるようにプール構成が出力されます。これは、事後に元に戻すのが難しい/不可能な構成ミスを避けるために常にお勧めします!)
ただし、この設定は「非効率的」であることに注意してください保証 1つのディスク障害に対するデータの安全性:異なるストライプで発生した場合、2つの障害に対してのみ安全です。これは約67%で発生します。 2ディスク障害シナリオの。また、冗長データは引き続きプールの50%を使用します。
RAID-Zと呼ばれる柔軟性の低いZFS固有のRAID形式があり、すべてのディスクをプールして効率的なデータ保護を実現できます。 (この機能は現在作業中ですが、将来的にプールにディスクを追加するのは難しいため、柔軟性が低くなります。)raidz1
およびraidz2
のバリアントがあり、これらを失う可能性があります。どのディスクに障害が発生しても、それぞれ最大1つまたは最大2つのディスク。 4つの同じサイズのディスクの場合、raidz2
バリアントは引き続きストレージの50%を冗長性のために使用しますが、2つのディスク障害に耐えることを保証します。 raidz1
バリアントは、冗長性のオーバーヘッドを50%からわずか25%に削減しますが、1つのディスク障害に耐えることを保証するだけです。