ミラー化 ZFS ストレージプールは、zpool split コマンドを使用することにより、バックアッププールとして簡単に複製できます。
zpool split コマンドを使用してミラー化 ZFS ストレージプールから 1 つ以上のディスクを切り離し、切り離された 1 つ以上のディスクを使用して新しいプールを作成することができます。新しいプールの内容は、元のミラー化 ZFS ストレージプールと同じになります。
デフォルトでは、ミラー化プールに対して zpool split 操作を実行すると、最後のディスクが切り離され、新しく作成されるプールで使用されます。分割操作のあとで、新しいプールをインポートします。例:
# zpool status tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors # zpool split tank tank2 # zpool import tank2 # zpool status tank tank2 pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 errors: No known data errors pool: tank2 state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank2 ONLINE 0 0 0 c1t2d0 ONLINE 0 0 0 errors: No known data errors
新しく作成されるプールでどのディスクを使用するかは、zpool split コマンドで指定できます。例:
# zpool split tank tank2 c1t0d0
実際の分割操作が行われる前に、メモリー上のデータがミラー化ディスクに書き出されます。データが書き出されたあとで、ディスクがプールから切り離されて新しいプール GUID を付与されます。新しいプール GUID が生成され、プールが分割されたのと同じシステム上でプールをインポートできるようになります。
分割されるプールのファイルシステムマウントポイントがデフォルトと異なっている場合に、新しいプールを同じシステム上に作成するには、zpool split –R オプションを使用して新しいプール用の代替ルートディレクトリを特定し、既存のマウントポイントと競合しないようにする必要があります。例:
# zpool split -R /tank2 tank tank2
zpool split –R オプションを使用せずに新しいプールのインポートを試みたときにマウントポイントの競合を確認した場合は、–R オプションを使用して新しいプールをインポートしてください。新しいプールを別のシステムに作成する場合は、マウントポイントの競合が発生しないかぎり、代替ルートディレクトリの指定は不要です。
zpool split 機能を使用する前に、次の考慮事項を確認してください。
RAID-Z 構成または複数のディスクから成る非冗長プールに対しては、この機能を使用できません。
zpool split 操作を試みる前に、データおよびアプリケーションの操作を終了しておいてください。
再同期化が進行中の場合、プールを分割できません。
ミラー化プールの分割は、プールが 2 台か 3 台のディスクを含むときに行うのが最適です。このとき、元のプール内の最後のディスクが新しく作成されるプールで使用されます。その後、zpool attach コマンドを使用して元のミラー化ストレージプールを再作成するか、または新しく作成したプールをミラー化ストレージプールに変換することができます。新しい (分割された) プールが非冗長なため、1 回の zpool split 操作で既存のミラー化プールから新しいミラー化プールを作成する方法は現時点で存在しません
既存のプールが 3 方向ミラーの場合、分割操作後に新しいプールに含まれるディスクは 1 台です。既存のプールが 2 台のディスクから成る 2 方向ミラーの場合の結果は、2 台のディスクから成る 2 つの非冗長プールになります。2 台の追加ディスクを接続して、非冗長プールをミラー化プールに変換する必要があります。
分割操作中にデータの冗長性を維持するためのよい方法は、3 台のディスクを含むミラー化ストレージプールを分割し、分割操作後に元のプールが 2 台のミラー化ディスクを含むようにすることです。
ミラー化プールを分割する前にハードウェアが正しく構成されていることを確認してください。ハードウェアのキャッシュフラッシュ設定の確認方法については、一般的なシステムプラクティスを参照してください。
次の例では、3 台のディスクから成る mothership というミラー化ストレージプールが分割されます。結果となる 2 つのプールは、2 台のディスクから成るミラー化プール mothership と、1 台のディスクから成る新しいプール luna です。各プールの内容は同じです。
プール luna はバックアップの目的で別のシステムにインポートできます。バックアップの完了後、プール luna を破棄して、ディスクを mothership に再接続できます。その後、このプロセスを繰り返すことができます。
# zpool status mothership pool: mothership state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mothership ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 errors: No known data errors # zpool split mothership luna # zpool import luna # zpool status mothership luna pool: luna state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM luna ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 errors: No known data errors pool: mothership state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM mothership ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 errors: No known data errors