グラフィックのないマルチ virsh/kvm ゲストコンソール

グラフィックのないマルチ virsh/kvm ゲストコンソール

利用可能なグラフィックがないcentos7ゲスト用のシリアルコンソールがありますvirsh console vm。ゲストには適切なconsole=ttyS0,115200n8カーネルコマンドライン引数があります。

virsh console vm --devname vc1私が話し、ログインプロンプトを受け取るように追加のコンソールを設定できますか?

本能的には、キャラクターデバイスをゲストの最初の6つの仮想コンソールに接続しようとしました。libvirt ドメイン形式そしてバーティオシリアルその方向に行かなければならないようですが、うまくいきません。

背景: 解決にはかなり時間がかかるネットワークの問題がありましたが、その間に、1人のチームメンバーがネットワークの問題を処理し、他のチームメンバーが中断することなくVM上で作業を続けなければならなかったため、ネットワークなしで複数のコンソールを使用しました。

私はそこにいることを知っています

<graphics type='vnc' port='5900' autoport='yes' listen='127.0.0.1'>
  <listen type='address' address='127.0.0.1'/>
</graphics>

virsh console <domain> --device <device>VNCアクセスには6つの仮想端末を使用できます。構文を通して、合理的な方法で6つの仮想端末を持つ方がはるかにvirsh console便利であるかどうか疑問に思います。

ソフトウェア:

# cat /etc/fedora-release # host
Fedora release 24 (Twenty Four)
# virsh --version
1.3.3.3
# qemu-system-x86_64 --version
QEMU emulator version 2.6.2 (qemu-2.6.2-8.fc24), Copyright (c) 2003-2008 Fabrice Bellard

# cat /etc/centos-release # guest
CentOS Linux release 7.3.1611 (Core)

ベストアンサー1

私はしばしば仮想マシンで複数の「コンソール」を使用します。 1つは開始を表示し、ログインプロンプトで終わる対話型コンソール用で、もう1つはこれらすべてをテキストファイルに書き込むことです(通常/var/lib/libvirt/consoles/<domain>.log)。

もっと送ってもいいかわかりません。インタラクティブ仮想マシンの「コンソール」ですが、できる必要な数だけシリアルポートを追加し、仮想gettyマシンで実行してログインプロンプトを受け取ります。

VMのこれらのシリアルポートは、telnetプロトコルを使用してホストのファイル、ソケット、またはTCPポートなどに接続できます。おそらく最も使いやすいのはTelnetポートです。

たとえば、ttyS1シリアルポートを介してアクセスできるシリアルポートを追加するには、telnet次のXMLフラグメントを次の場所に保存します/tmp/serial1.xml

<serial type='tcp'>
  <source mode='bind' host='127.0.0.1' service='4555' tls='no'/>
  <protocol type='telnet'/>
  <target port='1'/>
  <alias name='serial1'/>
</serial>

それからvirsh attach-device --config <domain> /tmp/serial1.xml

これにより、次回の仮想マシンの再起動時にアクティブになるシリアルポートデバイスが仮想マシンに追加されます。 (USBではなくシリアルポートの代わりにホットプラグ可能なUSBデバイスとして追加し、VMを再起動する必要がないようにする方法があるかもしれません。私は気付くほど気にしませんでした。)

VMが再起動したら、ポートでgettyを実行します。たとえば、sysvinitを/etc/inittab使用してtelinit q

システムを使用してください:

systemctl enable [email protected]
systemctl start [email protected]

KVMホストからVMのシリアルポートに接続するには、を実行しますtelnet 127.0.0.1 4555

必要なだけ多くのシリアルポートを作成でき、各ポートは異なるポートでリッスンします。 XMLフラグメントでTCPポート番号(service=)、宛先ポート、およびエイリアスを変更するだけです。

別のコンピュータからアクセスする必要がある場合は、別のIPアドレスでリッスンすることができます(tls='yes'この場合はTLS対応telnetクライアントを使用して接続する必要があるかもしれません)。この場合、qemuを使用するための証明書を設定する必要があります。 )。

たとえば、Debian Stretch VMに2つのシリアルポートを追加しました。

まず、localhostのttyS1:4555

$ telnet localhost 4555
Trying 127.0.0.1...
Connected to localhost.mydomain.
Escape character is '^]'.

Debian GNU/Linux 9 stretch ttyS1

stretch login: 
telnet> quit
Connection closed.

その後、ttyS2はlocalhost:4556にあります。

$ telnet localhost 4556
Trying 127.0.0.1...
Connected to localhost.mydomain.
Escape character is '^]'.

Debian GNU/Linux 9 stretch ttyS2

stretch login: 
telnet> quit
Connection closed.

おすすめ記事