GNU/Linux >> Linux の 問題 >  >> Linux

XEN で実行されているゲストを特定する:HVM または PV ゲスト

簡単に言うと、使用中のドライバーに関しては、実際には 2 つではなく 3 つのモードがあります。

  • HVM:ソフトウェア エミュレート デバイスを使用した変更されていないカーネルとドライバ
  • PV-HVM:準仮想化 (Xen 固有) のディスクおよびネットワーク ドライバーを使用する変更されていないカーネル
  • PV:カーネルとドライバーの変更

Xen ゲスト/DomU の場合、非常に基本的な uname を実行できます と lsmod grep を使用して、使用中のモジュールを一覧表示します:

uname -a
lsmod | grep xen

uname -a の場合 文字列「xen」を含むカーネルがリストされている場合、変更されたカーネルがあり、おそらく PV ゲストであり、lsmod からの出力が表示されます。 コマンドで確認します。 lsmod の grep からの出力がある場合 しかし、変更されたカーネルの兆候がない場合は、PV-HVM です。どちらの兆候もなく、それは純粋な HVM です。

注:一般に、PV ツールがインストールされている VM ではより多くのことができるため、これは非常に明白な指針となりますが、一時停止/再開などを許可するために PV ツールの存在を偽装することができるため、一般的にそれに依存することはできません。 .


uname -a を分析するより良い方法があります ゲストドメイン内からの出力。ハイパーバイザー自体で VM プロファイルを確認する必要があります。

XL

現在で スタンドアロンの Xen インストール用の XenLight ツールスタック。これは、xl list --long を実行することで実現できます。 コマンド:

# xl list
Name                   ID   Mem VCPUs      State   Time(s)
My-Virtual-Machine     42  1024     1     -b----    9001.0

# xl list -l 42
    or
# xl list --long My-Virtual-Machine

[
    {
        "domid": 6,
        "config": {
            "c_info": {
                "name": "My-Virtual-Machine",
                "uuid": "12345678-abcd-1234-abcd-12345678abcd",
                "type": "pv",
                ...
            },
            ...
        }
    }
]

type に注意してください c_info の項目 セクション — "pv" に等しい場合 、これは準仮想化を意味します。

XM

年上のと 従来の xm を使用したスタンドアロン Xen インストール 管理ツールスタック、物事は似ていました:

# xm list --long My-Virtual-Machine
(domain
    (domid 42)
    (name My-Virtual-Machine)
    (image
        (linux
            (kernel ...)
            ...
        )
    )
    ...
)

(linux) に注意してください (image) の要素 セクション — builder に対応します ここで、「linux」は (実際のカーネルではなく) 「準仮想化」を意味し、「hvm」は「完全仮想化」を表します。

XE

XenServer または XCP アプライアンス xe vm-list params=all を使用できます コマンドかそれに類するもの

virsh

libvirt からこの情報を取得する何らかの方法がある (またはあった) 可能性があります ツールスタックですが、私にはわかりません。

Xen 4.5 以降、x86-64 の準仮想化モードには 2 つのフレーバーがあることに注意してください:

  • 従来の準仮想化 (PV) リング 0 を使用してからリング 1 に向かって書き換えられるゲスト システムに依存します。 AMD は x86-64 でリング 1 とリング 2 を破棄したため、Xen は HVM よりもさらに遅いソフトウェアベースの管理にフォールバックする必要がありました;
  • ハードウェア支援による準仮想化 (PVH) — 準仮想化ドライバーによる完全仮想化と混同しないでください (PV-on-HVM) — 特権命令とメモリ ページ テーブルを処理するためにハードウェア アシスタンスに依存しますが、他のすべてには従来の PV 技術を使用するため、ハードウェアはエミュレートされず、ネイティブに近いパフォーマンスが良好な状態で達成されます。古い x86-32 回。

ホストが PVH を有効にして実行されているかどうかを確認するには、xl info を使用できます。 (ただし、この方法は grub.cfg を検査するよりも優れているわけではありません ):

# xl info | grep xen_commandline
xen_commandline        : pvh=1 loglvl=all guest_loglvl=all console=com1,vga
                         ^^^^^

特定のゲストが PVH モード (pvh=1) で実行されているかどうかを確認するには 構成ファイルで)、もう一度、xl list -l を参照してください :

            "c_info":{
                "name": "My-Virtual-Machine",
                "type": "pv",
                "pvh": "True",
                ...
            },

ただし、管理の観点からは、PVH は PV と何ら変わりはありません。


Linux
  1. Linux –実行中のLinuxディストリビューションを特定する方法は??

  2. 新しいカーネルがインストールされるたびにスクリプトを実行しますか?

  3. Bashが実行されているTtyを取得する方法は?

  1. スレッドが実行されている CPU コアを確認するにはどうすればよいですか?

  2. Linux カーネルが 32 ビットまたは 64 ビットで実行されているかどうかを確認するにはどうすればよいですか?

  3. 実行中の Linux ディストリビューションを特定するにはどうすればよいですか?

  1. 実行/インストールされているPostgresのバージョンを確認する方法

  2. 実行中のプロセスが属するグループを特定する

  3. 実行中の MTA の識別