3.4. Ceph クライアントの Mandatory Exclusive Locks
必須の排他的ロックは、複数のマウントが設定されている場合に、RBD を単一のクライアントにロックする機能です。これは、マウントされた複数のクライアントが同じオブジェクトに書き込もうとした場合の書き込みの競合状況に対処する上で役立ちます。この機能は、前セクションで説明した object-watch-notify
で構築されます。したがって、書き込み時に、あるクライアントがオブジェクトに排他ロックを最初に確立すると、マウントされた別のクライアントは、書き込み前にピアがオブジェクトにロックを設定したかどうかを最初に確認します。
この機能を有効にすると、1 つのクライアントのみが一度に RBD デバイスを変更することができます。特に、スナップショットの作成/削除
などの操作中に内部 RBD 構造を変更する場合などです。また、障害が発生したクライアントをある程度保護します。たとえば、仮想マシンが応答していないように見え、他の場所で同じディスクを使用してそのコピーを開始した場合、最初の仮想マシンは Ceph でブラックリストに登録され、新しい仮想マシンを破損することはできません。
必須の排他的ロックは、デフォルトでは有効になっていません。イメージの作成時に、--image-feature
パラメーターを使用して明示的に有効にする必要があります。
例
[root@mon ~]# rbd create --size 102400 mypool/myimage --image-feature 5
ここで、数値の 5
は、1
と 4
の合計であり、1
は階層化サポートを有効にし、4
は排他的ロックサポートを有効にします。したがって、上記のコマンドは 100 GB rbd イメージを作成し、階層化および排他的ロックを有効にします。
必須の排他的ロックも object map
の前提条件となります。排他的なロックサポートを有効にしないと、オブジェクトマップのサポートを有効にすることはできません。
必須の排他的ロックは、ミラーリングのためのいくつかの基本的な作業も行います。