LoginSignup
0
1

More than 3 years have passed since last update.

virshコマンドの使い方(dump編)

Last updated at Posted at 2019-07-18

1 virsh dumpとは?

仮想マシンのダンプを採取するためのコマンドです。
採取したダンプは、crashコマンドで参照することができます。
仮想マシンの障害調査のときに使います。

その他、virshコマンドの記事は、以下のものを作成しました。
virshコマンドの使い方
virshコマンドの使い方(snapshot編)

2 環境

VMware Workstation 14 Playerで作成した仮想マシン使用しました。
ホストマシン、仮想マシンともに以下の版数を使用しました。

ディストリビューション版数
[root@vm1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
カーネル版数
[root@vm1 ~]# uname -r
3.10.0-957.el7.x86_64

3 オプション一覧

3.1 概要

[root@vm1 ~]# virsh help dump
  名前
    dump - 解析用ファイルへのドメインのコアダンプ

  形式
    dump <domain> <file> [--live] [--crash] [--bypass-cache] [--reset] [--verbose] [--memory-only] [--format <string>]

  詳細
    ドメインのコアダンプを取得します。

  オプション
    [--domain] <string>  domain name, id or uuid
    [--file] <string>  コアをダンプする場所
    --live           サポートされれば、活性コアダンプを実行します
    --crash          コアダンプ後にドメインをクラッシュさせます
    --bypass-cache   ダンプ中のファイルシステムキャッシュの回避
    --reset          コアダンプ後にドメインをリセットします
    --verbose        ダンプの進行状況の表示
    --memory-only    ドメインのメモリーのみダンプ
    --format <string>  specify the format of memory-only dump

3.2 詳細

ダンプ採取後の仮想マシンの挙動を以下に示します。

オプション ダンプ採取後の状態
--live 仮想マシンは実行中のままです
--crash 仮想マシンはシャットオフします
--reset 仮想マシンは再起動します

4 仮想マシンのダンプ採取方法

4.1 事前準備

実行中の仮想マシンを確認します。vm1が実行中であることがわかります。
ここでは、vm1のダンプを採取してみます。
なお、virshコマンドの使い方は、ここ(virshコマンドの使い方)を参照ください。

仮想マシンの確認
[root@vm1 ~]# virsh list
 Id    名前                         状態
----------------------------------------------------
 1     vm1                            実行中

仮想マシンのカーネル版数等を確認します。

仮想マシンの版数確認
[root@vm1 vm]# virsh console vm1

[root@nested-vm1 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

[root@nested-vm1 ~]# uname -r
3.10.0-957.el7.x86_64

crashコマンドで、ncプロセスが動作中であることを確認するため、
仮想マシンでncコマンドを実行します。
なお、ncコマンドの使い方は、ncコマンドの使い方を参照ください。

ncコマンドの起動
[root@nested-vm1 ~]# nc -kl 11111

4.2 ダンプの採取方法

ホストでvirsh dumpコマンドを実行して、仮想マシンのダンプを採取してみます。
--resetオプションを指定すると、ダンプ採取後、仮想マシンはリスタートします。

仮想マシンのダンプ採取
[root@vm1 ~]# virsh dump vm1 vm.core --memory-only --reset --verbose
ダンプ: [100 %]
ドメイン vm1 が vm.core にダンプされました

仮想マシンのダンプを確認してみます。

ダンプファイル確認
[root@vm1 ~]# ls -l vm.core
-rw-------. 1 root root 1074005816  7月 18 21:14 vm.core

4.3 ダンプの確認方法

crashコマンドを実行します。
この時、仮想マシンのカーネル版数と同じ版数のカーネル(vmlinux)とダンプファイル名を指定します。
なお、crashコマンドの使い方は、crashコマンドの使い方を参照ください。

crashコマンド実行結果
[root@vm1 ~]# crash /usr/lib/debug/lib/modules/3.10.0-957.el7.x86_64/vmlinux vm.core
-中略-
      KERNEL: /usr/lib/debug/lib/modules/3.10.0-957.el7.x86_64/vmlinux
    DUMPFILE: vm.core
        CPUS: 2
        DATE: Thu Jul 18 21:14:18 2019
      UPTIME: 00:11:48
LOAD AVERAGE: 0.00, 0.01, 0.03
       TASKS: 111
    NODENAME: nested-vm1
     RELEASE: 3.10.0-957.el7.x86_64
     VERSION: #1 SMP Thu Nov 8 23:39:32 UTC 2018
     MACHINE: x86_64  (2808 Mhz)
      MEMORY: 1 GB
       PANIC: ""
         PID: 0
     COMMAND: "swapper/0"
        TASK: ffffffffb1c18480  (1 of 2)  [THREAD_INFO: ffffffffb1c00000]
         CPU: 0
       STATE: TASK_RUNNING (ACTIVE)
     WARNING: panic task not found

ncプロセスがListen中に仮想マシンのダンプを採取したので、ncプロセスの状態を確認してみます。

ncプロセスのPID確認
crash> ps nc
   PID    PPID  CPU       TASK        ST  %MEM     VSZ    RSS  COMM
   3317   3291   0  ffff999efa5f9040  IN   0.2   43980   2096  nc

ncプロセスのPIDを指定して、setコマンドを実行します。

カレントをncプロセスに変更
crash> set 3317
    PID: 3317
COMMAND: "nc"
   TASK: ffff999efa5f9040  [THREAD_INFO: ffff999efd464000]
    CPU: 0
  STATE: TASK_INTERRUPTIBLE

ncプロセスがオープンしているFDを確認してみます。
FD=3,4でIPv6/IPv4のソケットをオープンしていることがわかります。

ncプロセスのFD
crash> files
PID: 3317   TASK: ffff999efa5f9040  CPU: 0   COMMAND: "nc"
ROOT: /    CWD: /root
 FD       FILE            DENTRY           INODE       TYPE PATH
  0 ffff999efa065800 ffff999efdc2d600 ffff999efd77b2f0 CHR  /dev/ttyS0
  1 ffff999efa065800 ffff999efdc2d600 ffff999efd77b2f0 CHR  /dev/ttyS0
  2 ffff999efa065800 ffff999efdc2d600 ffff999efd77b2f0 CHR  /dev/ttyS0
  3 ffff999ef9814200 ffff999ef5ed8900 ffff999ef9fa16b0 SOCK TCPv6
  4 ffff999ef9814400 ffff999ef5ed8480 ffff999ef9fa1930 SOCK TCP

Z 参考情報

20.19. VIRSH DUMP を使ったゲスト仮想マシンのコアのダンプファイルの作成
libvirt をインストールして、ホストマシンから仮想マシンのダンプを取得して crash で読んでみる

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1