仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

一般的な KVM の問題のトラブルシューティング

以前、Xen テクノロジを使用して環境をプロビジョニングしようとしたときに発生する可能性のある一般的な問題について説明した、2 つの Xen トラブルシューティングの記事を紹介しました。今日は、KVM で同じことを行います。

個人的には、KVM は Python の無駄遣いの冗長性と全体的な複雑さに関してははるかに洗練されていると思いますが、それでも、人生をより困難にする醜いエラーに出くわすことがあります。このチュートリアルでは、それらを回避する方法、考えられる構成とセットアップの競合を特定する方法、およびその他のさまざまな巧妙なトリックについて説明します。私の後。

ヒント 1:ブリッジ ネットワーク インターフェースが表示されない

作成した br0 というカスタム ブリッジ デバイスを使用するとします。ただし、ネットワークをセットアップしてゲストに特定のインターフェイスを使用させようとすると、Virtual Machine Manager のドロップダウン メニューに表示されません。下の画像は正反対ですが、目的のデバイスが利用可能なアダプターのリストにないことを想像してください。これが起こる可能性があり、私はこれが起こるのを見たので、これについては私を信頼してください、インターネットの市民.

一般的な KVM の問題のトラブルシューティング

解決策は非常に簡単です。ドメインの構成ファイルを手動で編集します。デフォルトでは、KVM は /etc/kvm/vm または /etc/libvirt/qemu のいずれかの 2 つの場所にファイルを保存するため、そこに XML ファイルが見つかる可能性が最も高くなります。関連するものを開き、 の下のブリッジ アダプターの詳細を手動で変更します。ファイルを閉じ、仮想マシンを起動してお楽しみください。

<インターフェースタイプ='ブリッジ'>


ヒント 2:Biosdevname &ネットワークなし

Biosdevname は、BIOS が指定した名前をデバイスに割り当てようとするユーティリティであり、共通性を維持し、特にネットワーク デバイスのハードウェア管理のロジックを簡素化します。独自の能力や機能を備えたそれらの多くをたまたま持っている場合、それらを一般的な ethX 名で識別するのは難しくなりますが、それらに一意の文字列が与えられていれば、1Gbps アダプターと 10Gbps アダプターなどを簡単に見分けることができます。当然のことながら、これは主にエンタープライズ システムに役立ちます。自宅にいる人はこのジレンマに悩まされることはほとんどないからです。

ただし、biosdevname を使用することの副作用は、KVM で作成された仮想マシンのゲスト オペレーティング システム内で使用される場合、仮想化されたデバイスが完全に一致しない物理名を取得するため、ネットワークなしになる可能性があることです。

この問題を回避するには、いくつかの方法があります。 1 つ目は、ユーティリティの一部のバージョンは、仮想環境内で呼び出されていることを検出でき、マシンを変更せずに終了します。もう 1 つは、GRUB メニューでカーネル引数を渡すことです。 biosdevname=0 は、ユーティリティの実行を無効にします。

3 番目のオプションは、ネットワーク カードに名前を割り当てるために使用される udev ルールをハックすることです。これは非常に初歩的な例です。これは単一のネットワーク アダプターを備えたマシン用に設計されているため、複数のカードに対してより動的なロジックが必要になります。または、コメント付きのテキストにあるように、ルールごとに 1 つの個別の行を作成する必要があります。

一般的な KVM の問題のトラブルシューティング

古典的な割り当てを取得するために手動で変更できます:

vi /etc/udev/rules.d/70-persistent-net.rules

NAME 文字列を「eth_biosname」から「ethX」または必要なものに置き換えます:

# PCI デバイス ...
SUBSYSTEM=="ネット"、ACTION=="追加"、ATTR(タイプ)=="1"、
KERNEL=="eth*", NAME="eth_biosname"

# PCI デバイス ...
SUBSYSTEM=="ネット"、ACTION=="追加"、ATTR(タイプ)=="1"、
KERNEL=="eth*", NAME="eth0"

仮想マシンで使用する仮想ハードウェアに応じて、異なるルールが取得されます。たとえば、Realtek、e1000、または virtio 仮想ハードウェアを選択すると、他の文字列になります。注意を払い、ソリューションが特定の環境に一致していることを確認してください。

ヒント 3:ドメインは既に存在します

新しいドメインを定義しようとして、それが既に存在する場合はどうなりますか。ただし、その構成ファイルまたは宣言を見つけるのに問題がある場合を除きます。 virsh リストにはありません。virt-manager には表示されません。それで、あなたは何をしますか?

virsh define machine.xml
エラー:machine.xml からドメインを定義できませんでした
エラー:操作に失敗しました:ドメイン 'マシン' は既に存在します
uuid 883ab02f-1a67-7430-ef9a-2b59af52210e7

構成ファイルを見つけて削除する必要があります。そして libvirtd サービスを再起動します。

更新b
machine.xml を見つけます
rm
/etc/init.d/libvirtd 再起動

ヒント 4:cgroup が見つからない内部エラー

この問題は、上記の例のように libvirtd を再起動した後に発生するか、まったく関係がない可能性があります。完全なエラー メッセージは次のようになります:

virsh create machine.xml
エラー:machine.xml からドメインを作成できませんでした
エラー:内部エラー マシンの cgroup が見つかりません

Bugzilla レポートで指定されているように、このバグの理由は systemd に関連している可能性がありますが、systemd を使用していない元のマシンでも発生する可能性があります。ほとんどの場合、これは cgroup と libvirtd の間の非常に微妙な競争であり、cgroup の前に libvirtd サービスが起動し、cgroup の 1 つが削除されたか、そもそも存在しないことが原因です。

この問題は、libvirtd 構成 /etc/libvirt/qemu.conf を編集することで解決できます。このファイル内で、cgroups_controllers ディレクティブを編集して、cgroup がリストされないようにする必要があります。この場合、libvirtd は cgroup なしで実行できます。

cgroups_controllers =[ ]

この後、libvirtd を再起動する必要があります。または、必要な cgroup を手動で作成し、libvirtd プロセスを関連するサブシステムに割り当てる必要があります。

ヒント 5:停止/再起動時に仮想マシンが VMM から消える

実際、これは非常に単純な問題かもしれません。仮想マシンを停止または再起動すると、仮想マシン コンソールが閉じます。構成は整っていますが、マシンの管理サイクルに干渉する必要があるため、これは大きな不便です。

仮想マシンに関連する XML ファイルで on_reboot 句を探し、アクションが破棄ではなく再起動に設定されていることを確認する必要があります。ほら、それだけです。

破壊する
再起動
破壊する

ヒント 6:再起動アクションはありません。関数はサポートされていません

繰り返しますが、前のヒントに非常に関連しています。再起動の代わりに再起動を指定すると、これは KVM が実行できない無効なコマンドであることがわかります。ただし、かなり多量のエラーが表示される可能性が高くなります:

libvirtError:この関数はハイパーバイザーではサポートされていません:virDomainReboot

再起動を使用すると、すべてがうまくいきます。

ヒント 7:インストール後のブートローダー エラー

外部メディア ソースからのインストール後の最初の再起動時に、GRUB エラー (おそらく番号 15) が表示されることがあります。これは、CD/DVD イメージを仮想マシンに接続したままにし、XML ファイルで最初の起動デバイスとして選択した場合に発生する可能性があります。この問題はこの VirtualBox のバグと似ており、一部の Linux ディストリビューションに影響を与えています。例:

ルート (hd0,1)
ファイルシステムのタイプは ext2fs、パーティションのタイプは 0x83
カーネル /boot/vmlinuz

エラー 15:ファイルが見つかりません

続行するには何かキーを押してください...

ISO イメージをアンマウントし、ゲストを再起動することで解決できます。今度はうまくいくはずです。ハードディスクを最初の起動可能なデバイスとして設定した場合、問題は発生しないことに注意してください。ディスク上に有効なパーティション テーブルが見つからない場合、KVM は 2 番目に利用可能なソース (ほとんどの場合、PXE または CD/DVD) に自動的にスキップするためです。これは、今だけインストールする場合に当てはまります。

今日はこれで終わりです。

続きを読む

他にもいくつかの KVM 記事に興味があるかもしれません:

KVM ストレージとネットワーク ガイド、およびブリッジ ネットワーク

KVM + Virtualbox を並べて使用する方法

KVM クローン作成ガイド

結論

最初のトラブルシューティング ガイドのための 6 つのヒント。悪くないと思います。このチュートリアルでは、ブリッジ ネットワークのセットアップ、biosdevname、cgroups + libvirtd の問題の回避、virt-manager によって自動作成された重複ドメインの登録解除、およびゲスト OS の再起動の問題の解決に焦点を当てています。

ほとんどの作業は、構成ファイルの編集とサービスの再起動によって行われます。コマンド ラインに変換できるアクションはスクリプト化できるため、GUI に依存していません。とにかく、気に入っていただければ幸いです。続編のアイデアがあれば、私に知らせてください。

乾杯。


  1. VMware Converter を使用して仮想マシンを変換する

    仮想化は、ソフトウェアのテストとデバッグ、同じデスクトップ上で異なるオペレーティング システムの複数のインスタンスを同時に実行し、ハードウェア コストを最小限に抑え、モジュール性と効率を高める優れた方法です。これにより、パワー ユーザーは時間とお金を節約し、通常は挑戦したり、試みたり、できなかったりするタスクを実行できます。仮想化とは、名前が示すように、仮想マシンを使用することです。これらの仮想マシンは、仮想ハード ディスクに格納されます。 問題は、各仮想化製品が独自のファイルシステム形式を提供していることです。これは、たとえば VirtualBox と VMware を使用している場合、

  2. Windows 11 のオーディオの問題のトラブルシューティング (7 つの解決策)

    Windows 11 でのオーディオ サウンドの問題は、通常、サウンド カードの物理的な問題またはオーディオ ドライバーの問題が原因で発生します。ここでも、設定の誤りやオーディオ サービスの無効化が原因で、Windows のサウンドの問題が発生することがあります。 Windows 11 のサウンドが機能しない場合 またはラップトップまたは PC で音が出ない場合は、設定でいくつかのサウンド オプションを変更し、特定のオーディオ サービスを再起動して、Windows 11 で音が出ない問題を適切に解決できるオーディオ ドライバーを更新する必要がある場合があります。 Windows 11 でのオー