ストレージプールを作成するには、zpool create コマンドを使用します。このコマンドの引数には、プール名および任意の数の仮想デバイスを指定します。プール名は、ZFS コンポーネントに名前を付けるときの規則に記載されている命名規則に従う必要があります。
次のコマンドでは、ディスク c1t0d0 および c1t1d0 で構成される、tank という名前の新しいプールが作成されます。
# zpool create tank c1t0d0 c1t1d0
ディスク全体を表すデバイス名は /dev/dsk ディレクトリに作成されます。適切な名前が自動的に割り当てられ、1 つの大きなスライスで構成されます。データは、両方のディスクに動的にストライプ化されます。
ミラー化されたプールを作成するには、mirror キーワードと、ミラーを構成する任意の数のストレージデバイスを使用します。複数のミラーを指定する場合は、コマンド行で mirror キーワードを繰り返すことができます。次のコマンドでは、1 つのプールと 2 つの 2 方向ミラーが作成されます。
# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0
2 つ目の mirror キーワードは、新しい最上位レベルの仮想デバイスが指定されていることを示します。データは、両方のミラー間で動的にストライプ化され、データは各ディスク間で適切に冗長となります。
推奨のミラー化構成の詳細については、Chapter 11, 推奨の Oracle Solaris ZFS プラクティスを参照してください。
現時点では、ZFS ミラー化構成では次の操作がサポートされています。
最上位レベルの追加の仮想デバイス (vdev) 用の別のディスクセットを既存のミラー化構成に追加する。詳細は、ストレージプールにデバイスを追加するを参照してください。
追加のディスクを既存のミラー化構成に接続する。あるいは、追加のディスクを複製されない構成に接続して、ミラー化構成を作成する。詳細は、ストレージプール内でデバイスを接続する/切り離すを参照してください。
置き換えたあとのディスクのサイズが置き換える前のデバイスと等しいかそれ以上であれば、既存のミラー化構成内の 1 つ以上のディスクを置き換える。詳細は、ストレージプール内のデバイスを置き換えるを参照してください。
残りのデバイスがミラー化構成に十分な冗長性を備えているのであれば、その構成に含まれる 1 つのディスクを切り離す。詳細は、ストレージプール内でデバイスを接続する/切り離すを参照してください。
ディスクのうちの 1 つを切り離すことによってミラー化構成を分割し、新しい同一のプールを作成する。詳細は、ミラー化 ZFS ストレージプールを分割して新しいプールを作成するを参照してください。
スペア、ログデバイス、キャッシュデバイス以外のデバイスは、ミラー化されたストレージプールから完全に削除できません。
次のルートプール構成要件を考慮してください。
Oracle Solaris では、ルートプールに使用されるディスクは、EFI (GPT) ラベルを付けて x86 ベースのシステム、GPT 対応ファームウェア搭載のサポートされる SPARC システムにインストールされます。GPT 対応ファームウェアのない SPARC ベースのシステムでは SMI (VTOC) ラベルが適用されます。インストーラは、可能であれば EFI (GPT) ラベルを適するため、インストール後に ZFS ルートプールを再作成する必要がある場合は、次のコマンドを使用して EFI (GPT) ディスクラベルと適切なブート情報を適用できます。
# zpool create -B rpool2 c1t0d0
ルートプールは、ミラー化構成または単一ディスク構成として作成する必要があります。zpool add コマンドを使って、追加ディスクを追加して複数のミラー化された最上位レベル仮想ディスクを作成することはできませんが、ミラー化された仮想デバイスを zpool attach コマンドを使って拡張することは可能です。
RAID-Z やストライプ化構成はサポートされていません。
ルートプールに別個のログデバイスを使用することはできません。
ルートプールにサポートされていない構成を使用しようとすると、次のようなメッセージが表示されます。
ERROR: ZFS pool <pool-name> does not support boot environments
# zpool add -f rpool log c0t6d0s0 cannot add to 'rpool': root pool can not have multiple vdevs or separate logs
ZFS ルートファイルシステムをインストールしブートする方法については、Chapter 4, ZFS ルートプールのコンポーネントの管理を参照してください。
シングルパリティー RAID-Z プールの作成方法は、ミラー化されたプールの作成方法と同じですが、mirror キーワードの代わりに raidz または raidz1 を使用する点が異なります。次の例は、5 台のディスクから構成される単一の RAID-Z デバイスでプールを作成する方法を示しています。
# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0
この例では、デバイスの短縮名または完全名を使ってディスクを指定できることを示しています。/dev/dsk/c5t0d0 と c5t0d0 はどちらも同じディスクを参照します。
プールを作成するときに raidz2 または raidz3 キーワードを使用して、ダブルパリティーまたはトリプルパリティーの RAID-Z 構成を作成できます。例:
# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 # zpool status -v tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c3t0d0 ONLINE 0 0 0 c4t0d0 ONLINE 0 0 0 c5t0d0 ONLINE 0 0 0 errors: No known data errors
# zpool create tank raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 c8t0d0 # zpool status -v tank pool: tank state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM tank ONLINE 0 0 0 raidz3-0 ONLINE 0 0 0 c0t0d0 ONLINE 0 0 0 c1t0d0 ONLINE 0 0 0 c2t0d0 ONLINE 0 0 0 c3t0d0 ONLINE 0 0 0 c4t0d0 ONLINE 0 0 0 c5t0d0 ONLINE 0 0 0 c6t0d0 ONLINE 0 0 0 c7t0d0 ONLINE 0 0 0 c8t0d0 ONLINE 0 0 0 errors: No known data errors
現時点では、ZFS RAID-Z 構成では次の操作がサポートされています。
最上位レベルの追加の仮想デバイス用の別のディスクセットを既存の RAID-Z 構成に追加する。詳細は、ストレージプールにデバイスを追加するを参照してください。
置き換えたあとのディスクのサイズが置き換える前のデバイスと等しいかそれ以上であれば、既存の RAID-Z 構成内の 1 つ以上のディスクを置き換える。詳細は、ストレージプール内のデバイスを置き換えるを参照してください。
現時点では、RAID-Z 構成では次の操作がサポートされていません。
追加のディスクを既存の RAID-Z 構成に接続する。
スペアディスクによって置き換えられるディスクを切り離すか、スペアディスクを切り離す必要がある場合を除き、ディスクを RAID-Z 構成から切り離す。
ログデバイスまたはキャッシュデバイス以外のデバイスは、RAID-Z 構成から完全に削除できません。この機能については、RFE (改善要求) が提出されています。
RAID-Z 構成の詳細については、RAID-Z ストレージプール構成を参照してください。
同期トランザクションの POSIX 要件を満たすために、ZFS インテントログ (ZIL) が提供されています。たとえば、多くの場合、データベースがシステムコールから戻るときは、そのトランザクションが安定したストレージデバイス上に置かれている必要があります。NFS やその他のアプリケーションでは、データの安定性を確保するために fsync() も使用できます。
デフォルトでは、ZIL は、メインプール内のブロックから割り当てられます。しかし、NVRAM や専用ディスクなどで、別個のインテントログデバイスを使用することにより、パフォーマンスを向上できる可能性があります。
使用している環境で別個の ZFS ログデバイスを設定することが適切かどうかを判断するには、次の点を考慮してください。
ZFS インテントログ用のログデバイスは、データベースのログファイルとは関連がありません。
別個のログデバイスを実装することによって得られるパフォーマンスの向上は、デバイスの種類、プールのハードウェア構成、およびアプリケーションの作業負荷によって異なります。パフォーマンスの基礎情報については、次のブログを参照してください。
http://blogs.oracle.com/perrin/entry/slog_blog_or_blogging_on
ログデバイスは複製解除したりミラー化したりできますが、ログデバイスで RAID-Z はサポートされていません。
別個のログデバイスがミラー化されていない場合、ログを格納しているデバイスに障害が発生すると、ログブロックの格納はストレージプールに戻ります。
ログデバイスは、より大規模なストレージプールの一部として、追加、置き換え、削除、接続、切り離し、インポート、およびエクスポートすることができます。
既存のログデバイスにログデバイスを接続して、ミラー化ログデバイスを作成できます。この操作は、ミラー化されていないストレージプール内にデバイスを接続する操作と同じです。
ログデバイスの最小サイズは、プール内の各デバイスの最小サイズと同じで、64M バイトです。ログデバイスに格納される可能性のある処理中のデータは比較的少量です。ログのトランザクション (システムコール) がコミットされると、ログブロックは解放されます。
ログデバイスの最大サイズは物理メモリーのサイズの約 1/2 になるようにしてください。これは、格納される可能性のある処理中のデータの最大量です。たとえば、16G バイトの物理メモリーを備えたシステムの場合、ログデバイスの最大サイズとして 8G バイトを検討してください。
ZFS ログデバイスの設定は、ストレージプールの作成時または作成後に行えます。
次の例では、ミラー化ログデバイスを持つミラー化ストレージプールを作成する方法を示します。
# zpool create datap mirror c0t5000C500335F95E3d0 c0t5000C500335F907Fd0 \ mirror c0t5000C500335BD117d0 c0t5000C500335DC60Fd0 \ log mirror c0t5000C500335E106Bd0 c0t5000C500335FC3E7d0 # zpool status datap pool: datap state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM datap ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 c0t5000C500335F95E3d0 ONLINE 0 0 0 c0t5000C500335F907Fd0 ONLINE 0 0 0 mirror-1 ONLINE 0 0 0 c0t5000C500335BD117d0 ONLINE 0 0 0 c0t5000C500335DC60Fd0 ONLINE 0 0 0 logs mirror-2 ONLINE 0 0 0 c0t5000C500335E106Bd0 ONLINE 0 0 0 c0t5000C500335FC3E7d0 ONLINE 0 0 0 errors: No known data errors
ログデバイス障害からの回復の詳細については、Example 10–2 を参照してください。
キャッシュデバイスにより、メインメモリーとディスクの間にキャッシュ層が追加されます。キャッシュデバイスを使用すると、ほぼ静的なコンテンツをランダムに読み込む作業負荷のパフォーマンスが大幅に向上します。
キャッシュデバイスを使用してストレージプールを作成して、ストレージプールデータをキャッシュすることができます。例:
# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0 # 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 c2t0d0 ONLINE 0 0 0 c2t1d0 ONLINE 0 0 0 c2t3d0 ONLINE 0 0 0 cache c2t5d0 ONLINE 0 0 0 c2t8d0 ONLINE 0 0 0 errors: No known data errors
キャッシュデバイスを追加すると、そのキャッシュデバイスにメインメモリーの内容が徐々に書き込まれていきます。キャッシュデバイスのサイズによっては、デバイスがいっぱいになるまでに 1 時間以上かかる場合もあります。zpool iostat コマンドを次のように使用して、容量と読み込みをモニターできます。
# zpool iostat -v pool 5
プールの作成後に、プールに対してキャッシュデバイスの追加や削除を行うことができます。
キャッシュデバイスを使用して ZFS ストレージプールを作成するかどうか決定する場合は、次の点を考慮してください。
キャッシュデバイスを使用すると、ほぼ静的なコンテンツをランダムに読み込む作業負荷のパフォーマンスが大幅に向上します。
zpool iostat コマンドを使用して、容量と読み込みをモニターできます。
プールの作成時に単一または複数のキャッシュデバイスを追加できます。プールの作成後にキャッシュデバイスを追加または削除することもできます。詳細は、Example 3–4 を参照してください。
キャッシュデバイスは、ミラー化することも、RAID-Z 構成に含めることもできません。
キャッシュデバイスで読み取りエラーが検出されると、ミラー化構成または RAID-Z 構成に含まれている可能性があるオリジナルのストレージプールデバイスに対して、その読み取り I/O が再発行されます。キャッシュデバイスの内容は、ほかのシステムキャッシュと同様に揮発的とみなされます。
ZFS ストレージプールを作成して管理する場合は、次の注意事項を確認してください。
既存のストレージプールの一部であるディスクのパーティションやラベルを変更しないでください。ルートプールディスクのパーティションやラベルを変更しようとすると、OS の再インストールが必要になる場合があります。
別のストレージプールのコンポーネント (ファイルやボリュームなど) を含むストレージプールを作成しないでください。このようなサポートされていない構成では、デッドロックが発生することがあります。
単一のスライスまたは単一のディスクを使用して作成されたプールには冗長性がなく、データ損失のリスクがあります。複数のスライスを使用してプールを作成しても、冗長性がなければ、やはりデータ損失のリスクがあります。複数のディスクにまたがる複数のスライスを使用して作成したプールは、ディスク全体を使用して作成したプールより管理が難しくなります。
ZFS 冗長性 (RAID-Z またはミラー) を使用して作成されていないプールでは、データの不一致が報告されるだけです。データの不一致は修正できません。
ZFS 冗長性を使用して作成されたプールは、ハードウェア障害によるダウンタイムの短縮に役立ちますが、ハードウェア障害、電源障害、またはケーブル切断の影響を受けないわけではありません。必ず定期的にデータをバックアップしてください。エンタープライズグレード以外のハードウェアでは、プールデータの定期的なバックアップを実行することが重要です。
プールはシステム間で共有できません。ZFS はクラスタファイルシステムではありません。