Определите, какой гость работает на гостях XEN: HVM или PV

9

Я работаю с хостом Xen, который кем-то установлен XenServer от Citrix. Он уже установил много гостей CentOS 5.2 на хост. Интересно, как проверить этих гостей, чтобы узнать, что они типа PV или HVM?

Ха Сон Хай
источник

Ответы:

10

Небольшое замечание: на самом деле есть три режима, а не два, когда дело доходит до используемых драйверов:

  • HVM: немодифицированное ядро ​​и драйверы с использованием программно-эмулированных устройств
  • PV-HVM: немодифицированное ядро ​​с паравиртуализированными (специфичными для Xen) дисковыми и сетевыми драйверами
  • PV: модифицированное ядро ​​и драйверы

Для гостевого / DomU Xen вы можете сделать очень простой unameи lsmodс помощью grep перечислить используемые модули:

uname -a
lsmod | grep xen

Если в uname -aсписке указано ядро ​​со строкой «xen», то у вас есть модифицированное ядро, и, скорее всего, это гость PV, и вы увидите вывод lsmodкоманды для его подтверждения. Если у вас есть вывод от grep, lsmodно нет признаков модифицированного ядра, то вы PV-HVM. Без каких-либо признаков, это прямой HVM.

Примечание: Как правило, вы можете сделать больше с виртуальными машинами, на которых установлены инструменты PV, что может быть довольно очевидным указателем, однако вы можете притворяться, что инструменты PV позволяют приостанавливать / возобновлять и т. Д., Поэтому вы не можете полагаться на это в целом. ,

Адам С
источник
Спасибо @ Адам. Это самый ясный ответ, который я нашел до сих пор.
Ха Сон Хай
10

Существует лучшая альтернатива анализу uname -aвыходных данных из гостевого домена. Лучше проверить профиль виртуальной машины в самом гипервизоре.

XL

С помощью текущего стека инструментов XenLight для автономных установок Xen этого можно достичь, выполнив 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

В более старой автономной установке Xen с использованием традиционного xmнабора инструментов управления все было примерно так:

# 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 имеет два вида:

  • классическая паравиртуализация (PV), основанная на переписывании гостевых систем с использования кольца 0 на кольцо 1; поскольку AMD выбросила кольцо 1 и кольцо 2 в x86-64, 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",
                ...
            },

Однако, с точки зрения администрации, ПВХ не должен отличаться от ПВ.

Антон Самсонов
источник
Это не работает на 4.4.1, потому что нет xmкоманды, но xlкоторая имеет другой вывод. Любая идея, как получить информацию о 4.4.1 XEN. Спасибо.
Вакан Танка
@WakanTanka В настоящее время у меня нет доступа к работающему серверу Xen, но в соответствии с примером выходных данных, найденных в Интернете, подход в основном тот же. Смотрите обновленный ответ.
Антон Самсонов
Это гораздо лучший подход, чем ответ @ AdamC, потому что у меня есть несколько гостей PV ubuntu, которые, безусловно, соответствуют PV xl, но при этом не упоминают xen в имени ядра или модулях ядра.
Фальшивое имя
2
Для этого требуется доступ к гипервизору. Как узнать, имеет ли он доступ только к гостю?
Тонин