ハイパーバイザーのHDDにスペースが残っていないため、qemu
仮想マシンが数回クラッシュしました。これにより、quemu
仮想マシンのロギング/デバッグを設定する可能性があるのではないかと思いました。 -D /tmp/qemu-debug-log
コマンドで仮想マシンを起動しようとしました:
qemu-system-i386 -D /tmp/qemu-debug-log -monitor pty -device e1000,netdev=tap0 -netdev tap,id=tap0 -m 512M -display vnc=:1 -drive file=FreeBSD10.2
..しかし、これは/tmp/qemu-debug-log
ファイルさえ作成しませんでした。
さらに、qemu
はmessages
またはカーネルリングバッファー(dmesg
)に書き込みません。 qemu
仮想マシンのロギングを有効にするためのベストプラクティスは何ですか?
qemu
コマンドは、-d
というログファイルを作成する単純な/tmp/qemu.log
スイッチを受け入れます。
QEMU Monitor を使用して、より多くのロギング/デバッグオプションにアクセスできます(例:qemu -monitor stdio
)。
QEMUが提供するロギングオプションは、必要なものに対して低すぎるレベルになります。問題は、仮想ハードウェアが正しく動作していないことではなく、VM内のソフトウェアに注意が必要なことだけです。
この点で、VMは実際のマシンと同じで、解決策は同じです。あなたの質問は、VMがFreeBSDを実行しているため、ネットワーク接続を介してrsyslog
を使用してログを外部のsyslogサーバー(ホストマシンである可能性があります)にプッシュする必要があります。
(私はBSDに精通していないので、rsyslog
がここで正しいまたは唯一の解決策であるかどうかは100%確実ではありませんが、そのキーワードで開始できます。)
QEMUの起動時に-d <component>
パラメーターを使用すると、そのコンポーネントのデバッグが有効になります。これは、QEMUソースコードがあり、特定のコンポーネントの詳細なデバッグを確認する場合に役立ちます。
たとえば、-d cpu_reset
を渡すと、CPU_LOG_RESETデバッグが有効になり、「CPUリセット前のCPU状態が表示されます」。ロギングオプションの完全なリストについては、 qemu/util/log.c を参照してください。
デフォルトでは、ログは/tmp/qemu.logに書き込まれますが、-D <logfile>
パラメーターを使用して別のログファイルを指定できます。