仮想マシンの問題のトラブルシューティング
このセクションは、仮想マシンの動作が異常な場合に問題の解決を支援することを目的としています。このセクションでは、問題についてXenServerソリューションプロバイダーに問い合わせる場合に必要な、アプリケーションログの場所やそのほかの情報についても説明します。
重要:
ここで説明するトラブルシューティングを実行する場合には、XenServerソリューションプロバイダーまたはサポートチームの指示に従うことをお勧めします。
ベンダーによるアップデート:オペレーティングシステムのベンダーが提供するアップデートを使用して、仮想マシンを最新の状態にしておきます。ベンダーから、仮想マシンのクラッシュやその他の障害に対する修正プログラムが提供されている場合があります。
仮想マシンのクラッシュ
仮想マシンのクラッシュの問題を解決するには、カーネルのクラッシュダンプ情報を参照します。可能であれば、クラッシュを再現し、この手順に従ってください。この問題の詳細な調査については、ゲストOSベンダーにお問い合わせください。
仮想マシンのクラッシュダンプ動作は、actions-after-crash
パラメーターを使用して制御できます。設定可能な値は、次のとおりです:
値 | 説明 |
---|---|
preserve |
仮想マシンを一時停止状態にします。(分析用) |
restart |
コアダンプを記録せずに、仮想マシンの再起動のみを実行します。(デフォルト) |
destroy |
コアダンプを記録せずに、仮想マシンを停止状態のままにします。 |
仮想マシンのクラッシュダンプの保存を有効にするには:
-
XenServerホスト上で、次のコマンドを実行して、対象の仮想マシンのUUIDを確認します:
xe vm-list name-label=<name> params=uuid --minimal <!--NeedCopy-->
-
xe vm-param-set
を使用して、actions-after-crash
の値を変更します。たとえば、コントロールドメイン(dom0)で次のコマンドを実行します:xe vm-param-set uuid=<vm_uuid> actions-after-crash=preserve <!--NeedCopy-->
-
仮想マシンをクラッシュさせます。
-
dom0で次のコマンドを実行して、仮想マシンのドメインIDを判断します:
xe vm-param-get uuid=<vm_uuid> param-name=dom-id <!--NeedCopy-->
-
dom0で
xl trigger
コマンドを実行してクラッシュをトリガーします:xl trigger <dom_id> nmi <!--NeedCopy-->
-
Windows仮想マシンのクラッシュダンプ動作
デフォルトでは、Windowsのクラッシュダンプは、Windows仮想マシン自体の%SystemRoot%\Minidump
に保存されます。仮想マシンでのダンプレベルは、[マイコンピューター]>[プロパティ]>[詳細設定]>[起動と回復] で設定できます。
Windows向けXenServer VM Toolsの診断を収集する
Windows向けXenServer VM Toolsには、xtbugtool
と呼ばれる診断ツールが含まれています。このツールはPowerShellスクリプト、xtbugtool.ps1
として利用できます。
さらに、古いバージョンのWindowsで実行するための廃止されたバッチスクリプト バージョンxtbugtool.bat
も提供しています。可能な場合は、PowerShellバージョンを使用することをお勧めします。
このツールは、次のオペレーティング システムでサポートされています:
- Windows 10
- Windows 11
- Windows Server 2016
- Windows Server 2019
- Windows Server 2022
Windows向けXenServer VM Toolsの問題を診断するために、スクリプトはWindows仮想マシンから次の情報を収集します:
- Windows向けXenServer VM Toolsのインストールに関連するレジストリキー
- NFO形式とテキスト形式のMSinfo
- システム、セキュリティ、アプリケーションのイベントログ
- 次のファイルとディレクトリ:
C:\ProgramData\Citrix
C:\ProgramData\Citrix Systems, Inc.
C:\ProgramData\XenServer
C:\Windows\Inf\setupapi.dev.log
C:\Windows\Inf\setupapi.setup.log
- 次のコマンドの出力:
- systeminfo
- tasklist /NH
- pnputil -e
- pnputil /enum-drivers
- winmgmt /verifyrepository
- ipconfig /all
Powershellスクリプトを実行する
PowerShellスクリプトを実行するには、次の手順を実行します:
- Windows仮想マシンで、管理者としてPowerShellターミナルを開きます。
-
[スタート] メニューで
PowerShell
と入力し、[管理者として実行] を選択します。 - ディレクトリを
C:\Program Files\XenServer\XenTools\diagnostics
に変更します -
次のコマンドでスクリプトを実行します:
xtbugtool.ps1 <path_to_output_directory>
出力パスの値を指定しない場合、スクリプトは現在のディレクトリに出力します。
スクリプトは、指定した出力ディレクトリにxtbugtool-yyyyMMddHHmmss.zip
形式の名前の圧縮ファイルを作成します。
バッチスクリプトを実行する(廃止)
バッチスクリプトを実行するには、次の手順を実行します:
- Windows仮想マシンで、コマンドプロンプトを管理者として開きます。
-
[スタート] メニューで
cmd
と入力し、[管理者として実行] を選択します。 - ディレクトリを
C:\Program Files\XenServer\XenTools\diagnostics
に変更します -
次のコマンドでスクリプトを実行します:
xtbugtool.bat <path_to_output_directory>
スクリプトは、指定した出力ディレクトリにxt-bugtool-YYYY.MM.DD-xxxx.zip
形式の名前の圧縮ファイルを作成します。
UEFIとセキュアブートの問題
UEFI対応の仮想マシンでXenCenterコンソールの画面の解像度を変更するにはどうすればよいですか
UEFI対応の仮想マシンでXenCenterコンソールの画面の解像度を変更するには、次の手順を実行します:
- [Windowsの設定] を開きます。
- [更新とセキュリティ] をクリックします。
- [回復]タブの [今すぐ再起動] をクリックします。
- [トラブルシューティング] > [詳細オプション] > [UEFIファームウェアの設定] の順に移動します。
- [再起動] をクリックします。再起動中に、UEFI設定メニューがロードされます。
- [Device Manager] > [OVMFプラットフォームの設定] に移動します。現在の画面の解像度が表示されます。
- 画面の解像度オプションを表示するには、Enterキーを押します。
- 矢印キーを使用して希望する画面解像度を選択し、Enterキーを押します。
- F10キーを押して変更を保存し、選択内容を確定します。
- 仮想マシンを再起動して、更新された画面の解像度でXenCenterコンソールを表示します。
UEFIセキュアブート仮想マシンを作成できないのはなぜですか
仮想マシンのオペレーティングシステムがUEFIセキュア起動モードをサポートしていることを確認します。次のオペレーティングシステムはセキュアブートをサポートしています:
- Windows 10(64ビット)
- Windows 11(64ビット)
- Windows Server 2016(64ビット)
- Windows Server 2019(64ビット)
- Windows Server 2022(64ビット)
UEFIセキュアブート仮想マシンの起動に失敗するのはなぜですか
UEFIセキュアブート仮想マシンのコンソールに次のメッセージが表示され、XenCenterにアラートが表示される場合は、セキュアブートプロセスが失敗したため、仮想マシンが起動しません。
これは通常、署名されていないドライバーを仮想マシンにインストールしたことが原因です。前回の正常なセキュアブート以降に更新またはインストールされたドライバーを調査します。
セキュアブートを無効にし、セットアップモードで仮想マシンを起動して、署名されていないドライバーを削除できます。
重要:
この処理を行う前に、スナップショットを作成して仮想マシンをバックアップします。
UEFIセキュアブート仮想マシンをUEFIブート仮想マシンに変更するには、仮想マシンをホストするXenServerホストで次のコマンドを実行します。
varstore-sb-state <VM_UUID> setup
仮想マシンを修正したら、次のコマンドを実行してセキュアブートを再び有効にします:
varstore-sb-state <VM_UUID> user
セキュアブートは仮想マシンで問題を引き起こしていますか
仮想マシンの問題の原因が、仮想マシンに対してセキュアブートを有効にしていることかどうかを診断するには、セキュアブートを無効にして、問題の再現を試みます。
セキュアブートを無効にするには、仮想マシンをホストするXenServerホストで次のコマンドを実行します:
varstore-sb-state <VM_UUID> setup
問題をデバッグしたら、次のコマンドを実行してセキュアブートを再び有効にします:
varstore-sb-state <VM_UUID> user
セキュアブートWindows仮想マシンでWindowsデバッグを実行するにはどうすればよいですか
セキュアブートWindows仮想マシンでWindowsデバッグを実行することはできません。仮想マシンでWindowsデバッグを実行するには、次のいずれかを実行できます:
-
次のコマンドを実行して、仮想マシンをUEFI起動モードに切り替えます:
xe vm-param-set uuid=<UUID> platform:secureboot=false
仮想マシンを再起動します。
問題をデバッグしたら、次のコマンドを実行してセキュアブートを再び有効にします:
xe vm-param-set uuid=<UUID> platform:secureboot=auto
仮想マシンを再起動します。
-
仮想マシンをホストするXenServerホストで次のコマンドを実行し、セキュアブートを無効にします。
varstore-sb-state <VM_UUID> setup
問題をデバッグしたら、次のコマンドを実行してセキュアブートを再び有効にします:
varstore-sb-state <VM_UUID> user
UEFI対応のWindows仮想マシンに2つのNICしか表示されないのはなぜですか
UEFI対応の仮想マシンの作成時に3つ以上のNICをセットアップした場合でも、仮想マシンの初回起動時には、2つのNICしか表示されません。この情報は、Windows向けXenServer VM Toolsが仮想マシンにインストールされた後に正しく表示されます。
UEFI Windows仮想マシンでエミュレートされたデバイスが通常と異なるタイプとして表示されるのはなぜですか
UEFIセキュアブート仮想マシンはエミュレートされたデバイスにNVMEとE1000を使用します。ただし、仮想の初回起動時には、エミュレートされたデバイスが異なるタイプとして表示されます。この情報は、Windows向けXenServer VM Toolsが仮想マシンにインストールされた後に正しく表示されます。
テンプレートをBIOSモードからUEFIまたはUEFIセキュア起動モードに変換できないのはなぜですか
UEFI対応の仮想マシンテンプレートは、XenServerが提供するテンプレートのみから作成できます。
何かがインストールされているテンプレート、またはスナップショットから作成したテンプレートに対してはxe template-param-set
コマンドを実行しないでください。これらのスナップショットの起動モードは変更できません。また、起動モードを変更しようとすると、仮想マシンは起動に失敗します。
UEFIおよびUEFIセキュアブート変数を確認するにはどうすればよいですか
UEFIまたはUEFIセキュアブート仮想マシンがホストされているXenServerホストで、次のコマンドを実行します。
varstore-ls
このコマンドは、使用可能な変数のGUIDと名前を一覧表示します。次のコマンドでGUIDと名前を使用します:
varstore-get <VM\_ID> <GUID> <name> | hexdump -C
セキュアブート仮想マシンで「テスト」ドライバーを使用できないのはなぜですか
UEFIセキュアブート仮想マシンの問題をデバッグおよび修正するためにサードパーティと協力している場合、サードパーティはテストまたは検証の目的で署名されていないドライバーを提供する場合があります。これらのドライバーは、UEFIセキュアブート仮想マシンでは機能しません。
サードパーティに署名済みのドライバーをリクエストしてください。また、UEFIセキュアブート仮想マシンをセットアップモードに切り替えて、署名されていないドライバーで実行することもできます。
xentopユーティリティ
xentopユーティリティは、XenServerシステムと実行中のドメインに関するリアルタイムの情報を半グラフィック形式で表示します。このツールを使用して、仮想マシンに関連付けられているドメインの状態を調べることができます。
xentopユーティリティを実行するには:
- SSH経由でXenServerホストに接続するか、XenCenterでホストの [コンソール] タブに移動します。
-
次のコマンドを実行します:
xentop
コンソールに、ホストに関する情報が表形式で表示されます。情報は定期的に更新されます。
出力列
xentopユーティリティによって、コンソールに次の列が表示されます:
- NAME - ドメインの名前。「Domain-0」は、XenServerのコントロールドメインです。ほかのドメインは仮想マシンに属します。
-
STATE - ドメインの状態。次のいずれかの値を使用することができます:
- d - ドメインが死につつあります
- s – ドメインはシャットダウン中です
- b – ドメインがブロックされています
- c – ドメインがクラッシュしました
- p – ドメインは一時停止中です
- r – ドメインはいずれかのCPUでアクティブに実行されています
- CPU(sec) - ドメインのCPU使用率(秒単位)
- CPU(%) - ドメインのCPU使用率(パーセンテージ)
- MEM(k) - ドメインの現在のメモリ使用量(KiB)
- MEM(%) - ドメインの現在のメモリ使用率(パーセンテージ)
- MAXMEM(k) - ドメインの最大メモリ使用量(KiB)
- MAXMEM(%) - ドメインの最大メモリ使用量(パーセンテージ)
- VCPUS - ドメインに割り当てられた仮想CPUの数
- NETS - ドメインで使用している仮想ネットワークの数
- NETTX(k) - 総ネットワークTXの量(KiB)
- NETRX(k) - 総ネットワークRXの量(KiB)
- VBDS - 仮想ブロックデバイスの数
- VBD_OO - VBD(Virtual Block Device:仮想ブロックデバイス)で要求切れエラーが発生した合計回数。このエラーが起こると、VBDに対するI/O要求が遅れます。
- VBD_RD - VBD読み取り要求の総数
- VBD_WR - VBD書き込み要求の総数
- VBD_RSECT - VBD読み取りセクター
- VBD_WSECT - VBD書き込みセクター
xentopのパラメーター
次のパラメーターを使用して、xentopコマンドの出力を構成できます:
- -h - xentopコマンドのコマンドヘルプを出力します。
- -V - xentopコマンドのバージョンを出力します。
- -d または –delay=SECONDS - アップデート間の秒数を設定します
- -n または –networks - ドメインに関連付けられた各VIF(Virtual Network Interface:仮想ネットワークインターフェイス)ネットワークのデータを出力します
- -x または –vbds - ドメインに関連付けられた各VBDブロックデバイスのデータを出力します
- -r または repeat-header - 各ドメインの前にテーブルヘッダーを繰り返します
- -v または –vcpus - ドメインに関連付けられた各vCPU(virtual CPU:仮想CPU)のデータを出力します
- -i または –iterations - xentopが終了するまでに表示する反復(更新)の回数
- -f または –full-name -短縮された名前の代わりに完全なドメイン名を出力します
これらのパラメーターのほとんどは、xentopユーティリティ内から構成することもできます。