A.4. ブロックデバイスキャッシュオプション

Ceph ブロックデバイスのユーザー空間実装(librbd) は、Linux ページキャッシュを利用できないため、RBD キャッシュと呼ばれる、独自のインメモリーキャッシングが含まれます。Ceph ブロックデバイスのキャッシングは、適切に転送されたハードディスクキャッシュと同様に動作します。オペレーティングシステムがバリアまたはフラッシュ要求を送信すると、すべてのダーティーデータが Ceph OSD に書き込まれます。つまり、ライトバックキャッシュの使用は、フラッシュを適切に送信する仮想マシン(Linux カーネルバージョン 2.6.32 以降)で、または切り離された物理ハードディスクを使用するだけで安全です。キャッシュは Least Recently Used(LRU)アルゴリズムを使用し、write-back モードでは、スループットの向上に結び出せることができます。

Ceph ブロックデバイスは write-back キャッシュをサポートします。write-back キャッシュを有効にするには、rbd_cache = true を Ceph 設定ファイルの [client] セクションに追加します。デフォルトでは、librbd はキャッシュを実行しません。書き込みおよび読み取りはストレージクラスターに直接送信し、すべてのレプリカのディスクにある場合にのみ書き込みを返します。キャッシュを有効にすると、rbd_cache_max_dirty unflushed バイトがない限り、書き込みはすぐに返されます。この場合、書き込みによって、十分なバイトがフラッシュされるまで write-back およびブロックがトリガーされます。

Ceph ブロックデバイスは、ライトスルーキャッシュをサポートします。キャッシュのサイズを設定し、ライトバックキャッシュからライトスルーキャッシュに切り替えるためにターゲットおよび制限を設定できます。write-through モードを有効にするには、rbd_cache_max_dirty を 0 に設定します。つまり、書き込みはすべてのレプリカのディスクにある場合にのみ返されますが、読み取りはキャッシュから送られる可能性があります。キャッシュはクライアントのメモリーにあり、各 Ceph ブロックデバイスイメージには独自のメモリーがあります。キャッシュはクライアントにローカルであるため、イメージにアクセスすることがある場合は一貫性はありません。Ceph ブロックデバイス上で GFS や OCFS などのその他のファイルシステムを実行すると、キャッシュが有効では動作しません。

Ceph ブロックデバイスの Ceph 設定設定は、Ceph 設定ファイルの [client] セクションで設定する必要があります(デフォルトでは /etc/ceph/ceph.conf )。

設定には以下が含まれます。

rbd_cache
説明
RADOS Block Device(RBD)のキャッシュを有効にします。
Type
ブール値
必須
No
デフォルト
true
rbd_cache_size
説明
RBD キャッシュサイズ(バイト単位)。
Type
64 ビット整数
必須
No
デフォルト
32 MiB
rbd_cache_max_dirty
説明
キャッシュがライトバックをトリガーするダーティーな制限 (バイト単位)。0 の場合は、ライトスルーキャッシュを使用します。
Type
64 ビット整数
必須
制約
rbd キャッシュサイズよりも小さくなければなりません
デフォルト
24 MiB
rbd_cache_target_dirty
説明
キャッシュがデータストレージにデータを書き込む前にダーティーターゲット。キャッシュへの書き込みはブロックしません。
Type
64 ビット整数
必須
制約
rbd キャッシュの最大ダーティー数より小さくなければなりません
デフォルト
16 MiB
rbd_cache_max_dirty_age
説明
ライトバックの開始までダーティーデータがキャッシュに格納される秒数。
Type
浮動小数点 (Float)
必須
No
デフォルト
1.0
rbd_cache_max_dirty_object
説明
オブジェクトのダーティー制限: rbd_cache_size の自動計算の場合は 0 に設定されます。
Type
整数
デフォルト
0
rbd_cache_block_writes_upfront
説明
true の場合、aio_write 呼び出しが完了するまでにキャッシュへの書き込みがブロックされますfalse の場合は、aio_completion が呼び出される前にブロックされます。
Type
ブール値
デフォルト
false
rbd_cache_writethrough_until_flush
説明
ライトスルーモードで始め、最初のフラッシュリクエストを受け取るとライトバックに切り替えます。これは保守的ですが、rbd で実行している仮想マシンが 2.6.32 より前の virtio ドライバーなど、フラッシュを送信する場合は安全な設定です。
Type
ブール値
必須
No
デフォルト
true