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

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

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

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

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

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

rbd_cache
説明
RADOS Block Device (RBD) のキャッシュを有効にします。
Boolean
必須
いいえ
デフォルト
true
rbd_cache_size
説明
RBD キャッシュサイズ (バイト単位)。
64 ビット整数
必須
いいえ
デフォルト
32 MiB
rbd_cache_max_dirty
説明
キャッシュがライトバックをトリガーする ダーティー 制限 (バイト単位)。0 の場合、ライトスルー (ライトスルー) キャッシュを使用します。
64 ビット整数
必須
いいえ
制約
rbd cache size より小さくなければなりません。
デフォルト
24 MiB
rbd_cache_target_dirty
説明
キャッシュがデータストレージにデータを書き込む前に dirty target。キャッシュへの書き込みをブロックしません。
64 ビット整数
必須
いいえ
制約
rbd cache max dirty 未満である必要があります。
デフォルト
16 MiB
rbd_cache_max_dirty_age
説明
ライトバックの開始前にダーティーデータがキャッシュ内にある秒数。
浮動小数点 (Float)
必須
いいえ
デフォルト
1.0
rbd_cache_max_dirty_object
説明
オブジェクトのダーティー制限: rbd_cache_size からの自動計算の場合は 0 に設定します。
整数
デフォルト
0
rbd_cache_block_writes_upfront
説明
true の場合、aio_write 呼び出しが完了するまでキャッシュへの書き込みをブロックします。false の場合、aio_completion が呼び出される前にブロックされます。
Boolean
デフォルト
false
rbd_cache_writethrough_until_flush
説明
write-through モードで起動し、最初のフラッシュ要求が受信後に write-back に切り替えます。この有効化は Conservative ですが、rbd で実行している仮想マシンが、2.6.32 以前の Linux における virtio ドライバーと同様にフラッシュを送信することが古い場合は安全な設定です。
Boolean
必須
いいえ
デフォルト
true