Determinar qual convidado está sendo executado no convidado XEN: HVM ou PV

9

Estou trabalhando com um host Xen que está instalado pelo XenServer da Citrix por alguém. Ele já instalou muitos convidados do CentOS 5.2 no host. Gostaria de saber como verificar esses convidados para saber se eles são do tipo PV ou HVM?

Ha Son Hai
fonte

Respostas:

10

Uma observação rápida, na verdade existem três modos, não dois quando se trata dos drivers em uso:

  • HVM: kernel e drivers não modificados usando dispositivos emulados por software
  • PV-HVM: kernel não modificado com disco paravirtualizado (específico do Xen) e drivers de rede
  • PV: kernel e drivers modificados

Para um convidado Xen / DomU, você pode fazer um procedimento muito básico unamee lsmodcom um grep para listar os módulos em uso:

uname -a
lsmod | grep xen

Se uname -alistar um kernel com a string "xen", você terá um kernel modificado e provavelmente um convidado PV, e verá a saída do lsmodcomando para confirmá-lo. Se você tiver saída do grep, lsmodmas nenhum sinal de um kernel modificado, você será o PV-HVM. Sem nenhum sinal de qualquer um, é um HVM direto.

Nota: Geralmente, você pode fazer mais com VMs que possuem as ferramentas fotovoltaicas instaladas, o que pode ser um indicador óbvio; no entanto, você pode falsificar a presença das ferramentas fotovoltaicas para permitir a suspensão / retomada etc., para que você não possa confiar nisso em geral .

Adam C
fonte
Obrigado @ Adam. É a resposta mais clara que encontrei até agora.
Ha Son Hai
10

Existe uma alternativa melhor para analisar a uname -asaída de dentro do domínio convidado. Você deve verificar o perfil da VM no próprio hypervisor.

XL

Com a pilha de ferramentas atual do XenLight para instalações independentes do Xen, isso pode ser alcançado executando o xl list --longcomando:

# 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",
                ...
            },
            ...
        }
    }
]

Observe o typeitem na  c_infoseção - se for igual  "pv", significa paravirtual.

XM

Com uma instalação Xen independente mais antiga usando a xmpilha de ferramentas de gerenciamento tradicional , as coisas eram semelhantes:

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

Observe o (linux)elemento na  (image)seção - ele corresponde à  builderdiretiva de configuração, onde “linux” significa “paravirtual” (em vez do kernel real), enquanto “hvm” significa “virtualização completa”.

XE

Com XenServer ou XCP aparelho que você poderia usar xe vm-list params=allcomando ou algo semelhante.

virsh

Pode haver (ou houve) alguma maneira de obter essas informações do  libvirt toolstack, mas desconhecida para mim.


Observe que, começando com o Xen 4.5, o modo paravirtual no x86-64 possui dois tipos:

  • paravirtualização clássica (PV) que depende de sistemas convidados a serem reescritos usando o anel 0 em direção ao anel 1; desde que a AMD jogou fora os anéis 1 e 2 em x86-64, o Xen teve que voltar ao gerenciamento baseado em software, que é ainda mais lento que o HVM;
  • paravirtualização assistida por hardware (PVH), - não deve ser confundida com  drivers totalmente virtualizados com drivers paravirtuais (PV-on-HVM), - que depende da assistência de hardware para lidar com instruções privilegiadas e tabelas de páginas de memória, mas usa técnicas tradicionais de PV para todo o resto , de modo que nenhum hardware seja emulado e o desempenho quase nativo seja alcançado como nos velhos tempos x86-32.

Para verificar se o host é executado com PVH ativado, pode-se usar xl info(embora esse método não seja melhor do que inspecionar o grub.cfg ):

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

Para verificar se um convidado específico está sendo executado no modo PVH ( pvh=1no arquivo de configuração), novamente, consulte xl list -l:

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

No entanto, da perspectiva da administração, a PVH não deve ser diferente da PV.

Anton Samsonov
fonte
Isso não funciona no 4.4.1 porque não há xmcomando, mas xlque possui saída diferente. Alguma idéia de como obter as informações no 4.4.1 XEN. Obrigado.
Wakan Tanka
@WakanTanka Atualmente, não tenho acesso a um servidor Xen que funcione, mas, de acordo com o exemplo de saída encontrado on-line, a abordagem é basicamente a mesma. Veja a resposta atualizada.
28815 Anton Antonsonson
Essa é uma abordagem muito melhor do que a resposta do @ AdamC, porque eu tenho vários convidados no PV do ubuntu que são definitivamente de acordo com o PV xl, e ainda não tenho menção de xen no nome ou nos módulos do kernel.
nome é
2
Isso requer acesso ao hipervisor, como saber se ele só tem acesso ao convidado?
Tonin