次の方法で共有


SysRq および NMI 呼び出しのための Azure シリアル コンソールを使用する

適用対象: ✔️ Linux Virtual Machines(VM)

システム要求 (SysRq)

SysRq は Linux オペレーション システム カーネルによって解釈されるキーのシーケンスであり、事前定義済みの一連のアクションをトリガーできます。 これらのコマンドは、仮想マシンのトラブルシューティングまたは復旧を従来の管理で実行できない場合によく使用されます。 たとえば、VM が応答していない場合です。 Azure シリアル コンソールの SysRq 機能を使用すると、SysRq キーを押すと、物理キーボードに入力された文字が模倣されます。

SysRq シーケンスが配信されると、カーネル構成によってシステムの応答方法が制御されます。 SysRq の有効化および無効化に関する情報については、「SysRq Admin Guide」(SysRq 管理ガイド) の「テキスト | マークダウン」を参照してください。

Azure シリアル コンソールを使用すると、次のコマンド バーのキーボード アイコンを使用して、SysRq を Azure 仮想マシンに送信できます。

Azure シリアル コンソールのスクリーンショット。キーボード アイコンが強調表示され、そのメニューが表示されています。そのメニューには、SendSysRq コマンド アイテムが含まれています。

[SysRq コマンドの送信] を選択するとダイアログが開き、一般的な SysRq オプションが提供されるか、ダイアログに入力された一連の SysRq コマンドが受け入れられます。 "この「SysRq コマンドの送信」では、一連の SysRq を用いて、安全な再起動などの高度な操作を行うことができます: REISUB。"

入力キー オプションが選択され、REISUB が次のフィールドに入力されている場合の [ゲストへの SysRq コマンドの送信] ダイアログ ボックスのスクリーンショット。

SysRq コマンドは、停止している仮想マシン上や、カーネルが応答しない状態 たとえば、カーネル パニックなどです。

SysRq の有効化

SysRq 管理ガイドで説明されているように、SysRq は、すべて、なし、または特定のコマンドのみを使用できるように構成できます。 次の手順を使用してすべての SysRq コマンドを有効にできますが、再起動しても有効になりません。

echo "1" >/proc/sys/kernel/sysrq

SysReq の構成を永続化するために、次の手順を実行してすべての SysRq コマンドを有効にできます。

  1. 以下の行を /etc/sysctl.conf に追加します。
    kernel.sysrq = 1
  2. を実行して sysctl を再起動または更新する
    sysctl -p

コマンド キー

SysRq 管理者ガイドから:

コマンド 機能
b ディスクの同期またはマウント解除を行わずに、システムをすぐに再起動します。
c NULL ポインターの逆参照によってシステム クラッシュを実行します。 構成した場合は、クラッシュ ダンプが取得されます。
d 保持されているすべてのロックを表示します。
e init を除いて、SIGTERM をすべてのプロセスに送信します。
f oomキラーを呼び出してメモリを大量に消費しているプロセスを終了させますが、何も終了できなくても慌てないでください。
g kgdb によって使用されます (カーネル デバッガー)。
h ヘルプが表示されます (ここに記載されているキー以外のキーにもヘルプが表示されますが、 h は覚えやすいです:-)
i init を除いて、SIGKILL をすべてのプロセスに送信します。
j 強制的に、FIFREEZE ioctl によって凍結されるファイルシステムを "ただ解凍します"。
k Secure Access Key (SAK) によって、現在の仮想コンソール上のすべてのプログラムを強制終了します。 注: 次の SAK セクションの重要なコメントを参照してください。
l すべてのアクティブな CPU に対するスタック バックトレースを表示します。
m コンソールに現在のメモリ情報をダンプします。
n RT タスクを最適化するために使用されます。
o システムを閉じます (構成され、サポートされている場合)。
p 現在のレジスタとフラグをコンソールにダンプします。
q 装備されたすべての hr タイマー (ただし、通常の timer_list のタイマーは対象外) およびすべてのクロックイベント デバイスに関する詳細情報を CPU 一覧ごとにダンプします。
r キーボードの raw モードをオフにし、XLATE に設定します。
s マウントされたすべてのファイルシステムの同期を試行します。
t お使いのコンソールに対する現在のタスクとその情報の一覧をダンプします。
u マウントされたすべてのファイルシステムの再マウントを読み取り専用で試行します。
v framebuffer コンソールを強制的に復元します。
v ETM バッファーのダンプを行います [ARM 固有]。
w 非割り込み (ブロックされた) 状態でタスクをダンプします。
x ppc/powerpc プラットフォーム上で、xmon インターフェイスによって使用されます。 sparc64 上でグローバル PMU Register を表示します。 MIPS 上のすべての TLB エントリをダンプします。
y グローバル CPU Register を表示します [SPARC-64 固有]
z ftrace バッファーをダンプします。
0-9 コンソールログレベルを設定し、コンソールに出力するカーネルメッセージを制御します。 (たとえば 0 では、PANIC や OOPS などの緊急時のメッセージのみがコンソールに示されるように、レベルを設定します)。

ディストリビューション固有のドキュメント

SysRq のディストリビューション固有のドキュメントと、SysRq "Crash" コマンドを受け取ったときにクラッシュ ダンプを作成するように Linux を構成する手順については、次のリンクを参照してください。

Ubuntu

Red Hat

SUSE

CoreOS

マスク不可能割り込み (NMI)

マスク不可能な割り込み (NMI) は、仮想マシン上のソフトウェアが無視しないシグナルを生成します。 これまで、NMI は、特定の応答時間を必要とするシステム上のハードウェアの問題を監視するために使用されます。 現在、プログラマやシステム管理者は、応答していないシステムをデバッグまたはトラブルシューティングするためのメカニズムとして NMI を使用することがよくあります。

シリアル コンソールを使用すると、次のコマンド バーのキーボード アイコンを使用して、Azure 仮想マシンに NMI を送信できます。 NMI が配信されると、仮想マシンの構成によってシステムの応答方法が制御されます。 Linux オペレーティング システムは、オペレーティング システムが NMI を受信した場合に、クラッシュしてメモリ ダンプを作成するように構成できます。

シリアル コンソールのスクリーンショット。キーボード アイコンが強調表示され、そのメニューが表示されています。そのメニューには、[マスク不可能割り込みの送信] アイテムが含まれています。

NMI を有効にする

カーネル パラメーターを構成するための sysctl をサポートする Linux システムでは、次のコマンドを使用して、この NMI を受信するときにパニックを有効にすることができます。

  1. 以下の行を /etc/sysctl.conf に追加します。
    kernel.panic_on_unrecovered_nmi=1
  2. を実行して sysctl を再起動または更新する
    sysctl -p

unknown_nmi_panicpanic_on_io_nmi、および panic_on_unrecovered_nmi を含む Linux カーネル構成の詳細については、「/proc/sys/kernel/* のドキュメント」を参照してください。 NMI に関するディストリビューション固有のドキュメントと、NMI を受信したときにクラッシュ ダンプを作成するように Linux を構成する手順については、次のリンクを参照してください。

Ubuntu

Red Hat

SUSE

CoreOS

次のステップ

お問い合わせはこちらから

ご質問がある場合は、 Azure コミュニティサポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。