Определите, какой гость работает на гостях 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
Для этого требуется доступ к гипервизору. Как узнать, имеет ли он доступ только к гостю?
Тонин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.