10.2. 判読可能なコアダンプファイルの生成


Ceph デーモンがセグメンテーション違反で突然終了した場合は、その障害に関する情報を収集し、Red Hat サポートエンジニアに提供します。

このような情報は初期調査を迅速化します。また、サポートエンジニアは、コアダンプファイルの情報を Red Hat Ceph Storage クラスターの既知の問題と比較できます。

前提条件

  1. debuginfo パッケージがインストールされていない場合はインストールしておく。

    1. 次のリポジトリーを有効にして、必要な debuginfo パッケージをインストールしておく。

      [root@host01 ~]# subscription-manager repos --enable=rhceph-6-tools-for-rhel-9-x86_64-rpms
      [root@host01 ~]# yum --enable=rhceph-6-tools-for-rhel-9-x86_64-debug-rpms

      リポジトリーを有効にすると、サポートされるパッケージのこの一覧から必要な debug info パッケージをインストールできます。

      ceph-base-debuginfo
      ceph-common-debuginfo
      ceph-debugsource
      ceph-fuse-debuginfo
      ceph-immutable-object-cache-debuginfo
      ceph-mds-debuginfo
      ceph-mgr-debuginfo
      ceph-mon-debuginfo
      ceph-osd-debuginfo
      ceph-radosgw-debuginfo
      cephfs-mirror-debuginfo
  2. gdb パッケージがインストールされていることを確認します。インストールされていない場合は、インストールします。

    [root@host01 ~]# dnf install gdb

10.2.1. コンテナー化されたデプロイメントでの判読可能なコアダンプファイルの生成

Red Hat Ceph Storage 6 のコアダンプファイルを生成できます。これには、コアダンプファイルをキャプチャーする 2 つのシナリオが含まれます。

  • SIGILL、SIGTRAP、SIGABRT、または SIGSEGV エラーにより、Ceph プロセスが予期せず終了した場合。

または

  • 手動の場合。たとえば、Ceph プロセスが高い CPU サイクルを消費したり、応答がないなど、問題を手動でデバッグする場合。

前提条件

  • Ceph コンテナーを実行するコンテナーノードへの root レベルのアクセス。
  • 適切なデバッグパッケージのインストール
  • GNU Project Debugger (gdb) パッケージのインストール。
  • ホストに 8 GB 以上の RAM があることを確認します。ホストに複数のデーモンがある場合は、Red Hat は RAM を増やすことを推奨します。

手順

  1. SIGILL、SIGTRAP、SIGABRT、または SIGSEGV エラーにより、Ceph プロセスが予期せず終了した場合。

    1. 障害の発生した Ceph プロセスのあるコンテナーが実行しているノードの systemd-coredump サービスにコアパターンを設定します。

      [root@mon]# echo "| /usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e" > /proc/sys/kernel/core_pattern

    2. Ceph プロセスが原因でコンテナーに関する次の障害の有無を確認し、/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

  2. Ceph OSD および Ceph Managers のコアダンプファイルを手動でキャプチャーするには、以下を実行します。

    1. MONITOR_ID または OSD_ID を取得して、コンテナーを入力します。

      構文

      podman ps
      podman exec -it MONITOR_ID_OR_OSD_ID bash

      [root@host01 ~]# podman ps
      [root@host01 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-osd-2 bash

    2. procps-ng パッケージおよび gdb パッケージをコンテナーにインストールします。

      [root@host01 ~]# dnf install procps-ng gdb

    3. プロセス ID を検索します。

      構文

      ps -aef | grep PROCESS | grep -v run

      PROCESS は、実行中のプロセスの名前に置き換えます (例: ceph-mon または ceph-osd)。

      [root@host01 ~]# 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

    4. コアダンプファイルを生成します。

      構文

      gcore ID

      ID を、前の手順で取得したプロセスの ID に置き換えます (例: 18110)。

      [root@host01 ~]# gcore 18110
      warning: target file /proc/18110/cmdline contained unexpected null characters
      Saved corefile core.18110

    5. コアダンプファイルが正しく生成されていることを確認します。

      [root@host01 ~]# ls -ltr
      total 709772
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.18110

    6. Ceph Monitor コンテナー外部でコアダンプファイルをコピーします。

      構文

      podman cp ceph-mon-MONITOR_ID:/tmp/mon.core.MONITOR_PID /tmp

      MONITOR_ID を Ceph Monitor の ID 番号に置き換え、MONITOR_PID をプロセス ID 番号に置き換えます。

  3. 他の Ceph デーモンのコアダンプファイルを手動でキャプチャーするには、以下を実行します。

    1. cephadm シェルにログインします。

      [root@host03 ~]# cephadm shell

    2. デーモンの ptrace を有効にします。

      [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/allow_ptrace true

    3. デーモンサービスを再デプロイします。

      構文

      ceph orch redeploy SERVICE_ID

      [ceph: root@host01 /]# ceph orch redeploy mgr
      [ceph: root@host01 /]# ceph orch redeploy rgw.rgw.1

    4. cephadm shell を終了し、デーモンがデプロイされているホストにログインします。

      [ceph: root@host01 /]# exit
      [root@host01 ~]# ssh root@10.0.0.11

    5. DAEMON_ID を取得して、コンテナーを入力します。

      [root@host04 ~]# podman ps
      [root@host04 ~]# podman exec -it ceph-1ca9f6a8-d036-11ec-8263-fa163ee967ad-rgw-rgw-1-host04 bash

    6. procps-ng パッケージおよび gdb パッケージをインストールします。

      [root@host04 /]# dnf install procps-ng gdb

    7. プロセスの PID を取得します。

      [root@host04 /]# ps aux | grep rados
      ceph           6  0.3  2.8 5334140 109052 ?      Sl   May10   5:25 /usr/bin/radosgw -n client.rgw.rgw.1.host04 -f --setuser ceph --setgroup ceph --default-log-to-file=false --default-log-to-stderr=true --default-log-stderr-prefix=debug

    8. コアダンプを収集します。

      構文

      gcore PID

      [root@host04 /]# gcore 6

    9. コアダンプファイルが正しく生成されていることを確認します。

      [root@host04 /]# ls -ltr
      total 108798
      -rw-r--r--. 1 root root 726799544 Mar 18 19:46 core.6

    10. コンテナー外でコアダンプファイルをコピーします。

      構文

      podman cp ceph-mon-DAEMON_ID:/tmp/mon.core.PID /tmp

      DAEMON_ID は Ceph デーモンの ID 番号に、PID はプロセス ID 番号に置き換えます。

  4. systemd-coredump が クラッシュした ceph デーモンのコアダンプを正常に保存できるようにするには、次の手順を実行します。

    1. /etc/systemd/system.confDefaultLimitCORE を無限大 に設定して、クラッシュしたプロセスのコアダンプ収集を許可します。

      構文

      # cat /etc/systemd/system.conf
      
      DefaultLimitCORE=infinity

    2. systemd またはノードを再起動して、更新された systemd 設定を適用します。

      構文

      # sudo systemctl daemon-reexec

    3. 以前のデーモンのクラッシュに関連するコアダンプファイルを確認します。

      構文

      # ls -ltr /var/lib/systemd/coredump/

  5. Red Hat サポートケースに分析用のコアダンプファイルをアップロードします。詳細は、Red Hat サポートエンジニアへの情報の提供 を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.