Pt BR/Docs/Fedora7VirtQuickStart

= Virtualização no Fedora 7 =

O Fedora 7 inclui suporte a ambas as plataformas de vitualização Xen e KVM. Para mais informações sobre as diferentes plataformas de virtualização veja http://virt.kernelnewbies.org/TechComparison.

Mais informações sobre o Xen propriamente dito podem ser encontradas em http://wiki.xensource.com/xenwiki/ e a página sobre o Xen do Fedora. Mais informações sobre o KVM podem ser encontradas em http://kvm.qumranet.com/kvmwiki.

O Fedora está seguindo a linha do Xen 3.0.x. O Xen 3.0.0 foi lançado em Dezembro de 2005 e é incompatível com os hóspedes criados nas versões 2.0.x do Xen.

= Introdução =

A configuração de hóspedes Xen no Fedora 7 sofreu algumas mudanças sigficativas e melhorias desde o lançamento do Fedora Core 6. Este guia explica como configurar o Xen e o KVM e como criar e gerenciar novos hóspedes usando tanto a linha de comando quanto a interface gráfica.

Requerimentos de Sistema

 * Para o Xen, é requerido o GRUB, o gerenciador de inicialização padrão[[FootNote(Isto é necessário porque o sistema atualmente inicia o hipervisor Xen e este então inicia o kernel Linux. Isto é feito usando o padrão MultiBoot.)]
 * Para o KVM, o sistema deve ter um processador com suporte a virtualização.
 * Espaço de armazemanto suficiente para os sistemas operacionais hóspedes. Um sistema Fedora modo texto mínimo requer em torno de 600 MB de armazenamento, um desktop Fedora padrão requer em torno de 3 GB.
 * De maneira geral, pelo menos 256 MB de RAM por hóspede mais 256 MB para o sistema operacinoal base. Na prática, é difícil trabalhar com virtualização com menos de 1 GB de RAM.

Requerimentos para Hóspedes Para-virtualizados
Qualquer processador x86_64 ou IA64 é suportado para rodar hóspedes para-virtualizados com o Xen. Para hardware i386, um procesador com a extensão PAE é requerido. Muitos laptops antigos (particularmente aqueles baseados no Pentium Mobile/Centrino) não possuem suporte a PAE. Para verificar se um processador possui suporte a PAE, execute o seguinte comando:

flags          : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnow up ts
 * $ grep pae /proc/cpuinfo

A saída acima mostra um processador que possui suporte a PAE. Se o comando não retornar nada, o processador não possui suporte a PAE.

Hóspedes Completamente Vitualizados (HVM/Intel-VT/AMD-V)
Para rodar hóspedes completamente virtualizados no Xen ou no KVM, o processador do servidor precisa ter suporte a isso. Isto é tipicamente relacionado a tecnologias como Intel VT ou AMD-V. Para verificar pelo suporte a Intel VT procure pelo indicador 'vmx' ou, para verificar o suporte a AMD-V, procure pelo indicador 'svm':

flags          : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm
 * ....For Intel....

....For AMD.... flags          : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm cr8_legacy

Convenções
Comandos que requerem privilégios de root são precedidos do caracter '#'. Para tornar-se root, execute o comando 'su -' como um usuário normal e entre com a senha de administrador.

Instalando o Xen
Durante uma nova instalação do Fedora 7 o Xen pode ser instalado selecionando "Virtualização" no grupo "Sistema Básico" no instalador.

Para uma instalação do Fedora 7 já existente o kernel do Xen e as ferramentas podem ser instaladas abrindo o Gerenciador de Pacotes em "Aplicações" / "Adicionar/Remover Programas", selecionando "Virtualização" no grupo "Sistema Básico" e clicando em "Aplicar", ou ainda executando o seguinte comando:



Tanto o Gerenciador de Pacotes quanto o Yum instalarão os pacotes requeridos e suas dependências. O pacote 'kernel-xen' contem o kernel com o Xen habilitado para ambos os sistemas operacionais hóspede e hospedeiro, bem como o hipervisor. O pacote 'xen' também será instalado, ele contém as ferramentas do espaço do usuário para interagir com o hipervisor.

Uma vez que isto esteja feito, deverá haver uma entrada no arquivo /boot/grub/grub.conf para iniciar o kernel Xen. Este kernel não é definido como a opção padrão de inicialização.

Para definir o kernel Xen como a opção padrão no GRUB, edite o arquivo /boot/grub/grub.conf e defina o padrão para o kernel Xen[[FootNote(Note que os pacotes kernel-xen instalados no futuro podem ser definidos como padrão editando o arquivo /etc/sysconfig/kernel.)] :

Este é um arquivo /boot/grub/grub.conf de exemplo configurado para iniciar no hipervisor Xen:

timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Fedora (2.6.20-2925.5.fc7xen) root (hd0,0) kernel /xen.gz-2.6.20-2925.5.fc7 module /vmlinuz-2.6.20-2925.5.fc7xen ro root=/dev/VolRoot/LogVolRoot rhgb quiet module /initrd-2.6.20-2925.5.fc7xen.img title Fedora (2.6.20-1.3084.fc7) root (hd0,0) kernel /vmlinuz-2.6.20-1.3084.fc7 ro root=/dev/VolRoot/LogVolRoot rhgb quiet initrd /initrd-2.6.20-1.3084.fc7.img
 * default=0

Instalando o KVM
Durante uma nova instalação do Fedora 7, o KVM pode ser instalado selecionando "KVM" no grupo "Virtualização" da categoria "Sistema Básico", no instalador.

Para instalações existentes do Fedora 7, o pacote do KVM e as ferramentas de virtualização podem ser instaladas abrindo o Gerenciados de Pacotes em "Aplicações" / "Adicionar/Remover Programas", selecionando "Virtualização" no grupo "Sistema Básico", clicando em "Pacotes Opcionais", selecionando "kvm" e clicando em "Aplicar", ou então executando o seguinte comando:



Isto instala os pacotes requeridos e suas dependências. Note que o KVM é incluído no kernel regular; não é necessário iniciar o computador usando um kernel especial.

Ativando o Xen
Uma vez que o sistema esteja iniciado com o kernel Xen, verifique se o kernel e o Xen estão rodando:

2.6.20-2925.5.fc7xen
 * # uname -r

Name                             ID Mem(MiB) VCPUs State  Time(s) Domain-0                          0      610     1 r- 12492.1

A saída acima deve mostrar que o kernel Xen está rodando e que o Domain-0 (o sistema operacional hospedeiro) está rodando.



Ativando o KVM
Após o pacote do KVM estar instalado, o sistema deverá ser reiniciado para carregar os módulos do KVM. Nenhuma outra ação é necessária para ativar o KVM.

Criando um Sistema Hóspede Fedora
Com o Fedora 7, a instalação de sistemas hóspedes Fedora 7 usando o Anaconda é suportada. A instalação pode ser iniciada na linha de comando através do programa virt-install ou na interface gráfica usando o programa virt-manager.

Criando um Sistema Hóspede Fedora usando o virt-install
Inicie o processo de instalação interativa rodando o programa de linha de comando virt-install:



As seguintes questões sobre o novo sistema operacional hóspede serão apresentadas. Estas informações também podem ser passadas como opções na linha de comando; rode com o argumento --help para mais detalhes. Em particular, opções do kickstart podem ser passadas com -x ks=[opções].


 * 1) What is the name of your virtual machine? Este é o rótulo que identifica o sistema operacional hóspede. Este rótulo será usado em vários comandos xm e também aparecerá no virt-manager, o mini-aplicativo Xen do painel do Gnome. Adicionalmente, este nome será o mesmo do arquivo /etc/xen/[nome]  que armazena as informações de configuração do hóspede.
 * 2) How much RAM should be allocated (in megabytes)? Esta é a quantidade de memória RAM a ser alocada para a instância hóspede, em megabytes (e.g., 256). Note que a instalação com menos de 256 megabytes não é recomendada.
 * 3) What would you like to use as the disk (path)? O caminho local e o nome do arquivo para servir como imagem de disco para o hóspede (e.g., /home/joe/xenbox1). Isto será exportado como um disco inteiro para o seu hóspede.
 * 4) How large would you like the disk to be (in gigabytes)? O tamanho do disco virtual para o hóspede (aparece apenas se o arquivo especificado acima ainda não existir). 4 GB é um valor razoável para uma instalação padrão.
 * 5) Would you like to enable graphics support (yes or no): O instlador gráfico deve ser usado?
 * 6) What is the install location? Este é o caminho para uma árvore de instalação do Fedora 7 no formato usado pelo Anaconda. Locais NFS, FTP e HTTP são suportados. Exemplos incluem:

A instalação então terá início. Se os gráficos tiverem sido habilitados uma janela do VNC será aberta e apresentará o instalador gráfico. Se os gráficos não foram habilitados o instalador em modo texto padrão será exibido. Proceda normalmente com a instalação.

Criando um Sistema Hóspede Fedora usando o virt-manager
Inicie o "Gerenciador de Máquina Virtual" selecionando-o a partir do menu "Aplicações' / "Ferramentas do Sistema", ou rodando o seguinte comando, como root:




 * Na caixa de diálogo "Abrir Conexão" selecione "Xen" em "Hipervisor" e clique em "Conectar".
 * Na parte de baixo da janela, clique no botão "Novo", ou então vá em "Arquivo" / "Nova máquina".
 * Um assistente apresentará as mesmas questões do utilitário de linha de comando virt-install (veja a descrição acima). O assistente assume que uma instalação gráfica é desejada e não questiona essa opção.
 * Na última página do assistente é um botão "Concluir". Quando ele é clicado o sistema operacional hóspede é provisionado. Após alguns instantes uma janela do VNC deve apareer. Proceda normalmente com a instalação.

Criando um Sistema Hóspede Fedora usando Cobbler e Koan
O Cobbler é uma ferramenta para configurar e provisionar um servidor para PXE, Xen e sistemas existentes. Visite http://cobbler.et.redhat.com para obter mais detalhes. As instruções a seguir são básicas e mais opções estão disponíveis.

Primeiramente, configure um provedor:


 * # yum install cobbler

Alternativamente, o Cobbler pode importantar um espelho rsync do Fedora e criar perfis automaticamente a partir deles. Algumas das distribuições importadas serão perfis do Xen e algumas serão para uso no servidor hospedeiro. O uso de perfis Xen será requerido. Veja a página de manual para detalhes.

cobbler sync

No sistema que hospeda a imagem:


 * # yum install koan

Pós-Instalação
Quando a instalação do sistema operacional hóspede estiver completa ele pode ser gerenciado graficamente com o virt-manager ou na linha de comando usando o virsh.

Gerenciando Máquinas Virtuais Graficamente com o virt-manager
Inicie o "Gerenciador de Máquina Virtual" selecionando-o no menu "Aplicações" / "Ferramentas do Sistema" ou executando o seguinte comando:



{1} Se você não for o root será solicitada a digitação da senha de administrador. Selecione "Executar sem privilégios" para operar no modo de somente leitura.


 * Selecione "Xen" no campo "Hipervisor" e clique em "Conectar" no diálogo "Abrir Conexão".
 * A lista das máquinas virtuais será exibida na janela principal. a primeira máquina é chamada "Domain 0"; esta é o computador hospedeiro.
 * Se uma máquina não estiver listada, provavelmente ela não está rodando. Para iniciar uma máquina selecione "Arquivo" / "Restaurar máquina salva" e selecione o arquivo que serve como disco do hóspede.
 * O display lista o status e o uso de processador e de memória de cada máquina. Estatísticas adicionais podem ser selecionadas no menu "Visualização".
 * Dê um duplo-clique no nome de uma máquina para abrir o console virtual.
 * A partir do console virtual, selecione o painel "Visualização" / "Detalhes" para acessar as propriedades da máquina e modificar sua configuração de hardware.
 * Para acessar o console serial (se houver um problema com o console gráfico), selecione "Visualização" / "Console serial".

Para mais informações sobre o virt-manager consult o website do projeto.

Erros na ferramenta virt-manager devem ser reportados no componente 'virt-manager' do Bugzilla.

Gerenciando Máquinas Virtuais pela linha de comando com o virsh
As máquinas virtuais podem ser gerenciadas pela linha de comando com o utilitário virsh. O virsh é construído com base na API de gerenciamento libvirt e tem uma série de vantagens sobre a tradicional ferramenta xm do Xen:


 * Tem um conjunto estávem de comandos cuja sintaxe e semântica será preservada entre atualizações do Xen;
 * Pode ser usado por um usuário não-privilegiado para operações no modo somente-leitura (e.g.: listar domínios, obter informações etc);
 * Poderá (no futuro) gerenciar máquinas virtuais do VMWare e outros além to Xen e QEMU, uma vez que a libvirt é independente de hipervisor.

Para iniciar uma nova máquina virtual a partir de um arquivo XML de definição de máquina virtual:



Para listar as máquinas virtuais que estão rodando atualmente, use:



Para desligar normalmente um hóspede digite:



Para salvar o estado da máquina em um arquivo de sua escolha:



Para restaurar um estado salvo anteriormente:



Para exportar um arquivo XML de configuração associado com a máquina virtual:



Para obter a lista completa dos comandos disponíveis para uso com o virsh digite:



Ou consulte a página de manual do virsh(1).

Erros no virsh devem ser reportados no Bugzilla, no componente 'libvirt'.

Gerenciando Máquinas Virtuais na linha de comando com o qemu-kvm
As máquinas virtuais KVM podem ser gerenciadas na linha de comando usando o comando 'qemu-kvm'.

Gerenciando Máquinas Virtuais na linha de comando com o 'xm'
Além do comando virsh, as máquinas virtuais também podem ser gerenciadas na linha de comando com o utilitário xm, específico para o Xen. Para ligar uma máquina e adicionar um console serial, digite:



Para listar as máquinas virtuais que estão rodando, digite:



Para desligar um hóspede, digite:



Para salvar o estado de uma máquina para um arquivo:



Para restaurar um estado salvo anteriormente:



Para exibir estatísticas no estilo do top para todas as máquinas ativas:



Para uma lista completa dos comandos disponíveis para usar com o xm digite:



Erros na ferramenta xm devem ser reportados no BugZilla, no componente 'xen'.

= Resolução de Problemas =

SELinux
A política do SELinux no Fedora 8 possui as regras necessárias para permitir o uso do Xen com o SELinux habilitado. O principal cuidado que se deve tomar é com relação aos arquivos de imagem de disco que precisam estar num diretório especial - /var/lib/xen/images. Isto se aplica tanto a imagens de disco regulares quanto a imagens ISO. Partições de disco normais já são rotuladas corretamente e passam na verificação do SELinux.

Arquivos de Log
Há dois arquivos de log no sistema hospedeiro para auxiliar na resolução de problemas relacionados ao Xen. O arquivo /var/log/xen/xend.log guarda a mesma informação obtida com o comando xm log. Infelizmente essas mensagens de log são muito curtas e contém muito pouca informação útil. Segue abaixo a saída gerada na tentativa de criar um domínio rodando o kernel para o NetBSD/xen.

Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvBase.py", line 107, in _perform val = op_method(op, req) File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDomainDir.py", line 71, in op_create raise XendError("Error creating domain: " + str(ex)) XendError: Error creating domain: (0, 'Error')
 * [2005-06-27 02:23:02 xend] ERROR (SrvBase:163) op=create: Error creating domain:(0, 'Error')

O segundo arquivo, /var/log/xen/xend-debug.log contem informações muito mais detalhadas. A tentativa de iniciar um domínio NetBSD/xen resultará na seguinte saída de log:

ERROR: Actually saw: 'GUEST_OS=netbsd,GUEST_VER=2.0,XEN_VER=2.0,LOADER=generic,BSD_SYMTAB' ERROR: Error constructing guest OS
 * ERROR: Will only load images built for Xen v3.0

Quando reportar erros, sempre inclua os registros gravados no arquivos /var/log/xen/xend.log e /var/log/xen/xend-debug.log.

Se os domínios foram completamente virtualizados (i.e., para rodar sistemas operacionais não-modificados) também haverá logs em /var/log/xen/qemu-dm*.log que contém informações úteis.

Por fim, os logs do hipervisor podem ser vistos com o seguinte comando:



Acesso ao console serial hospedeiro
No caso de problemas mais difíceis o console serial pode ser muito útil. Se o kernel do próprio Xen tiver parado e o hipervisor tiver gerado um erro, não há como gravar o erro de maneira persistente localmente. Nesse caso, o console serial lhe permite capturar o erro em uma máquina remota.

O servidor Xen precisa estar com o console serial configurado e é necessário haver um servidor remoto para capturá-lo. Para habilitar a console, ajuste as opções apropriadas no arquivo /etc/grub.conf

root (hd0,2) kernel /xen.gz-2.6.17-1.2600.fc6 com1=38400,8n1 sync_console module /vmlinuz-2.6.17-1.2600.fc6xen ro root=LABEL=/ rhgb quiet console=ttyS0 console=tty pnpacpi=off module /initrd-2.6.17-1.2600.fc6xen.img
 * title Fedora Core (2.6.17-1.2600.fc6xen)

para um console serial 38400 bps na COM1 (i.e., /dev/ttyS0 no Linux.) A opção "sync_console" contorna um problema que causa travamento no console assíncrono no hipervisor e a opção "pnpacpi=off" contorna um problema que pára a entrada via console serial. As opções "console=ttyS0 console=tty" fazem os erros do kernel serem logados tanto no console VGA normal quando na console serial. Uma vez feito isso, instale e configura o ttywatch para capturar a informação em um servidor remoto conectado por um cabo "null-modem" padrão. Por exemplo, no servidor remoto:



Isso gravará a saída de /dev/ttyS0 no arquivo /var/log/ttywatch/myshost.log.

Acesso ao console serial de hóspedes paravirtualizados
Os sistemas operacionais hóspedes para-virtualizados terão um console serial configurado automaticamente e acessíveis através do sistema operacionais do Domain-0 através da linha de comando da seguinte forma:



Alternativamente, pode-se usar o programa gráfico virt-manager para exibir o console serial. Apenas abra a janela 'console' ou 'detalhes' para o hóspede e selecione 'Visualização / Console serial' na barra de menus.

Acesso ao console serial de hóspedes completamente virtualizados
Os sistemas operacionais hóspedes completamente virtualizados terão um console serial configurado, mas o kernel hóspede não estará configurado para usá-lo. Para habilitar o console m um hóspede Linux completamente virtualizado edite o arquivo /etc/grub.conf no hóspede e adicione a opção 'console=ttyS0 console=tty0'. Isto garante que todas as mensagens do kernel serão enviadas para o console serial e para o console gráfico regular. O console serial pode ser então acessado da mesma forma que os hóspedes paravirtualizados:



Alternativamente, pode-se usar o programa gráfico virt-manager para exibir o console serial. Apenas abra a janela 'console' ou 'detalhes' para o hóspede e seleecione 'Visualização / Console serial' na barra de menus.

Acessando os dados em uma imagem de disco de hóspede
Há duas ferramentas que podem ajudar bastante o acesso aos dados em uma imagem de disco de hóspede: lomount e kpartx.

lomount


O lomount só funciona com imagens de disco pequenas e não lida com volumes LVM, portanto, para casos mais complexos, o kpartx (incluído no pacote device-mapper-multipath) é uma melhor alternativa:

kpartx
add map guest1p1 : 0 208782 linear /dev/xen/guest1 63 add map guest1p2 : 0 16563015 linear /dev/xen/guest1 208845
 * # yum install device-mapper-multipath

Note que isto só funciona para dispositivos de bloco, não para imagens instaladas em arquivos regulares. Para usar arquivos de imagem, configure um dispositivo loopback para o arquivo primeiro:

/dev/loop0 add map loop0p1 : 0 208782 linear /dev/loop0 63 add map loop0p2 : 0 12370050 linear /dev/loop0 208845
 * # losetup -f

Neste caso nós adicionamos uma imagem formatada como uma instalação padrão do Fedora, então ela tem duas partições: uma /boot e um volume LVM contendo o resto. Eles tornam-se acessíveis a partir de /dev/mapper:

brw-rw 1 root disk 253, 6 Jun  6 10:32 xen-guest1 brw-rw 1 root disk 253, 14 Jun 6 11:13 guest1p1 brw-rw 1 root disk 253, 15 Jun 6 11:13 guest1p2
 * # ls -l /dev/mapper/ | grep guest1

Para acessar os volumes LVM da segunda partição, reanalise o volume com o vgscan e ative o grupo de volumes naquela partição (chamado "VolGroup00 por padrão) com vgchange -ay:

Reading all physical volumes. This may take a while... Found volume group "VolGroup00" using metadata type lvm2 2 logical volume(s) in volume group "VolGroup00" now active LV       VG         Attr   LSize   Origin Snap%  Move Log Copy% LogVol00 VolGroup00 -wi-a-   5.06G LogVol01 VolGroup00 -wi-a- 800.00M ...
 * # kpartx -a /dev/xen/guest1

Perguntas Freqüentes

 * P: Estou tentando iniciar o serviço xend e nada acontece, então do digito "xm list" e eu tenho o seguinte:

Error: Error connecting to xend: Connection refused. Is xend running?

Alternatively, I run xend start manually and get the following error:

ERROR: Could not obtain handle on privileged command interface (2 = No such file or directory) Traceback (most recent call last): File "/usr/sbin/xend", line 33, in ? from xen.xend.server import SrvDaemon File "/usr/lib/python2.4/site-packages/xen/xend/server/SrvDaemon.py", line 21, in ? import relocate File "/usr/lib/python2.4/site-packages/xen/xend/server/relocate.py", line 26, in ? from xen.xend import XendDomain File "/usr/lib/python2.4/site-packages/xen/xend/XendDomain.py", line 33, in ? import XendDomainInfo File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 37, in ? import image File "/usr/lib/python2.4/site-packages/xen/xend/image.py", line 30, in ? xc = xen.lowlevel.xc.xc RuntimeError: (2, 'No such file or directory')

R: Você reiniciou o servidor em um kernel que não é do hipervisor do Xen. Sim, eu fiz o teste :) Você precisa selecionar o kernel do hipervisor do Xen na hora de iniciar o sistema ou então definir esse kernel como o padrão no arquivo de configuração /etc/grub.conf.


 * P. Quando eu crio um hóspede aparece a mensagem "Invalid argument".

A. Geralmente isso é uma indicação de que a imagem do kernel que você está usando para tentar iniciar o hóspede é incompatível com o hipervisor. Isso acontecerá se você tentar executar um kernel do Fedora Core 5 (não-PAE) no Fedora Core 6 (apenas PAE) ou se tentar rodar um kernel sem suporte a Xen.


 * P. Quando eu executo yum update e instalo um novo kernel o grub.conf é alterado e o kernel padrão volta a ser o que sem suporte a Xen.

A. O nome padrão do pacote do kernel pode ser definido em /etc/sysconfig/kernel. Se ele estiver definido para 'kernel-xen', o kernel do Xen será sempre definido como o padrão no grub.conf.

Obtendo Ajuda
Se a seção Resolução de Problemas acima não lhe ajudar a resolver o seu problema, procure no Bugzilla da Red Hat para problemas reportados no Xen no Fedora 8. O produto é "Fedora" e o componente é "kernel" para problemas relacionados com o kernel do Xen e "xen" para problemas relacionados com as ferramentas relacionadas. Essas notificações contém conselhos úteis dos camaradas que testam o Xen e descrevem como contornar alguns problemas.

Para questões gerais e informações úteis sobre o Xen verifique a documentação do projeto Xen e os arquivos da sua lista de discussão.

Por fim, as discussões sobre o suporte ao Xen no Fedora acontecem na lista de discussão Fedora Xen.

Referências

 * http://www-128.ibm.com/developerworks/linux/library/l-linux-kvm/?ca=dgr-lnxw07LinuxKVM
 * http://kerneltrap.org/node/8088
 * https://fedoraproject.org/wiki/Docs/Fedora7VirtQuickStart