Determine qual guest está sendo executado no XEN: HVM ou PV guest

7

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

    
por Ha Son Hai 30.05.2013 / 13:58

2 respostas

7

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

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

Para um convidado Xen / DomU você pode fazer um uname e lsmod com um grep muito básico para listar os módulos em uso:

uname -a
lsmod | grep xen

Se uname -a listar um kernel com a string "xen", você terá um kernel modificado e provavelmente um convidado PV, e você verá a saída do comando lsmod para confirmá-lo. Se você tiver a saída do grep em lsmod , mas nenhum sinal de um kernel modificado, então você é PV-HVM. Sem qualquer sinal de qualquer um, é um HVM direto.

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

    
por 30.05.2013 / 15:20
7

Há uma alternativa melhor para analisar a saída uname -a dentro do domínio do convidado. Você deve verificar o perfil da VM no próprio hipervisor.

XL

Com o atual toolstack XenLight para instalações Xen autônomas, isso pode ser feito executando o comando 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",
                ...
            },
            ...
        }
    }
]

Observe o type item na seção c_info - se for igual a "pv" , isso significa paravirtual.

XM

Com a instalação autônoma do Xen em um antigo usando a tradicional pilha de ferramentas de gerenciamento xm , as coisas eram semelhantes:

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

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

XE

Com XenServer ou XCP appliance você pode usar o comando xe vm-list params=all ou algo parecido.

virsh

Pode haver (ou ter sido) alguma forma de obter essas informações do toolstack libvirt , mas desconhecido 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 para serem reescritos de usar o anel 0 em direção ao anel 1; já que a AMD jogou fora o anel 1 e o anel 2 em x86-64, o Xen precisou recorrer ao gerenciamento baseado em software, que é ainda mais lento que o HVM;
  • paravirtualização assistida por hardware (PVH), - não deve ser confundido com totalmente virtualizado com drivers paravirtuais (PV-on-HVM), - que depende da assistência de hardware para lidar com privilégios instruções e tabelas de páginas de memória, mas usa técnicas fotovoltaicas tradicionais para todo o resto, para que nenhum hardware seja emulado e um desempenho quase nativo seja alcançado, como era nos tempos x86-32x bons.

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

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

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

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

No entanto, do ponto de vista da administração, a PVH não deve ser diferente da PV.

    
por 20.07.2013 / 15:25