11.3. 判読可能なコアダンプファイルの生成
Ceph デーモンがセグメンテーション違反で突然終了した場合は、その障害に関する情報を収集し、Red Hat サポートエンジニアに提供します。
このような情報は初期調査を迅速化します。また、サポートエンジニアは、コアダンプファイルの情報を Red Hat Ceph Storage クラスターの既知の問題と比較できます。
11.3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
ceph-debuginfo
パッケージがインストールされていない場合はインストールします。ceph-debuginfo
パッケージを含むリポジトリーを有効にします。Red Hat Enterprise Linux 7:
subscription-manager repos --enable=rhel-7-server-rhceph-4-DAEMON-debug-rpms
subscription-manager repos --enable=rhel-7-server-rhceph-4-DAEMON-debug-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph ノードの種別に応じて、
DAEMON
をosd
またはmon
に置き換えます。Red Hat Enterprise Linux 8:
subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-debug-rpms
subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-debug-rpms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-debuginfo
パッケージをインストールします。yum install ceph-debuginfo
[root@mon ~]# yum install ceph-debuginfo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
gdb
パッケージがインストールされていることを確認します。インストールされていない場合は、インストールします。yum install gdb
[root@mon ~]# yum install gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
デプロイメントのタイプに基づいて、手順を続けます。
11.3.2. ベアメタルデプロイメントでの判読可能なコアダンプファイルの生成 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルで Red Hat Ceph Storage を使用する場合、以下の手順に従ってコアダンプファイルを生成します。
手順
Ceph のコアダンプファイルの生成を有効にします。
/etc/systemd/system.conf
ファイルに以下のパラメーターを追加して、コアダンプファイルに適切なulimits
を設定します。DefaultLimitCORE=infinity
DefaultLimitCORE=infinity
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、
/lib/systemd/system/CLUSTER_NAME-DAEMON@.service
にある Ceph デーモンサービスファイルのPrivateTmp=true
パラメーターをコメントアウトします。PrivateTmp=true
[root@mon ~]# PrivateTmp=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow suid_dumpable
フラグを2
に設定して、Ceph デーモンがダンプコアファイルを生成できるようにします。sysctl fs.suid_dumpable=2
[root@mon ~]# sysctl fs.suid_dumpable=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアダンプファイルの場所を調整します。
sysctl kernel.core_pattern=/tmp/core
[root@mon ~]# sysctl kernel.core_pattern=/tmp/core
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セクション
[Coredump]
の下に次の行を追加して、/ etc/systemd/coredump.conf
ファイルを変更します。ProcessSizeMax=8G ExternalSizeMax=8G JournalSizeMax=8G
ProcessSizeMax=8G ExternalSizeMax=8G JournalSizeMax=8G
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
サービスを再読み込みし、変更を反映します。systemctl daemon-reload
[root@mon ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を反映するために、Ceph デーモンを再起動します。
systemctl restart ceph-DAEMON@ID
[root@mon ~]# systemctl restart ceph-DAEMON@ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デーモンタイプ (
osd
またはmon
) とその ID (OSD の場合は数値、または Monitors の短縮ホスト名) を指定します。以下に例を示します。systemctl restart ceph-osd@1
[root@mon ~]# systemctl restart ceph-osd@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- デーモンを再度起動するなど、障害を再現します。
GNU Debugger (GDB) を使用して、アプリケーションのコアダンプファイルから判読可能なバックトレースを生成します。
gdb /usr/bin/ceph-DAEMON /tmp/core.PID
gdb /usr/bin/ceph-DAEMON /tmp/core.PID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように、デーモンのタイプと失敗したプロセスの PID を指定します。
gdb /usr/bin/ceph-osd /tmp/core.123456
$ gdb /usr/bin/ceph-osd /tmp/core.123456
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GDB コマンドプロンプトで
set pag off
子マンとおよびset log on
コマンドを入力し、ページングを無効にし、ファイルへのロギングを有効にします。(gdb) set pag off (gdb) set log on
(gdb) set pag off (gdb) set log on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow backtrace
を入力して、thr a a bt full
コマンドをプロセスのすべてのスレッドに適用します。(gdb) thr a a bt full
(gdb) thr a a bt full
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バックトレースが生成されたら、
set log off
を入力して電源をオフにします。(gdb) set log off
(gdb) set log off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Red Hat カスタマーポータルにアクセスするシステムに
gdb.txt
ログファイルを転送して、サポートチケットにアタッチします。
11.3.3. コンテナー化されたデプロイメントでの判読可能なコアダンプファイルの生成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ceph Storage をコンテナーで使用する場合は、以下の手順に従ってコアダンプファイルを生成します。この手順では、コアダンプファイルを取得する 2 つのシナリオが関係します。
- SIGILL、SIGTRAP、SIGABRT、または SIGSEGV エラーにより、Ceph プロセスが予期せず終了した場合。
または
- 手動の場合。たとえば、Ceph プロセスが高い CPU サイクルを消費したり、応答がないなど、問題を手動でデバッグする場合。
前提条件
- Ceph コンテナーを実行するコンテナーノードへの root レベルのアクセス。
- 適切なデバッグパッケージのインストール
-
GNU Project Debugger (
gdb
) パッケージのインストール。
手順
SIGILL、SIGTRAP、SIGABRT、または SIGSEGV エラーにより、Ceph プロセスが予期せず終了した場合。
障害の発生した Ceph プロセスのあるコンテナーが実行しているノードの
systemd-coredump
サービスにコアパターンを設定します。以下に例を示します。echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %e" > /proc/sys/kernel/core_pattern
[root@mon]# echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %e" > /proc/sys/kernel/core_pattern
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph プロセスが原因でコンテナーに関する次の障害の有無を確認し、
/var/lib/systemd/coredump/
ディレクトリーでコアダンプファイルを検索します。以下に例を示します。ls -ltr /var/lib/systemd/coredump
[root@mon]# ls -ltr /var/lib/systemd/coredump total 8232 -rw-r-----. 1 root root 8427548 Jan 22 19:24 core.ceph-osd.167.5ede29340b6c4fe4845147f847514c12.15622.1584573794000000.xz
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Ceph Monitors および Ceph Managers のコアダンプファイルを手動でキャプチャーするには、以下を実行します。
コンテナーから Ceph デーモンの
ceph-mon
パッケージの詳細を取得します。Red Hat Enterprise Linux 7:
docker exec -it NAME /bin/bash rpm -qa | grep ceph
[root@mon]# docker exec -it NAME /bin/bash [root@mon]# rpm -qa | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
podman exec -it NAME /bin/bash rpm -qa | grep ceph
[root@mon]# podman exec -it NAME /bin/bash [root@mon]# rpm -qa | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME を、Ceph コンテナーの名前に置き換えます。
バックアップコピーを作成し、
ceph-mon@.service
ファイルを編集するために開きます。cp /etc/systemd/system/ceph-mon@.service /etc/systemd/system/ceph-mon@.service.orig
[root@mon]# cp /etc/systemd/system/ceph-mon@.service /etc/systemd/system/ceph-mon@.service.orig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-mon@.service
ファイルで、これらの 3 つのオプションを[Service]
セクションに追加します。各オプションは 1 行ずつ追加します。--pid=host \ --ipc=host \ --cap-add=SYS_PTRACE \
--pid=host \ --ipc=host \ --cap-add=SYS_PTRACE \
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Monitor デーモンを再起動します。
構文
systemctl restart ceph-mon@MONITOR_ID
systemctl restart ceph-mon@MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID を Ceph Monitor の ID 番号に置き換えます。
例
systemctl restart ceph-mon@1
[root@mon]# systemctl restart ceph-mon@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Monitor コンテナーに
gdb
パッケージをインストールします。Red Hat Enterprise Linux 7:
docker exec -it ceph-mon-MONITOR_ID /bin/bash
[root@mon]# docker exec -it ceph-mon-MONITOR_ID /bin/bash sh $ yum install gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
podman exec -it ceph-mon-MONITOR_ID /bin/bash
[root@mon]# podman exec -it ceph-mon-MONITOR_ID /bin/bash sh $ yum install gdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID を Ceph Monitor の ID 番号に置き換えます。
プロセス ID を検索します。
構文
ps -aef | grep PROCESS | grep -v run
ps -aef | grep PROCESS | grep -v run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PROCESS は、失敗したプロセス名 (例:
ceph-mon
) に置き換えます。例
ps -aef | grep ceph-mon | grep -v run
[root@mon]# ps -aef | grep ceph-mon | grep -v run ceph 15390 15266 0 18:54 ? 00:00:29 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 5 ceph 18110 17985 1 19:40 ? 00:00:08 /usr/bin/ceph-mon --cluster ceph --setroot ceph --setgroup ceph -d -i 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアダンプファイルを生成します。
構文
gcore ID
gcore ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ID を、前の手順で取得した失敗したプロセスの ID に置き換えます (例:
18110
)。例
gcore 18110
[root@mon]# gcore 18110 warning: target file /proc/18110/cmdline contained unexpected null characters Saved corefile core.18110
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアダンプファイルが正しく生成されていることを確認します。
例
ls -ltr
[root@mon]# ls -ltr total 709772 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Monitor コンテナー外部でコアダンプファイルをコピーします。
Red Hat Enterprise Linux 7:
docker cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
[root@mon]# docker cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
[root@mon]# podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID を Ceph Monitor の ID 番号に置き換え、MONITOR_PID をプロセス ID 番号に置き換えます。
ceph-mon@.service
ファイルのバックアップコピーを復元します。cp /etc/systemd/system/ceph-mon@.service.orig /etc/systemd/system/ceph-mon@.service
[root@mon]# cp /etc/systemd/system/ceph-mon@.service.orig /etc/systemd/system/ceph-mon@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph Monitor デーモンを再起動します。
構文
systemctl restart ceph-mon@MONITOR_ID
systemctl restart ceph-mon@MONITOR_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MONITOR_ID を Ceph Monitor の ID 番号に置き換えます。
例
systemctl restart ceph-mon@1
[root@mon]# systemctl restart ceph-mon@1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat サポートが分析するコアダンプファイルをアップロードする場合は、ステップ 4 を参照してください。
Ceph OSD のコアダンプファイルを手動でキャプチャーするには、以下を実行します。
コンテナーから Ceph デーモンの
ceph-osd
パッケージの詳細を取得します。Red Hat Enterprise Linux 7:
docker exec -it NAME /bin/bash rpm -qa | grep ceph
[root@osd]# docker exec -it NAME /bin/bash [root@osd]# rpm -qa | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
podman exec -it NAME /bin/bash rpm -qa | grep ceph
[root@osd]# podman exec -it NAME /bin/bash [root@osd]# rpm -qa | grep ceph
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NAME を、Ceph コンテナーの名前に置き換えます。
Ceph コンテナーが実行しているノードに、同じバージョンの
ceph-osd
パッケージ用の Ceph パッケージをインストールします。Red Hat Enterprise Linux 7:
yum install ceph-osd
[root@osd]# yum install ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 8:
dnf install ceph-osd
[root@osd]# dnf install ceph-osd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、適切なリポジトリーを最初に有効にします。詳細は、インストールガイドの Red Hat Ceph Storage の有効化 セクションを参照してください。
障害が発生したプロセスの ID を検索します。
ps -aef | grep PROCESS | grep -v run
ps -aef | grep PROCESS | grep -v run
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PROCESS は、失敗したプロセス名 (例:
ceph-osd
) に置き換えます。ps -aef | grep ceph-osd | grep -v run
[root@osd]# ps -aef | grep ceph-osd | grep -v run ceph 15390 15266 0 18:54 ? 00:00:29 /usr/bin/ceph-osd --cluster ceph --setroot ceph --setgroup ceph -d -i 5 ceph 18110 17985 1 19:40 ? 00:00:08 /usr/bin/ceph-osd --cluster ceph --setroot ceph --setgroup ceph -d -i 2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアダンプファイルを生成します。
gcore ID
gcore ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ID を、前の手順で取得した失敗したプロセスの ID に置き換えます (例:
18110
)。gcore 18110
[root@osd]# gcore 18110 warning: target file /proc/18110/cmdline contained unexpected null characters Saved corefile core.18110
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コアダンプファイルが正しく生成されていることを確認します。
ls -ltr
[root@osd]# ls -ltr total 709772 -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Red Hat サポートが分析するコアダンプファイルをアップロードする場合は、次のステップを参照してください。
- Red Hat サポートケースに分析用のコアダンプファイルをアップロードします。詳細は、Red Hat サポートエンジニアへの情報の提供 を参照してください。
11.3.4. 関連情報 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat Customer Portal の gdb を使用して、アプリケーションコアから読み取り可能なバックトレースを生成する方法
- Red Hat カスタマーポータルの アプリケーションがクラッシュまたはセグメンテーション違反が発生した時にコアファイルのダンプを有効にする