第6章 Ceph MDS のトラブルシューティング
ストレージ管理者は、Ceph Metadata Server (MDS) を使用する際に発生する可能性のあるほとんどの一般的な問題のトラブルシューティングを行うことができます。発生する可能性のある一般的なエラーの一部:
- MDS ノードに障害が発生し、新たな MDS のデプロイメントが必要となる。
- MDS ノードに障害が発生し、MDS ノードの再デプロイメントが必要となる。
6.1. Ceph MDS の再デプロイ
Ceph ファイルシステムをデプロイするには、Ceph Metadata Server (MDS) デーモンが必要です。クラスター内の MDS ノードに障害が発生した場合、MDS サーバーを削除し、新規または既存のサーバーを追加して Ceph Metadata Server を再デプロイできます。コマンドラインインターフェイスまたは Ansible Playbook を使用して、MDS サーバーを追加または削除できます。
6.1.1. 前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
6.1.2. Ansible を使用した Ceph MDS の削除
Ansible を使用して Ceph Metadata Server (MDS) を削除するには、Playbook shrink-mds
を使用します。
MDS の削除後に引き継げる MDS がない場合、そのファイルシステムはクライアントが利用できなくなります。これが望ましくない場合には、オフラインにする MDS を削除する前に別の MDS を追加することを検討してください。
前提条件
- 1 つ以上の MDS ノード。
- Ansible によりデプロイされた実行中の Red Hat Ceph Storage クラスター
-
Ansible 管理ノードに
root
またはsudo
アクセスできる。
手順
- Ansible 管理ノードにログインします。
/usr/share/ceph-ansible
ディレクトリーに移動します。例
[ansible@admin ~]$ cd /usr/share/ceph-ansible
Ansible の Playbook
shrink-mds.yml
を実行します。プロンプトが表示されたら、yes
と入力して、クラスターの縮小を確認します。Syntax
ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=ID -i hosts
ID は、削除する MDS ノードの ID に置き換えます。1 回の Playbook の実行で削除できるのは 1 つの Ceph MDS だけです。
例
[ansible @admin ceph-ansible]$ ansible-playbook infrastructure-playbooks/shrink-mds.yml -e mds_to_kill=node02 -i hosts
root
またはsudo
アクセスで、/usr/share/ceph-ansible/hosts
インベントリーファイルを開いて編集し、[mdss]
セクションの MDS ノードを削除します。Syntax
[mdss] MDS_NODE_NAME MDS_NODE_NAME
例
[mdss] node01 node03
この例では、
node02
が[mdss]
のリストから削除されました。
検証
MDS デーモンのステータスを確認します。
Syntax
ceph fs dump
例
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
関連情報
- Red Hat Ceph Storage のインストールに関する詳細は、Red Hat Ceph Storage インストールガイド を参照してください。
- Ansible を使用した MDS の追加に関する詳細は、Red Hat Ceph Storage トラブルシューティングガイドの Ansible を使用した Ceph MDS の追加 セクションを参照してください。
6.1.3. コマンドラインインターフェイスを使用した Ceph MDS の削除
コマンドラインインターフェイスを使用して、Ceph Metadata Server (MDS) を手動で削除できます。
現在の MDS の削除後に引き継げる MDS がない場合、そのファイルシステムはクライアントが利用できなくなります。これが望ましくない場合は、既存の MDS を削除する前に MDS を追加することを検討してください。
前提条件
-
ceph-common
パッケージがインストールされている。 - 稼働中の Red Hat Ceph Storage クラスターがある。
-
MDS ノードに
root
またはsudo
アクセスできる。
手順
- MDS デーモンを削除する Ceph MDS ノードにログインします。
Ceph MDS サービスを停止します。
Syntax
sudo systemctl stop ceph-mds@HOST_NAME
HOST_NAME を、デーモンが実行されているホストの短縮名に置き換えます。
例
[admin@node02 ~]$ sudo systemctl stop ceph-mds@node02
MDS をこのノードに再デプロイしない場合は、MDS サービスを無効にします。
Syntax
sudo systemctl disable ceph-mds@HOST_NAME
HOST_NAME を、デーモンを無効にするホストの短縮名に置き換えます。
例
[admin@node02 ~]$ sudo systemctl disable ceph-mds@node02
MDS ノードの
/var/lib/ceph/mds/ceph-MDS_ID
ディレクトリーを削除します。Syntax
sudo rm -fr /var/lib/ceph/mds/ceph-MDS_ID
MDS_ID を、MDS デーモンを削除する MDS ノードの ID に置き換えます。
例
[admin@node02 ~]$ sudo rm -fr /var/lib/ceph/mds/ceph-node02
検証
MDS デーモンのステータスを確認します。
Syntax
ceph fs dump
例
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
関連情報
- Red Hat Ceph Storage のインストールに関する詳細は、Red Hat Ceph Storage インストールガイド を参照してください。
- コマンドラインインターフェイスを使用した MDS の追加に関する詳細は、Red Hat Ceph Storage トラブルシューティングガイドの コマンドラインインターフェイスを使用した Ceph MDS の追加 セクションを参照してください。
6.1.4. Ansible を使用した Ceph MDS の追加
Ansible Playbook を使用して Ceph Metadata Server (MDS) を追加します。
前提条件
- Ansible によりデプロイされた実行中の Red Hat Ceph Storage クラスター
-
Ansible 管理ノードに
root
またはsudo
アクセスできる。 - MDS ノードとしてプロビジョニングできる新規または既存のサーバー。
手順
- Ansible 管理ノードにログインします。
/usr/share/ceph-ansible
ディレクトリーに移動します。例
[ansible@admin ~]$ cd /usr/share/ceph-ansible
root
またはsudo
アクセスで、/usr/share/ceph-ansible/hosts
インベントリーファイルを開いて編集し、[mdss]
セクションで MDS ノードを追加します。Syntax
[mdss] MDS_NODE_NAME NEW_MDS_NODE_NAME
NEW_MDS_NODE_NAME を、MDS サーバーをインストールするノードのホスト名に置き換えます。
あるいは、
[osds]
セクションおよび[mdss]
セクションに同じノードを追加して、1 つのノード上に MDS デーモンと OSD デーモンを共存させることができます。例
[mdss] node01 node03
ansible
ユーザーとして、Ansible Playbook を実行して MDS ノードをプロビジョニングします。ベアメタル デプロイメント:
[ansible@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss -i hosts
コンテナー デプロイメント:
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit mdss -i hosts
Ansible Playbook の実行が終了すると、新しい Ceph MDS ノードがストレージクラスターに表示されます。
検証
MDS デーモンのステータスを確認します。
Syntax
ceph fs dump
例
[ansible@admin ceph-ansible]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
あるいは、
ceph mds stat
コマンドを使用して、MDS がアクティブな状態にあるかどうかを確認することができます。Syntax
ceph mds stat
例
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
関連情報
- Red Hat Ceph Storage のインストールに関する詳細は、Red Hat Ceph Storage インストールガイド を参照してください。
- Ansible を使用した MDS の削除に関する詳細は、Red Hat Ceph Storage トラブルシューティングガイドの Ansible を使用した Ceph MDS の削除 セクションを参照してください。
6.1.5. コマンドラインインターフェイスを使用した Ceph MDS の追加
コマンドラインインターフェイスを使用して、Ceph Metadata Server (MDS) を手動で追加できます。
前提条件
-
ceph-common
パッケージがインストールされている。 - 稼働中の Red Hat Ceph Storage クラスターがある。
-
MDS ノードに
root
またはsudo
アクセスできる。 - MDS ノードとしてプロビジョニングできる新規または既存のサーバー。
手順
ノードにログインして MDS マウントポイントを作成して、MDS ノードを追加します。
Syntax
sudo mkdir /var/lib/ceph/mds/ceph-MDS_ID
MDS_ID を、MDS デーモンを追加する MDS ノードの ID に置き換えます。
例
[admin@node03 ~]$ sudo mkdir /var/lib/ceph/mds/ceph-node03
これが新しい MDS ノードである場合は、Cephx 認証を使用している場合は認証キーを作成します。
Syntax
sudo ceph auth get-or-create mds.MDS_ID mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-MDS_ID/keyring
MDS_ID を、MDS デーモンをデプロイする MDS ノードの ID に置き換えます。
例
[admin@node03 ~]$ sudo ceph auth get-or-create mds.node03 mon 'profile mds' mgr 'profile mds' mds 'allow *' osd 'allow *' > /var/lib/ceph/mds/ceph-node03/keyring
注記Cephx 認証はデフォルトで有効になっています。Cephx 認証の詳細は、関連情報セクションの Cephx 認証のリンクを参照してください。
MDS デーモンを起動します。
Syntax
sudo systemctl start ceph-mds@HOST_NAME
HOST_NAME を、デーモンを起動するホストの短縮名に置き換えます。
例
[admin@node03 ~]$ sudo systemctl start ceph-mds@node03
MDS サービスを有効にします。
Syntax
systemctl enable ceph-mds@HOST_NAME
HOST_NAME を、サービスを有効にするホストの短縮名に置き換えます。
例
[admin@node03 ~]$ sudo systemctl enable ceph-mds@node03
検証
MDS デーモンのステータスを確認します。
Syntax
ceph fs dump
例
[admin@mon]$ ceph fs dump [mds.node01 {0:115304} state up:active seq 5 addr [v2:172.25.250.10:6800/695510951,v1:172.25.250.10:6801/695510951]] Standby daemons: [mds.node03 {-1:144437} state up:standby seq 2 addr [v2:172.25.250.11:6800/172950087,v1:172.25.250.11:6801/172950087]]
あるいは、
ceph mds stat
コマンドを使用して、MDS がアクティブな状態にあるかどうかを確認することができます。Syntax
ceph mds stat
例
[ansible@admin ceph-ansible]$ ceph mds stat cephfs:1 {0=node01=up:active} 1 up:standby
関連情報
- Red Hat Ceph Storage のインストールに関する詳細は、Red Hat Ceph Storage インストールガイド を参照してください。
- Cephx 認証についての詳しい情報は、Red Hat Ceph Storage Configuration Guide を参照してください。
- コマンドラインインターフェイスを使用した MDS の削除 に関する詳細は、Red Hat Ceph Storage トラブルシューティングガイドの コマンドラインインターフェイスを使用した Ceph MDS の削除 セクションを参照してください。