Web更新

UnuntuでZFSを使ってみよう 第12回 ARCとZILについて知ろう

前回は、ZFSの読み書きの仕組みを説明しました。今回は、読み書き両方に関連があるARCとZILについて説明します。

ARC

ARCは、SolarisではAdaptive Replacement Cacheと呼ばれていましたが、Linuxでは、Adjustable Replacement Cache と呼んでいるようです(Aaron Toponce’s ZFS on Linux User Guide を参照)。ARCはキャッシュアルゴリズムの一種ですが、ZFSではファイルキャッシュとして利用しているため、ファイルキャッシュと同義としてよく扱われます。ARCアルゴリズムの詳細は、The Adjustable Replacement Cacheを参考してください。このファイルキャッシュによって、よく使用されるファイルを高速に読み書きできます。

ARCの最大値

ZFSのARCは、最大1で使用可能なメモリの半分を専有します。これは固定値ではなく、メモリとファイルキャッシュの使用状況によって変わります。このARCの最大値は、以下のようにパラメータを設定ファイルへ記述することで変更できます。この数値はバイト数です。

echo "options zfs zfs_arc_max=34359738368" >> /etc/modprobe.d/zfs.conf

起動中のOSのARCの最大値は、以下のように /sys/module/zfs/parameters/zfs_arc_max へバイト数を入力が可能です。

echo "34359738368" > /sys/module/zfs/parameters/zfs_arc_max

しかし、ARCの最大値はその時点では反映されず、徐々にARCが開放されます。

L2ARC

ARCには、ARC領域メモリに保管しきれなかったキャッシュを配置する、L2ARCを設定できます。L2ARCはストレージ領域を設定する必要がありますが、SSDやNVMeなどの高速なストレージを使用することで、一般的なHDDよりも高速に動作します。

L2ARCを既存のzpoll「tank」に導入するには、以下のようにコマンド実行します。複数のデバイスを同時に追加することも可能です。

# zpool add tank cache /dev/sdd
   or
# zpool add tank cache /dev/sdd /dev/sde 
通常のストレージとL2ARCの比較

The Adjustable Replacement Cacheから抜粋

このようなハイブリッド・ストレージ構成を取ることで、より多くのファイルを高速にキャッシュできます。

ZIL

ZILはZFS Intent Logの略で、一般的なファイルシステムのジャーナルに相当します。ジャーナルは、書き込まれるすべてのデータが保存され、後にトランザクションの書き込みとしてFlashされるロギング機構です。

通常ZILは、zpoolを構成するストレージ内に配置されます。ZILは64KB より小さい書き込みの場合はデータをそのまま保存し、それ以外ではログレコードに保存されている同期データへのポインタを保持します。

ZILは同期書き込み(O_SYNC)要求時のみに使用されます。この呼び出しは、データベース、NFS、iSCSIターゲットなどで使用されます。一般的な書き込みではZILを使用せずに、ARCからデータの非同期書き込みが行われます。書き込みまれたZILの内容はARCにも配置されるため、同期書き込みでもZILからデータが読み出されることはありません。ただし、ストレージの書き込みトランザクションの途中などで電源断などの障害が発生したときは、OS再起動時にZILの領域からデータが読み込まれます。

SLOG

SLOGはSeperate Intent Logのことで、ZILを別のストレージデバイスに配置することを意味します。一般的なZILの配置は、zpoolのストレージと変わらないため、遅くなることがあります。このため、ZILをSSDやNVMeなどの高速なストレージに配置できます。またSLOGにすることで、書き込みアルゴリズムも変わるためより同期書き込みが高速になります。SLOGを高速ストレージに出すことは、上記のハイブリッド・ストレージ構成の一部と扱われます。

SLOGを既存のzpoll「tank」に導入するには、以下のようにコマンド実行します。SLOGは1つのストレージでも構成できますが、高可用性を考えてミラー構成にすることも可能です。

# zpool add tank log /dev/sdf
  or
# zpool add tank log mirror /dev/sdf /dev/sdg

データベース使用時や、NFS/iSCSIターゲットとしてZFSを使用する際は、SLOGを使用することをお勧めします。

終わりに

今回はARCとZILについて説明しました。L2ARCやSLOGを高速デバイスに配置することで、ZFSのメモリ不足などを解消したり、高可用にできます。次回は、ZFSのクローン機能とスナップショットとの違いを説明します。次回をお楽しみに。

さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。
DHT OSS導入コンサルティングサービス

関連記事一覧