3.7. RADOS ブロックデバイス(RBD)

librbd の小規模 I/O パフォーマンスの向上

以前のリリースでは、NVMe ベースの Ceph クラスターでは、内部スレッドアーキテクチャーには制限があるため、1 つの librbd クライアントが 20K 4KiB IOPS を超えるのに苦労していました。

このリリースでは、librbd は新しい ASI Oベースの neorados API に加えて非同期リアクターモデルに切り替えられ、それによって小規模 I/O スループットが潜在的に数倍に増加し、レイテンシーが減少します。

期限切れの RBD イメージをパージするための組み込みスケジュール

以前のバージョンでは、ストレージ管理者は rbd trash purge コマンドに cron のようなジョブを設定することができました。

このリリースでは、期限切れの RBD イメージをパージするための組み込みスケジュールが利用可能になりました。rbd trash purge schedule add および関連コマンドを使用すると、定義されたスケジュールに基づいて期限切れのイメージを自動的にパージする RBD トレイを設定できます。

詳細は、『Red Hat Ceph Storage ブロックデバイスガイド』「自動トレイパージスケジュールの定義」セクションを参照してください。

新規の ceph-immutable-object-cache デーモンで不変なオブジェクトの読み取りサービス

このリリースでは、新しい ceph-immutable-object-cache デーモンをハイパーバイザーノードにデプロイして、親イメージのスナップショットなどの不変オブジェクトの読み取りを処理できます。新しい parent_cache librbd プラグインは、親イメージからすべての読み取りのデーモンと調整し、必要に応じて結果をキャッシュに追加します。これにより、複数の仮想マシンがゴールドイメージを同時に共有するシナリオのレイテンシーが短縮されます。

詳細は、『Red Hat Ceph Storage ブロックデバイスガイド「'ceph-immutable-object-cache' デーモンの管理」の章を参照してください。

librbd ベースのクライアントでの圧縮性または非圧縮性のヒントの送信のサポート

以前のバージョンでは、データが圧縮可能であるかどうかにかかわらず、基礎となる OSD オブジェクトストアバックエンドにヒントを提供する方法はありませんでした。

このリリースでは、rbd_compression_hint 構成オプションを使用して、データが圧縮可能か非圧縮可能かを、基盤となる OSD オブジェクトストアバックエンドにヒントを与えることができます。これは、イメージごとに、プールごとに実行することも、グローバルで実行することができます。

詳細は、『Red Hat Ceph Storage ブロックデバイスガイド』「ブロックデバイスの入力および出力オプション」セクションを参照してください。

librbd クライアントでのレプリカからの読み取りポリシーのオーバーライドに対応

以前のバージョンは、DC/AZ 間ネットワークトラフィックを制限する方法はありませんでした。クラスターがデータセンターにまたがっている場合、プライマリー OSD は、PG 内の他の OSD と比較して待ち時間とコストが高くなる可能性があります。

このリリースでは、rbd_read_from_replica_policy 設定オプションが使用可能になり、CRUSH マップおよび CRUSH 階層内のクライアントの場所で定義されているように、ランダム OSD または PG 内の最も近い OSD に読み取りを送信するために使用できます。これは、イメージごとに、プールごとに実行することも、グローバルで実行することができます。

詳細は、『Red Hat Ceph Storage ブロックデバイスガイド』「ブロックデバイスの入力および出力オプション」セクションを参照してください。

RBD イメージのオンライン再スパーシング

以前のバージョンではゼロに設定されていても、基盤となる OSD オブジェクトストアに完全に割り当てられているイメージエクステントの領域を再利用することは、非常に面倒でエラーが発生しやすい状態でありました。このリリースでは、新しい rbd sparsify コマンドを使用して、ゼロデータのチャンクについてイメージをスキャンし、基盤となる OSD オブジェクトストア内の対応する範囲の割り当てを解除できるようになりました。

ocf:ceph:rbd クラスターリソースエージェントが namespace に対応

以前のバージョンでは、名前空間内に存在するイメージに ocf:ceph:rbd クラスターリソースエージェントを使用することができませんでした。

このリリースでは、新しい pool_namespace リソースエージェントパラメーターを使用して、名前空間内のイメージを処理できます。

RBD イメージは即座にインポート可能

rbd import コマンドを使用すると、新しいイメージは完全に入力された直後に使用できます。

このリリースでは、イメージのライブマイグレーション機能が拡張されて外部データソースをサポートし、rbd import の代わりに使用できるようになりました。新しいイメージは、ローカルファイル、HTTP(S) 経由で提供されるリモートファイル、もしくは rawqcow、または qcow2 形式のリモートAmazon S3 互換バケットにリンクでき、すぐに使用できるようになります。イメージは、有効な使用時に実行可能なバックグラウンド操作として設定されます。

librbd 内の LUKS 暗号化に対応

librbd の上に QEMU LUKS 暗号化または dm-crypt カーネルモジュールを階層化すると、コピーオンライトクローンイメージがその親イメージと同じ暗号化キーを使用する必要があるという大きな制限があります。このリリースでは、LUKS 暗号化のサポートが librbd 内に組み込まれました。新しい「rbd encryption format」コマンドを使用して、イメージを luks1 または luks2 暗号化フォーマットにフォーマットできるようになりました。