7.3. cache_settings
Ceph ブロックデバイスのユーザー空間実装 (librbd
) は Linux ページキャッシュを利用できないため、RBD キャッシュ
と呼ばれる独自のインメモリーキャッシュが含まれます。RBD キャッシュは、適切に動作するハードディスクキャッシュのように動作します。OS がバリアまたはフラッシュ要求を送信すると、ダーティーデータはすべて OSD に書き込まれます。つまり、ライトバックキャッシングを使用することは、フラッシュを適切に送信する仮想マシン(つまり Linux kernel >= 2.6.32)で適切に機能する物理ハードディスクを使用するだけで安全です。キャッシュは Least Recently Used (LRU) アルゴリズムを使用し、ライトバックモードでは、スループット向上のために連続したリクエストを結合できます。
Ceph は RBD のライトバックキャッシュをサポートします。これを有効にするには、ceph.conf
ファイルの [client]
セクションに rbd cache = true
を追加します。デフォルトでは、librbd はキャッシュを実行しません。書き込みおよび読み取りはストレージクラスターに直接移動し、データがすべてのレプリカのディスクにある場合にのみ書き込みに戻ります。キャッシュを有効にすると、rbd_cache_max_dirty の非フラッシュバイト数を超えない限り、書き込みは即座に返します。この場合、書き込みによって、十分なバイト数がフラッシュされるまでライトバックおよびブロックがトリガーされます。
Ceph は RBD のライトスルーキャッシュをサポートします。キャッシュのサイズを設定し、ターゲットと制限を設定して、ライトバックキャッシュから write-through キャッシュに切り替えることができます。write-through モードを有効にするには、rbd_cache_max_dirty
を 0 に設定します。つまり、書き込みは、データがすべてのレプリカのディスクにある場合にのみ返されますが、読み取りはキャッシュから送られる可能性があります。キャッシュはクライアントのメモリーにあり、各 RBD イメージには独自のイメージがあります。キャッシュはクライアントのローカルなので、イメージにアクセスする他の条件がある場合は、一貫性がありません。RBD 上で GFS または OCFS を実行しても、キャッシュが有効になっています。
RBD の ceph.conf
ファイル設定は、設定ファイルの [client]
セクションで設定する必要があります。設定には以下が含まれます。
- rbd_cache
- 説明
- RADOS Block Device (RBD) のキャッシュを有効にします。
- 型
- ブール値
- 必須
- いいえ
- デフォルト
-
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
が呼び出される前にブロックされます。 - 型
- ブール値
- デフォルト
-
false
- rbd_cache_writethrough_until_flush
- 説明
- write-through モードで起動し、最初のフラッシュ要求が受信後に write-back に切り替えます。この有効化は Conservative ですが、rbd で実行している仮想マシンが、2.6.32 以前の Linux における virtio ドライバーと同様にフラッシュを送信することが古い場合は安全な設定です。
- 型
- ブール値
- 必須
- いいえ
- デフォルト
-
true