11.8. Ceph BlueStore BlueFS
BlueStore ブロックデータベースは、メタデータを RocksDB データベースのキーと値のペアとして格納します。ブロックデータベースは、ストレージデバイス上の小さな BlueFS パーティションに存在します。BlueFS は、RocksDB ファイルを保持するように設計された最小限のファイルシステムです。
BlueFS ファイル
RocksDB が生成する 3 種類のファイルを以下に示します。
-
CURRENT
、IDENTITY
、MANIFEST-000011
などの制御ファイル。 -
004112.sst
などの DB テーブルファイル。 -
000038.log
などの先読みログ。
さらに、ディレクトリー構造、ファイルマッピング、および操作ログとして機能する、BlueFS リプレイログ ino 1
として機能する内部の隠しファイルがあります。
フォールバック階層
BlueFS を使用すると、任意のファイルを任意のデバイスに配置できます。ファイルの一部は、WAL、DB、SLOW などの異なるデバイスに存在する場合もあります。BlueFS がファイルを置く場所には順序があります。ファイルは、1 次ストレージがなくなってから 2 次ストレージに、2 次ストレージがなくなってから 3 次ストレージに配置されます。
特定のファイルの順序は次のとおりです。
- ログ先行書き込み: WAL、DB、SLOW
-
リプレイログ
ino 1
: DB、SLOW 制御および DB ファイル: DB、SLOW
スペース不足時の制御と DB ファイルの順序: SLOW
重要制御および DB ファイルの順序には例外があります。RocksDB は、DB ファイルのスペースが不足していることを検出すると、ファイルを SLOW デバイスに配置するように直接通知します。
11.8.1. bluefs_buffered_io
設定の表示
ストレージ管理者は、bluefs_buffered_io
パラメーターの現在の設定を表示できます。
Red Hat Ceph Storage では、オプション bluefs_buffered_io
はデフォルトで True
に設定されます。このオプションにより、場合によっては BlueFS はバッファー読み取りを実行できるようになり、カーネルページキャッシュが RocksDB ブロック読み取りなどの読み取りのセカンダリーキャッシュとして機能できるようになります。
bluefs_buffered_io
の値を変更することは推奨されません。bluefs_buffered_io
パラメーターを変更する前に、Red Hat サポートアカウントチームにお問い合わせください。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- Ceph Monitor ノードへの root レベルのアクセス。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
-
bluefs_buffered_io
パラメーターの現在値は、3 つの方法で表示することができます。
方法 1
設定データベースに保存されている値を表示します。
例
[ceph: root@host01 /]# ceph config get osd bluefs_buffered_io
方法 2
特定の OSD の設定データベースに保存されている値を表示します。
構文
ceph config get OSD_ID bluefs_buffered_io
例
[ceph: root@host01 /]# ceph config get osd.2 bluefs_buffered_io
方法 3
実行値が設定データベースに保存されている値と異なる OSD の実行値を表示します。
構文
ceph config show OSD_ID bluefs_buffered_io
例
[ceph: root@host01 /]# ceph config show osd.3 bluefs_buffered_io
11.8.2. Ceph OSD の Ceph BlueFS 統計の表示
bluefs stats
コマンドを使用して、コロケーションされた Ceph OSD およびコロケーションされていない Ceph OSD に関する BluesFS 関連情報を表示します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- オブジェクトストアが BlueStore として設定されている。
- OSD ノードへのルートレベルのアクセス。
手順
Cephadm シェルにログインします。
例
[root@host01 ~]# cephadm shell
BlueStore OSD 統計を表示します。
構文
ceph daemon osd.OSD_ID bluefs stats
コロケーションされた OSD の例
[ceph: root@host01 /]# ceph daemon osd.1 bluefs stats 1 : device size 0x3bfc00000 : using 0x1a428000(420 MiB) wal_total:0, db_total:15296836403, slow_total:0
コロケーションされていない OSD の例
[ceph: root@host01 /]# ceph daemon osd.1 bluefs stats 0 : 1 : device size 0x1dfbfe000 : using 0x1100000(17 MiB) 2 : device size 0x27fc00000 : using 0x248000(2.3 MiB) RocksDBBlueFSVolumeSelector: wal_total:0, db_total:7646425907, slow_total:10196562739, db_avail:935539507 Usage matrix: DEV/LEV WAL DB SLOW * * REAL FILES LOG 0 B 4 MiB 0 B 0 B 0 B 756 KiB 1 WAL 0 B 4 MiB 0 B 0 B 0 B 3.3 MiB 1 DB 0 B 9 MiB 0 B 0 B 0 B 76 KiB 10 SLOW 0 B 0 B 0 B 0 B 0 B 0 B 0 TOTALS 0 B 17 MiB 0 B 0 B 0 B 0 B 12 MAXIMUMS: LOG 0 B 4 MiB 0 B 0 B 0 B 756 KiB WAL 0 B 4 MiB 0 B 0 B 0 B 3.3 MiB DB 0 B 11 MiB 0 B 0 B 0 B 112 KiB SLOW 0 B 0 B 0 B 0 B 0 B 0 B TOTALS 0 B 17 MiB 0 B 0 B 0 B 0 B
ここでは、以下のようになります。
0
: これは専用の WAL デバイス、つまりblock.wal
を参照します。1
: これは、専用の DB デバイス、つまりblock.db
を指します。2
: これは、block
またはslow
であるメインブロックデバイスを指します。device size
: デバイスの実際のサイズを表します。using
: 総使用量を表します。これは BlueFS に限定されません。注記DB および WAL デバイスは、BlueFS によってのみ使用されます。メインデバイスの場合には、保存された BlueStore データからの使用も含まれます。上記の例では、
2.3 MiB
が BlueStore からのデータです。wal_total
、db_total
、slow_total
: これらの値は、上記のデバイスの値を繰り返します。db_avail
: この値は、必要に応じて SLOW デバイスから取得できるバイト数を表します。使用マトリックス
-
WAL
、DB
、SLOW
の行: 特定のファイルが配置される予定だった場所を記述します。 -
LOG
の行: BlueFS リプレイログino 1
について記述します。 -
WAL
、DB
、SLOW
の列: データが実際に置かれる場所を記述します。値は割り当て単位です。WAL と DB は、パフォーマンス上の理由上、割り当ての単位が大きくなっています。 -
*/*
の列:ceph-bluestore-tool
に使用される仮想デバイスnew-db
およびnew-wal
に関連します。常に0 B
と表示されます。 -
REAL
の列: 実際の使用量をバイト単位で示します。 -
FILES
の列: ファイルの数を示します。
-
MAXIMUMS
の列: このテーブルは、使用マトリクスから各エントリーの最大値を取得します。
関連情報
- BlueFS ファイルの詳細は、Ceph BlueStore BlueFS を参照してください。
- BlueStore デバイスの詳細は、Ceph BlueStore デバイス を参照してください。