ZFS インテントログ (ZIL) は、同期トランザクションの POSIX 要件を満たしています。たとえば、多くの場合、データベースがシステムコールから戻るときは、そのトランザクションが安定したストレージデバイス上に置かれている必要があります。NFS やその他のアプリケーションでは、データの安定性を確保するために fsync() も使用できます。
デフォルトでは、ZIL はメインプール内のブロックから割り当てられます。ただし、NVRAM や専用ディスクなど別個のインテントログデバイスを使用することにより、パフォーマンスを向上できます。
ZFS インテントログ用のログデバイスは、データベースのログファイルとは関連がありません。別個のログデバイスをデプロイすることによりパフォーマンスは向上しますが、デバイスタイプ、プールのハードウェア構成、およびアプリケーションの作業負荷に応じて向上します。予備のパフォーマンス情報については、http://blogs.oracle.com/perrin/entry/slog_blog_or_blogging_on を参照してください。
RAID-Z ログデバイス用にではなく、冗長性のためだけにミラー化ログデバイスを構成できます。ミラー化されていないログデバイスで障害が発生した場合、ログブロックの格納はストレージプールに戻されます。より大きなストレージプールの一部としてログデバイスの追加、交換、除去、接続、切り離し、インポート、およびエクスポートを実行できます。
ZFS ログデバイスに関する次の点を考慮してください。
ログデバイスの最小サイズは、プール内の各デバイスの最小サイズと同じで、64M バイトです。ログデバイスに格納される可能性のあるログに記録されるデータは比較的少量です。ログのトランザクションまたはシステムコールがコミットされると、ログブロックは解放されます。
ログデバイスの最大サイズは物理メモリーのサイズの約半分にします。これは、格納できる潜在的なログデータの最大量です。たとえば、16G バイトの物理メモリーを備えたシステムの場合、ログデバイスの最大サイズとして 8G バイトを検討してください。
ログデバイスでストレージプールを作成するには、log キーワードを使用します。次の例は、ミラー化ログデバイスで datap と呼ばれるミラー化ストレージプールを構成する方法を示します。
# 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