4.3. モニターストアのリカバリー
Ceph Monitors は、クラスターマップを LevelDB などのキーと値ストアに保存します。ストアが Monitor に破損した場合は、Monitor が予期せず終了し、再度起動に失敗します。Ceph ログには以下のエラーが含まれる場合があります。
Corruption: error in middle of record Corruption: 1 missing files; e.g.: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb
Corruption: error in middle of record
Corruption: 1 missing files; e.g.: /var/lib/ceph/mon/mon.0/store.db/1234567.ldb
実稼働クラスターは、少なくとも 3 つのモニターを使用し、失敗した場合は別のモニターと置き換えることができます。ただし、特定の状況では、Monitor にストアがすべて破損する可能性があります。たとえば、Monitor ノードが誤ってディスクまたはファイルシステムの設定を設定したと、電源の停止により、下層のファイルシステムが破損する可能性があります。
ストアがすべての Monitor に破損した場合は、ceph-monstore-tool および
。
ceph-objectstore-tool
という名前のユーティリティーを使用して、OSD ノードに保存されている情報で復元できます
この手順では、以下の情報を復元できません。
- Metadata Daemon Server(MDS)キーリングおよびマップ
配置グループの設定:
-
ceph pg set_full_ratio
コマンドを使用して設定するfull ratio
-
ceph pg set_nearfull_ratio
コマンドを使用して設定するほぼnearfull ratio
-
古いバックアップからモニターストアを復元しないでください。以下の手順に従って、現在のクラスター状態からモニターストアを再構築します。
作業を開始する前に
-
rsync
ユーティリティーおよびceph-test
パッケージがインストールされていることを確認します。
手順: モニターストアのリカバリー
破損したストアで Monitor ノードから以下のコマンドを使用します。
すべての OSD ノードからクラスターマップを収集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <directory>
を、収集したクラスターマップを保存する一時ディレクトリーに置き換えます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 適切な機能を設定します。
ceph-authtool <keyring> -n mon. --cap mon 'allow *' ceph-authtool <keyring> -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *'
ceph-authtool <keyring> -n mon. --cap mon 'allow *' ceph-authtool <keyring> -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <keyring>
をクライアント管理キーリングへのパスに置き換えます。以下に例を示します。ceph-authtool /etc/ceph/ceph.client.admin.keyring -n mon. --cap mon 'allow *' ceph-authtool /etc/ceph/ceph.client.admin.keyring -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *'
$ ceph-authtool /etc/ceph/ceph.client.admin.keyring -n mon. --cap mon 'allow *' $ ceph-authtool /etc/ceph/ceph.client.admin.keyring -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 収集したマップから Monitor ストアを再構築します。
ceph-monstore-tool <directory> rebuild -- --keyring <keyring>
ceph-monstore-tool <directory> rebuild -- --keyring <keyring>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <directory>
を最初のステップの一時ディレクトリーに、<keyring>
をクライアント管理キーリングへのパスに置き換えます。以下に例を示します。ceph-monstore-tool /tmp/mon-store rebuild -- --keyring /etc/ceph/ceph.client.admin.keyring
$ ceph-monstore-tool /tmp/mon-store rebuild -- --keyring /etc/ceph/ceph.client.admin.keyring
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記cephfx
認証を使用しない場合は、--keyring
オプションを省略します。ceph-monstore-tool /tmp/mon-store rebuild
$ ceph-monstore-tool /tmp/mon-store rebuild
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 破損したストアをバックアップします。
mv /var/lib/ceph/mon/<mon-ID>/store.db \ /var/lib/ceph/mon/<mon-ID>/store.db.corrupted
mv /var/lib/ceph/mon/<mon-ID>/store.db \ /var/lib/ceph/mon/<mon-ID>/store.db.corrupted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mon-ID>
を Monitor ID に置き換えます(例:<mon.0>
)。mv /var/lib/ceph/mon/mon.0/store.db \ /var/lib/ceph/mon/mon.0/store.db.corrupted
# mv /var/lib/ceph/mon/mon.0/store.db \ /var/lib/ceph/mon/mon.0/store.db.corrupted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 破損したストアを置き換えます。
mv /tmp/mon-store/store.db /var/lib/ceph/mon/<mon-ID>/store.db
mv /tmp/mon-store/store.db /var/lib/ceph/mon/<mon-ID>/store.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mon-ID>
を Monitor ID に置き換えます(例:<mon.0>
)。mv /tmp/mon-store/store.db /var/lib/ceph/mon/mon.0/store.db
# mv /tmp/mon-store/store.db /var/lib/ceph/mon/mon.0/store.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 破損したストアを持つすべての Monitor に対してこの手順を繰り返します。
新しいストアの所有者を変更します。
chown -R ceph:ceph /var/lib/ceph/mon/<mon-ID>/store.db
chown -R ceph:ceph /var/lib/ceph/mon/<mon-ID>/store.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <mon-ID>
を Monitor ID に置き換えます(例:<mon.0>
)。chown -R ceph:ceph /var/lib/ceph/mon/mon.0/store.db
# chown -R ceph:ceph /var/lib/ceph/mon/mon.0/store.db
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 破損したストアを持つすべての Monitor に対してこの手順を繰り返します。