Red Hat Training
A Red Hat training course is available for RHEL 8
Configurando e gerenciando a virtualização
Configurando seu host, criando e administrando máquinas virtuais, e compreendendo os recursos de virtualização no Red Hat Enterprise Linux 8
Resumo
Tornando o código aberto mais inclusivo
A Red Hat tem o compromisso de substituir a linguagem problemática em nosso código, documentação e propriedades da web. Estamos começando com estes quatro termos: master, slave, blacklist e whitelist. Por causa da enormidade deste esforço, estas mudanças serão implementadas gradualmente ao longo de vários lançamentos futuros. Para mais detalhes, veja a mensagem de nosso CTO Chris Wright.
Fornecendo feedback sobre a documentação da Red Hat
Agradecemos sua contribuição em nossa documentação. Por favor, diga-nos como podemos melhorá-la. Para fazer isso:
Para comentários simples sobre passagens específicas:
- Certifique-se de que você está visualizando a documentação no formato Multi-page HTML. Além disso, certifique-se de ver o botão Feedback no canto superior direito do documento.
- Use o cursor do mouse para destacar a parte do texto que você deseja comentar.
- Clique no pop-up Add Feedback que aparece abaixo do texto destacado.
- Siga as instruções apresentadas.
Para enviar comentários mais complexos, crie um bilhete Bugzilla:
- Ir para o site da Bugzilla.
- Como Componente, use Documentation.
- Preencha o campo Description com sua sugestão de melhoria. Inclua um link para a(s) parte(s) relevante(s) da documentação.
- Clique em Submit Bug.
Capítulo 1. Virtualização no RHEL 8 - uma visão geral
Se você não está familiarizado com o conceito de virtualização ou sua implementação no Linux, as seguintes seções fornecem uma visão geral da virtualização no RHEL 8: seus conceitos básicos, vantagens, componentes e outras possíveis soluções de virtualização fornecidas pela Red Hat.
1.1. O que é a virtualização?
A RHEL 8 fornece a funcionalidade virtualization, que permite a uma máquina rodando RHEL 8 a host várias máquinas virtuais (VMs), também conhecidas como guests. As VMs utilizam o hardware físico e os recursos computacionais do host para executar um sistema operacional separado e virtualizado (guest OS) como um processo de espaço do usuário no sistema operacional do host.
Em outras palavras, a virtualização torna possível ter sistemas operacionais dentro de sistemas operacionais.
As VMs permitem que você teste com segurança configurações e recursos de software, execute software legado ou otimize a eficiência da carga de trabalho de seu hardware. Para mais informações sobre os benefícios, veja Seção 1.2, “Vantagens da virtualização”.
Para mais informações sobre o que é a virtualização, consulte o Portal do Cliente da Red Hat.
Para experimentar a virtualização no RHEL 8, ver Capítulo 2, Começando com a virtualização.
Além da virtualização RHEL 8, a Red Hat oferece uma série de soluções especializadas de virtualização, cada uma com um foco e características diferentes para o usuário. Para mais informações, veja Seção 1.5, “Soluções de virtualização da Red Hat”.
1.2. Vantagens da virtualização
O uso de máquinas virtuais (VMs) tem os seguintes benefícios em comparação com o uso de máquinas físicas:
Flexible and fine-grained allocation of resources
Uma VM funciona em uma máquina host, que normalmente é física, e o hardware físico também pode ser designado para que o sistema operacional convidado possa ser utilizado. Entretanto, a alocação de recursos físicos para a VM é feita no nível de software, e é, portanto, muito flexível. Uma VM usa uma fração configurável da memória do host, CPUs, ou espaço de armazenamento, e essa configuração pode especificar pedidos de recursos muito finos.
Por exemplo, o que o SO convidado vê como seu disco pode ser representado como um arquivo no sistema de arquivo hospedeiro, e o tamanho desse disco é menos restrito do que os tamanhos disponíveis para discos físicos.
Software-controlled configurations
Toda a configuração de uma VM é salva como dados no host, e está sob controle de software. Portanto, uma VM pode ser facilmente criada, removida, clonada, migrada, operada remotamente ou conectada ao armazenamento remoto.
Separation from the host
Um sistema operacional convidado é executado em um núcleo virtualizado, separado do sistema operacional hospedeiro. Isto significa que qualquer sistema operacional pode ser instalado em uma VM, e mesmo que o sistema operacional convidado se torne instável ou seja comprometido, o host não é afetado de forma alguma.
Space and cost efficiency
Uma única máquina física pode hospedar um grande número de VMs. Portanto, ela evita a necessidade de várias máquinas físicas para realizar as mesmas tarefas, e assim diminui os requisitos de espaço, potência e manutenção associados ao hardware físico.
Software compatibility
Como uma VM pode usar um SO diferente de seu host, a virtualização torna possível executar aplicações que não foram originalmente lançadas para seu SO host. Por exemplo, usando um SO convidado RHEL 6, você pode executar aplicativos liberados para o RHEL 6 em um sistema host RHEL 8.
NotaNem todos os sistemas operacionais são suportados como um sistema operacional convidado em um host RHEL 8. Para obter detalhes, consulte Seção 20.2, “Características recomendadas na virtualização RHEL 8”.
1.3. Componentes de máquinas virtuais e sua interação
A virtualização no RHEL 8 consiste nos seguintes componentes principais de software:
Hypervisor
A base da criação de máquinas virtuais (VMs) no RHEL 8 é o hypervisor, uma camada de software que controla o hardware e permite executar múltiplos sistemas operacionais em uma máquina host.
O hipervisor inclui o módulo Kernel-based Virtual Machine (KVM) e drivers do kernel de virtualização, tais como virtio
e vfio
. Estes componentes garantem que o kernel Linux na máquina host fornece recursos de virtualização para o software do espaço do usuário.
Em nível de espaço do usuário, o emulador QEMU simula uma plataforma de hardware virtualizada completa na qual o sistema operacional convidado pode rodar, e gerencia como os recursos são alocados no host e apresentados ao convidado.
Além disso, o pacote de software libvirt
serve como uma camada de gerenciamento e comunicação, tornando a QEMU mais fácil de interagir, aplicando regras de segurança, e fornecendo uma série de ferramentas adicionais para configurar e executar VMs.
Configuração em XML
Um arquivo de configuração XML baseado em host (também conhecido como um arquivo domain XML ) determina todas as configurações e dispositivos em uma VM específica. A configuração inclui:
- Metadados como o nome do VM, fuso horário, e outras informações sobre o VM.
- Uma descrição dos dispositivos na VM, incluindo CPUs virtuais (vCPUS), dispositivos de armazenamento, dispositivos de entrada/saída, placas de interface de rede, e outros hardwares, reais e virtuais.
- Configurações da VM, como a quantidade máxima de memória que ela pode usar, configurações de reinício e outras configurações sobre o comportamento da VM.
Para mais informações sobre o conteúdo de uma configuração XML, veja exemplo de configuração VM XML.
Interação dos componentes
Quando uma VM é iniciada, o hipervisor usa a configuração XML para criar uma instância da VM como um processo de espaço do usuário no host. O hipervisor também torna o processo da VM acessível às interfaces baseadas no host, tais como virsh
, virt-install
e guestfish
utilitários, ou a GUI do console web.
Quando estas ferramentas de virtualização são utilizadas, a libvirt traduz suas contribuições em instruções para a QEMU. A QEMU comunica as instruções à KVM, o que garante que o núcleo atribua adequadamente os recursos necessários para executar as instruções. Como resultado, QEMU pode executar as mudanças de espaço do usuário correspondentes, tais como criar ou modificar uma VM, ou executar uma ação no sistema operacional convidado da VM.
Embora o QEMU seja um componente essencial da arquitetura, ele não se destina a ser usado diretamente nos sistemas RHEL 8, devido a preocupações com a segurança. Portanto, o uso dos comandos qemu-*
não é suportado pela Red Hat, e é altamente recomendável interagir com QEMU usando libvirt.
Para mais informações sobre as interfaces baseadas em host, veja Seção 1.4, “Ferramentas e interfaces para o gerenciamento da virtualização”.
Figura 1.1. Arquitetura de virtualização RHEL 8

1.4. Ferramentas e interfaces para o gerenciamento da virtualização
Você pode gerenciar a virtualização no RHEL 8 usando a interface de linha de comando (CLI) ou várias interfaces gráficas de usuário (GUIs).
Interface de linha de comando
O CLI é o método mais poderoso de gerenciar a virtualização no RHEL 8. Os comandos proeminentes do CLI para gerenciamento de máquinas virtuais (VM) incluem:
virsh - Uma versátil linha de comando de virtualização utilitária e shell com uma grande variedade de propósitos, dependendo dos argumentos fornecidos. Por exemplo:
-
Iniciando e desligando uma VM -
virsh start
evirsh shutdown
-
Listagem das VMs disponíveis -
virsh list
-
Criação de um VM a partir de um arquivo de configuração -
virsh create
-
Entrando em uma concha de virtualização -
virsh
Para mais informações, consulte a página de manual
virsh(1)
.-
Iniciando e desligando uma VM -
-
virt-install
- Um utilitário CLI para a criação de novas VMs. Para mais informações, consulte a página de manualvirt-install(1)
. -
virt-xml
- Um utilitário para editar a configuração de uma VM. -
guestfish
- Um utilitário para examinar e modificar as imagens de disco VM. Para mais informações, consulte a página de manualguestfish(1)
.
Interfaces gráficas
Você pode usar as seguintes GUIs para gerenciar a virtualização no RHEL 8:
O RHEL 8 web console, também conhecido como Cockpit, oferece uma interface gráfica de usuário remotamente acessível e fácil de usar para o gerenciamento de VMs e hosts de virtualização.
Para instruções sobre o gerenciamento básico de virtualização com o console web, veja Capítulo 5, Gerenciamento de máquinas virtuais no console web.
O aplicativo Virtual Machine Manager (virt-manager) fornece uma GUI especializada para o gerenciamento de VMs e hospedeiros de virtualização.
ImportanteApesar de ainda ser apoiado no RHEL 8, virt-manager foi depreciado. O console web pretende se tornar seu substituto em um lançamento subseqüente. É, portanto, recomendado que você se familiarize com o console web para gerenciar a virtualização em uma GUI.
Entretanto, no RHEL 8, algumas características podem ser acessíveis apenas a partir do site virt-manager ou da linha de comando. Para detalhes, veja Seção 5.4, “Diferenças entre os recursos de virtualização no Virtual Machine Manager e no console web”.
O aplicativo Gnome Boxes é uma interface gráfica leve para visualizar e acessar VMs e sistemas remotos. O Gnome Boxes é projetado principalmente para uso em sistemas desktop.
ImportanteGnome Boxes é fornecido como parte do ambiente desktop GNOME e é suportado no RHEL 8, mas a Red Hat recomenda que você use o console web para gerenciar a virtualização em uma GUI.
Recursos adicionais
- Para instruções sobre o gerenciamento básico da virtualização usando CLI e GUI, veja Capítulo 2, Começando com a virtualização.
1.5. Soluções de virtualização da Red Hat
Os seguintes produtos da Red Hat são construídos sobre os recursos de virtualização RHEL 8 e expandem os recursos de virtualização KVM disponíveis no RHEL 8. Além disso, muitas limitações da virtualização RHEL 8 não se aplicam a esses produtos:
- Virtualização da Red Hat (RHV)
A RHV foi projetada para escalabilidade e desempenho de classe empresarial, e permite o gerenciamento de toda sua infra-estrutura virtual, incluindo hosts, máquinas virtuais, redes, armazenamento e usuários a partir de uma interface gráfica centralizada.
A Virtualização da Red Hat pode ser utilizada por empresas que executam grandes implantações ou aplicações de missão crítica. Exemplos de grandes implantações adequadas para a Virtualização da Red Hat incluem bancos de dados, plataformas comerciais e sistemas de mensagens que devem funcionar continuamente sem nenhum tempo de inatividade.
Para mais informações sobre a Virtualização da Red Hat, consulte o Portal do Cliente da Red Hat ou o conjunto de documentação sobre a Virtualização da Red Hat.
Para baixar uma versão de avaliação de 60 dias da Red Hat Virtualization totalmente suportada, veja https://access.redhat.com/products/red-hat-virtualization/evaluation
- Plataforma Red Hat OpenStack (RHOSP)
A Plataforma OpenStack da Red Hat oferece uma base integrada para criar, implantar e escalar uma nuvem OpenStack segura e confiável, pública ou privada.
Para maiores informações sobre a Plataforma OpenStack da Red Hat, veja o Portal do Cliente da Red Hat ou o conjunto de documentação da Plataforma OpenStack da Red Hat.
Para detalhes sobre recursos de virtualização não suportados na RHEL, mas suportados na RHV ou RHOSP, veja Seção 20.3, “Características não suportadas na virtualização RHEL 8”.
Além disso, produtos específicos da Red Hat fornecem operating-system-level virtualization, também conhecidos como containerization:
- Os contêineres são instâncias isoladas do sistema operacional hospedeiro e operam em cima de um núcleo de sistema operacional existente. Para mais informações sobre os contêineres, consulte o Portal do Cliente da Red Hat.
- Os recipientes não têm a versatilidade da virtualização da KVM, mas são mais leves e flexíveis de manusear. Para uma comparação mais detalhada, veja a Introdução aos Containers Linux.
Capítulo 2. Começando com a virtualização
Para começar a utilizar a virtualização no RHEL 8, siga os passos abaixo. O método padrão para isso é usar a interface de linha de comando (CLI), mas para conveniência do usuário, alguns dos passos podem ser completados na GUI do console web.
- Habilitar o módulo de virtualização e instalar os pacotes de virtualização - ver Seção 2.1, “Possibilitando a virtualização”.
Criar uma máquina virtual (VM):
Inicie o VM:
Conecte-se ao VM:
O console web atualmente fornece apenas um subconjunto de funções de gerenciamento de VM, portanto, o uso da linha de comando é recomendado para o uso avançado de virtualização no RHEL 8.
2.1. Possibilitando a virtualização
Para utilizar a virtualização no RHEL 8, você deve habilitar o módulo de virtualização, instalar pacotes de virtualização e garantir que seu sistema esteja configurado para hospedar máquinas virtuais (VMs).
Pré-requisitos
- O Red Hat Enterprise Linux 8 está instalado e registrado em sua máquina host.
Seu sistema atende aos seguintes requisitos de hardware para funcionar como um host de virtualização:
- A arquitetura de sua máquina host suporta a virtualização da KVM.
Os seguintes recursos mínimos do sistema estão disponíveis:
- 6 GB de espaço livre em disco para o host, mais outros 6 GB para cada VM pretendido.
- 2 GB de RAM para o host, mais outros 2 GB para cada VM pretendido.
Procedimento
Instale os pacotes no módulo de virtualização RHEL 8:
# yum module install virt
Instale os pacotes
virt-install
evirt-viewer
:# yum install virt-install virt-viewer
Iniciar o serviço
libvirtd
.# systemctl start libvirtd
Verifique se seu sistema está preparado para ser um host de virtualização:
# virt-host-validate [...] QEMU: Checking for device assignment IOMMU support : PASS QEMU: Checking if IOMMU is enabled by kernel : WARN (IOMMU appears to be disabled in kernel. Add intel_iommu=on to kernel cmdline arguments) LXC: Checking for Linux >= 2.6.26 : PASS [...] LXC: Checking for cgroup 'blkio' controller mount-point : PASS LXC: Checking if device /sys/fs/fuse/connections exists : FAIL (Load the 'fuse' module to enable /proc/ overrides)
Se todos os cheques virt-host-validate retornarem um valor
PASS
, seu sistema está preparado para a criação de VMs.Se algum dos cheques devolver um valor
FAIL
, siga as instruções exibidas para corrigir o problema.Se algum dos cheques retornar um valor
WARN
, considere seguir as instruções exibidas para melhorar as capacidades de virtualização.
Informações adicionais
Note que se a virtualização não for suportada por sua CPU hospedeira, virt-host-validate gera a seguinte saída:
QEMU: Verificação da virtualização do hardware: FAIL (Somente CPUs emuladas estão disponíveis, o desempenho será significativamente limitado)
Entretanto, a tentativa de criar VMs em um sistema hospedeiro desse tipo falhará, ao invés de ter problemas de desempenho.
2.2. Criando máquinas virtuais
Para criar uma máquina virtual (VM) no RHEL 8, use a interface de linha de comando ou o console web RHEL 8.
Pré-requisitos
- A virtualização é instalada e ativada em seu sistema.
Você tem quantidade suficiente de recursos do sistema para alocar para suas VMs, tais como espaço em disco, RAM ou CPUs. Os valores recomendados podem variar significativamente dependendo das tarefas pretendidas e da carga de trabalho das VMs.
AtençãoA instalação a partir de um CD-ROM ou DVD-ROM host não é possível no RHEL 8. Se você selecionar um CD-ROM ou DVD-ROM como fonte de instalação ao usar qualquer método de instalação VM disponível no RHEL 8, a instalação falhará. Para mais informações, consulte a Base de Conhecimento da Red Hat.
2.2.1. Criação de máquinas virtuais usando a interface de linha de comando
Para criar uma máquina virtual (VM) em seu host RHEL 8 usando o utilitário virt-install
, siga as instruções abaixo.
Pré-requisitos
- A virtualização é ativada em seu sistema hospedeiro.
Uma fonte de instalação de sistema operacional (SO) está disponível localmente ou em uma rede. Esta pode ser uma das seguintes:
- Uma imagem ISO de um meio de instalação
- Uma imagem em disco de uma instalação de VM existente
- Opcional: Um arquivo Kickstart pode ser fornecido para uma configuração mais rápida e fácil da instalação.
Procedimento
Para criar uma VM e iniciar sua instalação do SO, use o comando virt-install
, juntamente com os seguintes argumentos obrigatórios:
- O nome da nova máquina
- A quantidade de memória alocada
- O número de CPUs virtuais alocadas (vCPUs)
- O tipo e o tamanho do armazenamento alocado
- O tipo e a localização da fonte de instalação do sistema operacional
Com base no método de instalação escolhido, as opções e valores necessários podem variar. Veja abaixo os exemplos:
O seguinte cria uma VM chamada demo-guest1 que instala o sistema operacional Windows 10 a partir de uma imagem ISO armazenada localmente no arquivo /home/username/Downloads/Win10install.iso. Esta VM também é alocada com 2048 MiB de RAM e 2 vCPUs, e um disco virtual de 80 GiB qcow2 é configurado automaticamente para a VM.
# virt-install --name demo-guest1 --memory 2048 --vcpus 2 --disk size=80 --os-variant win10 --cdrom /home/username/Downloads/Win10install.iso
A seguir, cria-se uma VM chamada demo-guest2 que usa a imagem /home/username/Downloads/rhel8.iso para executar um SO RHEL 8 a partir de um CD ao vivo. Nenhum espaço em disco é atribuído a esta VM, portanto, as alterações feitas durante a sessão não serão preservadas. Além disso, a VM é alocada com 4096 MiB de RAM e 4 vCPUs.
# virt-install --name demo-guest2 --memory 4096 --vcpus 4 --disk none --livecd --os-variant rhel8.0 --cdrom /home/username/Downloads/rhel8.iso
O seguinte cria uma RHEL 8 VM chamada demo-guest3 que se conecta a uma imagem de disco existente, /home/username/backup/disk.qcow2. Isto é semelhante a mover fisicamente um disco rígido entre máquinas, portanto o sistema operacional e os dados disponíveis para o Demo-guest3 são determinados pela forma como a imagem foi tratada anteriormente. Além disso, esta VM é alocada com 2048 MiB de RAM e 2 vCPUs.
# virt-install --name demo-guest3 --memory 2048 --vcpus 2 --os-variant rhel8.0 --import --disk /home/username/backup/disk.qcow2
Note que a opção
--os-variant
é altamente recomendada ao importar uma imagem de disco. Se ela não for fornecida, o desempenho do VM criado será afetado negativamente.O seguinte cria uma VM chamada demo-guest4 que se instala a partir do
http://example.com/OS-install
URL. Para que a instalação comece com sucesso, a URL deve conter uma árvore de instalação do sistema operacional em funcionamento. Além disso, o sistema operacional é configurado automaticamente usando o arquivo kickstart /home/username/ks.cfg. Esta VM também é alocada com 2048 MiB de RAM, 2 vCPUs, e um disco virtual de 160 GiB qcow2.# virt-install --name demo-guest4 --memory 2048 --vcpus 2 --disk size=160 --os-variant rhel8.0 --location http://example.com/OS-install --initrd-inject /home/username/ks.cfg --extra-args="ks=file:/ks.cfg console=tty0 console=ttyS0,115200n8"
A seguir, cria-se uma VM chamada demo-guest5 que instala a partir de um arquivo de imagem
RHEL8.iso
em modo somente texto, sem gráficos. Ela conecta o console convidado ao console serial. A VM tem 16384 MiB de memória, 16 vCPUs, e 280 GiB de disco. Este tipo de instalação é útil quando se conecta a um host através de um link de rede lento.# virt-install --name demo-guest5 --memory 16384 --vcpus 16 --disk size=280 --os-variant rhel8.0 --location RHEL8.iso --graphics none --extra-args='console=ttyS0'
O seguinte cria uma VM chamada demo-guest6, que tem a mesma configuração do demo-guest5 , mas reside no host remoto 10.0.0.1.
# virt-install --connect qemu ssh://root@10.0.0.1/system --name demo-guest6 --memory 16384 --vcpus 16 --disk size=280 --os-variant rhel8.0 --location RHEL8.iso --graphics none --extra-args='console=ttyS0'
Se a VM for criada com sucesso, uma janela do visualizador de vírus se abre com um console gráfico da VM e inicia a instalação do sistema operacional convidado.
Solução de problemas
Se
virt-install
falhar com um errocannot find default network
:Certifique-se de que o pacote libvirt-daemon-config-network esteja instalado:
# yum info libvirt-daemon-config-network Installed Packages Name : libvirt-daemon-config-network [...]
Verifique se a rede padrão
libvirt
está ativa e configurada para iniciar automaticamente:# virsh net-list --all Name State Autostart Persistent -------------------------------------------- default active yes yes
Se não for, ative a rede padrão e configure-a para inicialização automática:
# virsh net-autostart default Network default marked as autostarted # virsh net-start default Network default started
Se a ativação da rede padrão falhar com o seguinte erro, o pacote libvirt-daemon-config-network não foi instalado corretamente.
error: failed to get network 'default' error: Network not found: no network with matching name 'default'
Para corrigir isso, reinstale libvirt-daemon-config-network.
# yum reinstall libvirt-daemon-config-network
Se a ativação da rede padrão falhar com um erro semelhante ao seguinte, ocorreu um conflito entre a subrede padrão da rede e uma interface existente no host.
error: Failed to start network default error: internal error: Network is already in use by interface ens2
Para corrigir isso, use o comando
virsh net-edit default
e altere os valores de 192.168.122.* na configuração para uma sub-rede que ainda não esteja em uso no host.
Recursos adicionais
- Várias outras opções podem ser especificadas para virt-install para configurar ainda mais a VM e sua instalação do sistema operacional. Para detalhes, consulte a página de manual virt-install.
- Se você já tem uma VM funcional, você pode cloná-la para criar rapidamente uma nova VM com a mesma configuração e dados. Para maiores detalhes, veja Capítulo 8, Clonagem de máquinas virtuais.
2.2.2. Criação de máquinas virtuais e instalação de sistemas operacionais convidados usando o console web
Para gerenciar máquinas virtuais (VMs) em uma GUI em um host RHEL 8, use o console web. As seções seguintes fornecem informações sobre como usar o console web RHEL 8 para criar máquinas virtuais e instalar sistemas operacionais convidados nelas.
2.2.2.1. Criação de máquinas virtuais utilizando o console web
Para criar uma máquina virtual (VM) na máquina host à qual o console web está conectado, siga as instruções abaixo.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Você tem quantidade suficiente de recursos do sistema para alocar para suas VMs, tais como espaço em disco, RAM ou CPUs. Os valores recomendados podem variar significativamente dependendo das tarefas pretendidas e da carga de trabalho das VMs.
Procedimento
Na interface das máquinas virtuais do console web, clique Create VM.
Aparece o diálogo Criar Nova Máquina Virtual.
Digite a configuração básica da VM que você deseja criar.
- Name - O nome do VM.
- Installation Type - A instalação pode usar um meio de instalação local, uma URL, uma inicialização de rede PXE, ou baixar um SO de um conjunto limitado de sistemas operacionais.
- Operating System - O sistema operacional da VM. Note que a Red Hat fornece suporte apenas para um conjunto limitado de sistemas operacionais convidados.
- Storage - O tipo de armazenamento com o qual configurar a VM.
- Size - A quantidade de espaço de armazenamento com o qual se pode configurar a VM.
- Memory - A quantidade de memória com a qual se pode configurar o VM.
- Run unattended installation - Se a instalação deve ou não ser executada sem supervisão.
- Immediately Start VM - Se a VM começará ou não imediatamente após a sua criação.
Clique em Criar.
O VM é criado. Se a caixa de seleção Immediately Start VM estiver selecionada, a VM iniciará imediatamente e começará a instalação do sistema operacional convidado.
Recursos adicionais
- Para informações sobre a instalação de um sistema operacional em uma VM, veja Seção 2.2.2.3, “Instalação de sistemas operacionais convidados usando o console web”.
2.2.2.2. Criação de máquinas virtuais através da importação de imagens de disco usando o console web
Para criar uma máquina virtual (VM), importando uma imagem em disco de uma instalação existente de uma VM, siga as instruções abaixo.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Você tem quantidade suficiente de recursos do sistema para alocar para suas VMs, tais como espaço em disco, RAM ou CPUs. Os valores recomendados podem variar significativamente dependendo das tarefas pretendidas e da carga de trabalho das VMs.
- Certifique-se de ter uma imagem em disco de uma instalação de VM existente
Procedimento
Na interface das máquinas virtuais do console web, clique Import VM.
Aparece o diálogo Importar uma máquina virtual.
Digite a configuração básica da VM que você deseja criar.
- Name - O nome do VM.
- Connection - O tipo de conexão, sistema ou sessão de libvirt.
- Installation Source - A imagem em disco existente de uma VM no sistema host.
- Operating System - O sistema operacional da VM. Note que a Red Hat fornece suporte apenas para um conjunto limitado de sistemas operacionais convidados.
- Memory - A quantidade de memória com a qual se pode configurar o VM.
- Immediately Start VM - Se a VM começará ou não imediatamente após a sua criação.
- Clique em Importar.
2.2.2.3. Instalação de sistemas operacionais convidados usando o console web
A primeira vez que uma máquina virtual (VM) é carregada, você deve instalar um sistema operacional na VM.
Se a caixa de seleção Immediately Start VM no diálogo Criar Nova Máquina Virtual for marcada, a rotina de instalação do sistema operacional será iniciada automaticamente quando a VM for criada.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Uma VM na qual se deseja instalar um sistema operacional deve estar disponível.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM na qual você deseja instalar um sistema operacional convidado.
A linha se expande para revelar o painel Overview com informações básicas sobre a VM selecionada e controles para instalação e exclusão da VM.
Optional: Alterar o firmware.
NotaVocê pode alterar o firmware somente se não tiver selecionado a caixa de seleção Immediately Start VM no diálogo Create New Virtual Machine, e o sistema operacional ainda não tiver sido instalado na VM.
Clique no firmware destacado.
Na janela Change Firmware, selecione o firmware desejado.
- Clique em Salvar.
Clique em Instalar.
A rotina de instalação do sistema operacional é executada no console da VM.
Solução de problemas
- Se a rotina de instalação falhar, a VM deve ser apagada e recriada.
2.3. Inicialização de máquinas virtuais
Para iniciar uma máquina virtual (VM) no RHEL 8, você pode usar a interface de linha de comando ou o GUI do console web.
Pré-requisitos
- Antes que uma VM possa ser iniciada, ela deve ser criada e, idealmente, também instalada com um sistema operacional. Para instruções para fazê-lo, veja Seção 2.2, “Criando máquinas virtuais”.
2.3.1. Iniciando uma máquina virtual usando a interface de linha de comando
Você pode usar a interface de linha de comando para iniciar uma máquina virtual de desligamento (VM) ou restaurar uma VM salva. Siga o procedimento abaixo.
Pré-requisitos
- Um VM inativo que já está definido.
- O nome do VM.
Para VMs remotas:
- O endereço IP do host onde a VM está localizada.
- Privilégios de acesso à raiz para o anfitrião.
Procedimento
Para uma VM local, use o utilitário
virsh start
.Por exemplo, o seguinte comando inicia o demo-guest1 VM.
# virsh start demo-guest1 Domain demo-guest1 started
Para uma VM localizada em um host remoto, use o utilitário
virsh start
junto com a conexão SSH QEMU com o host.Por exemplo, o seguinte comando inicia o VM demo-guest1 no host 192.168.123.123.
# virsh -c qemu+ssh://root@192.168.123.123/system start demo-guest1 root@192.168.123.123's password: Last login: Mon Feb 18 07:28:55 2019 Domain demo-guest1 started
Recursos adicionais
-
Para mais argumentos
virsh start
, usevirsh start --help
. - Para simplificar o gerenciamento de VM em hosts remotos, veja modificando sua configuração de libvirt e SSH.
-
Você pode usar o utilitário
virsh autostart
para configurar uma VM para iniciar automaticamente quando o host iniciar. Para mais informações sobre o autostart, consulte a página de ajudavirsh autostart
.
2.3.2. Inicialização de máquinas virtuais usando o console web
Se uma máquina virtual (VM) estiver no estado shut off, você pode iniciá-la usando o console web RHEL 8.
Pré-requisitos
- Um VM inativo que já está definido.
- O nome do VM.
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM que você deseja iniciar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Run.
A VM inicia, e você pode se conectar a seu console ou saída gráfica.
-
Optional: Para configurar a VM para iniciar automaticamente quando o host iniciar, clique na caixa de seleção
Autostart
.
Recursos adicionais
- Para obter informações sobre como desligar um VM, consulte Seção 2.5.2.1, “Desligamento de máquinas virtuais no console web”.
- Para informações sobre como reiniciar um VM, veja Seção 2.5.2.2, “Reinicialização de máquinas virtuais usando o console web”.
- Para informações sobre como enviar uma interrupção não-máscara para uma VM, veja Seção 2.5.2.3, “Envio de interrupções não-máscaras para VMs usando o console web”.
2.4. Conexão com máquinas virtuais
Para interagir com uma máquina virtual (VM) no RHEL 8, você precisa se conectar a ela, fazendo uma das seguintes ações:
- Ao utilizar a interface do console web, use o painel Máquinas Virtuais na interface do console web. Para mais informações, veja Seção 2.4.1, “Interagindo com máquinas virtuais usando o console web”.
- Se você precisar interagir com um display gráfico VM sem usar o console web, use o aplicativo Virt Viewer. Para detalhes, veja Seção 2.4.2, “Abrindo um console gráfico de máquina virtual usando o Virt Viewer”.
- Quando uma visualização gráfica não for possível ou não for necessária, use uma conexão terminal SSH.
- Quando a máquina virtual não for acessível a partir de seu sistema por meio de uma rede, use o console virsh.
Se as VMs às quais você está se conectando estiverem em um host remoto em vez de um host local, você pode opcionalmente configurar seu sistema para um acesso mais conveniente aos hosts remotos.
Pré-requisitos
- As VMs com as quais você deseja interagir são instaladas e iniciadas.
2.4.1. Interagindo com máquinas virtuais usando o console web
Para interagir com uma máquina virtual (VM) no console web RHEL 8, você precisa se conectar ao console da VM. Estes incluem tanto os consoles gráficos quanto os consoles seriais.
- Para interagir com a interface gráfica da VM no console web, use o console gráfico.
- Para interagir com a interface gráfica da VM em um visualizador remoto, use o console gráfico em visualizadores remotos.
- Para interagir com o CLI da VM no console web, use o console serial.
2.4.1.1. Visualização do console gráfico da máquina virtual no console web
Usando a interface do console da máquina virtual (VM), você pode visualizar a saída gráfica de uma VM selecionada no console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Garantir que tanto o host quanto a VM suportem uma interface gráfica.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM cujo console gráfico você deseja visualizar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Consoles.
O console gráfico aparece na interface web.

Você pode interagir com o console VM usando o mouse e o teclado da mesma forma que interage com uma máquina real. A exibição no console da VM reflete as atividades que estão sendo realizadas na VM.
O host no qual o console web está rodando pode interceptar combinações chave específicas, tais como Ctrl+Alt+Delimpedindo que eles sejam enviados ao VM.
Para enviar tais combinações de teclas, clique no menu Enviar tecla e selecione a seqüência de teclas a ser enviada.
Por exemplo, para enviar o Ctrl+Alt+Del para o VM, clique no menu Send key e selecione a entrada do menu Ctrl Alt Del.
Recursos adicionais
- Para instruções sobre como visualizar o console gráfico em um visualizador remoto, veja Seção 2.4.1.2, “Visualização do console gráfico em um visualizador remoto usando o console web”.
- Para instruções sobre como visualizar o console serial no console web, veja Seção 2.4.1.3, “Visualização do console serial da máquina virtual no console web”.
2.4.1.2. Visualização do console gráfico em um visualizador remoto usando o console web
Você pode visualizar o console gráfico de uma máquina virtual selecionada (VM) em um visualizador remoto, como um visualizador de virtudes. Para instruções, veja abaixo.
Você pode lançar o Virt Viewer de dentro do console web. Outros visualizadores remotos VNC e SPICE podem ser lançados manualmente.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Garantir que tanto o host quanto a VM suportem uma interface gráfica.
Antes que você possa visualizar o console gráfico no Virt Viewer, o Virt Viewer deve ser instalado na máquina à qual o console web está conectado.
Para visualizar informações sobre a instalação do Virt Viewer, selecione o Graphics Console em Desktop Viewer Console Type e clique em More Information na janela Consoles.
Algumas extensões e plug-ins do navegador não permitem que o console web abra o Virt Viewer.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM cujo console gráfico você deseja visualizar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Consoles.
O console gráfico aparece na interface web.
Selecione o tipo de Console Gráfico no Desktop Viewer Console.
Clique em Launch Remote Viewer.
O console gráfico aparece no Virt Viewer.
Você pode interagir com o console VM usando o mouse e o teclado da mesma forma que interage com uma máquina real. A exibição no console da VM reflete as atividades que estão sendo realizadas na VM.
O servidor no qual o console web está rodando pode interceptar combinações específicas de teclas, tais como Ctrl+Alt+Delimpedindo que eles sejam enviados ao VM.
Para enviar tais combinações de teclas, clique no menu Enviar tecla e selecione a seqüência de teclas a ser enviada.
Por exemplo, para enviar o Ctrl+Alt+Del para o VM, clique no menu Send key e selecione a entrada do menu Ctrl Alt Del.
Solução de problemas
Se o lançamento de um console gráfico de visualização remota no console web não funcionar ou não for ótimo, você pode usar a informação
Manual Connection
, exibida no lado direito do painel do Console Gráfico.Digite as informações em um aplicativo SPICE ou VNC viewer, como o Virt Viewer.
Recursos adicionais
- Para instruções sobre como visualizar o console gráfico no console web, veja Seção 2.4.1.1, “Visualização do console gráfico da máquina virtual no console web”.
- Para instruções sobre como visualizar o console serial no console web, veja Seção 2.4.1.3, “Visualização do console serial da máquina virtual no console web”.
2.4.1.3. Visualização do console serial da máquina virtual no console web
Você pode visualizar o console serial de uma máquina virtual selecionada (VM) no console web RHEL 8. Isto é útil quando a máquina host ou a VM não está configurada com uma interface gráfica.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
No painel Máquinas Virtuais, clique na linha da VM cujo console serial você deseja visualizar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Consoles.
O console gráfico aparece na interface web.
Selecione o Tipo de Console Serial.
O console serial aparece na interface web.
Você pode desconectar e reconectar o console serial da VM.
- Para desconectar o console serial da VM, clique em Desconectar.
- Para reconectar o console serial à VM, clique em Reconectar.
Recursos adicionais
- Para instruções sobre como visualizar o console gráfico no console web, veja Seção 2.4.1.1, “Visualização do console gráfico da máquina virtual no console web”.
- Para instruções sobre como visualizar o console gráfico em um visualizador remoto, veja Seção 2.4.1.2, “Visualização do console gráfico em um visualizador remoto usando o console web”.
2.4.2. Abrindo um console gráfico de máquina virtual usando o Virt Viewer
Para conectar-se a um console gráfico de uma máquina virtual KVM (VM) e abri-lo no aplicativo de desktop Virt Viewer
, siga o procedimento abaixo.
Pré-requisitos
- Seu sistema, assim como o VM ao qual você está se conectando, deve suportar displays gráficos.
- Se o VM alvo estiver localizado em um host remoto, são necessários privilégios de conexão e acesso root ao host.
- Optional: Se o VM alvo estiver localizado em um host remoto, configure seu libvirt e SSH para um acesso mais conveniente a hosts remotos.
Procedimento
Para conectar-se a uma VM local, use o seguinte comando e substitua guest-name pelo nome da VM à qual você deseja conectar-se:
# virt-viewer guest-name
Para conectar-se a uma VM remota, use o comando
virt-viewer
com o protocolo SSH. Por exemplo, o seguinte comando se conecta como root a uma VM chamada guest-name, localizada no sistema remoto 10.0.0.1. A conexão também requer autenticação como root para o 10.0.0.1.# virt-viewer --direct --connect qemu+ssh://root@10.0.0.1/system guest-name root@10.0.0.1's password:
Se a conexão funcionar corretamente, a tela da VM é mostrada na janela Virt Viewer
.

Você pode interagir com o console VM usando o mouse e o teclado da mesma forma que interage com uma máquina real. A exibição no console da VM reflete as atividades que estão sendo realizadas na VM.
Recursos adicionais
-
Para mais informações sobre o uso do Virt Viewer, consulte a página de manual
virt-viewer
. - A conexão com VMs em um host remoto pode ser simplificada pela modificação de sua libvirt e configuração SSH.
- Para gerenciamento de VMs em uma GUI interativa no RHEL 8, você pode usar a interface do console web. Para mais informações, veja Seção 2.4.1, “Interagindo com máquinas virtuais usando o console web”.
2.4.3. Conexão a uma máquina virtual usando SSH
Para interagir com o terminal de uma máquina virtual (VM) usando o protocolo de conexão SSH, siga o procedimento abaixo:
Pré-requisitos
- Você tem privilégios de conexão de rede e acesso root ao VM alvo.
- Se o VM alvo estiver localizado em um host remoto, você também tem privilégios de conexão e acesso root a esse host.
O componente
libvirt-nss
está instalado e habilitado no host da VM. Se não estiver, faça o seguinte:Instale o pacote
libvirt-nss
:# yum install libvirt-nss
Edite o arquivo
/etc/nsswitch.conf
e adicionelibvirt_guest
à linhahosts
:[...] passwd: compat shadow: compat group: compat hosts: files libvirt_guest dns [...]
Procedimento
Optional: Ao conectar-se a uma VM remota, SSH em seu host físico primeiro. O exemplo a seguir demonstra a conexão a uma máquina host 10.0.0.1 usando suas credenciais de raiz:
# ssh root@10.0.0.1 root@10.0.0.1's password: Last login: Mon Sep 24 12:05:36 2018 root~#
Use o nome da VM e as credenciais de acesso do usuário para se conectar a ela. Por exemplo, o seguinte se conecta com o "testguest1 VM usando suas credenciais de raiz:
# ssh root@testguest1 root@testguest1's password: Last login: Wed Sep 12 12:05:36 2018 root~]#
Solução de problemas
Se você não souber o nome da VM, você pode listar todas as VMs disponíveis no host usando o comando
virsh list --all
:# virsh list --all Id Name State ---------------------------------------------------- 2 testguest1 running - testguest2 shut off
2.4.4. Abertura de um console serial de máquina virtual
Usando o comando virsh console
, é possível conectar-se ao console serial de uma máquina virtual (VM).
Isto é útil quando o VM:
- Não fornece protocolos VNC ou SPICE, e portanto não oferece exibição de vídeo para ferramentas GUI.
- Não possui uma conexão de rede e, portanto, não pode ser interagido com o uso do SSH.
Pré-requisitos
A VM deve ter o console serial configurado em sua linha de comando do kernel. Para verificar isto, a saída do comando
cat /proc/cmdline
na VM deve incluir console=ttyS0. Por exemplo:# cat /proc/cmdline BOOT_IMAGE=/vmlinuz-3.10.0-948.el7.x86_64 root=/dev/mapper/rhel-root ro console=tty0 console=ttyS0,9600n8 rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb
Se o console serial não for configurado corretamente em uma VM, usando virsh console para se conectar à VM o conectará a um console de convidado não responsivo. Entretanto, você ainda pode sair do console não-responsivo usando o atalho Ctrl ].
Para configurar o console serial na VM, faça o seguinte:
-
No VM, edite o arquivo
/etc/default/grub
e adicione console=ttyS0 à linha que começa com GRUB_CMDLINE_LINUX. Limpe as opções do núcleo que podem impedir que suas mudanças tenham efeito.
# grub2-editenv - unset kernelopts
Recarregar a configuração do Grub:
# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-948.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-948.el7.x86_64.img [...] done
- Reinicie o VM.
-
No VM, edite o arquivo
Procedimento
Em seu sistema hospedeiro, use o comando
virsh console
. O exemplo a seguir se conecta com o VM guest1, se o driver libvirt suportar o manuseio seguro do console:# virsh console guest1 --safe Connected to domain guest1 Escape character is ^] Subscription-name Kernel 3.10.0-948.el7.x86_64 on an x86_64 localhost login:
- Você pode interagir com o console virsh da mesma forma que com uma interface padrão de linha de comando.
Recursos adicionais
- Para mais informações sobre o console serial da VM, consulte a página de homem virsh.
2.4.5. Configuração de fácil acesso a hosts de virtualização remota
Ao gerenciar VMs em um sistema host remoto usando utilitários libvirt, é recomendável usar a sintaxe -c qemu ssh://root@hostname/system
. Por exemplo, usar o comando virsh list
como root no host 10.0.0.1:
# virsh -c qemu+ssh://root@10.0.0.1/system list
root@10.0.0.1's password:
Last login: Mon Feb 18 07:28:55 2019
Id Name State
---------------------------------
1 remote-guest running
Entretanto, por conveniência, você pode remover a necessidade de especificar os detalhes da conexão por completo modificando sua configuração SSH e libvirt. Por exemplo, você será capaz de fazer:
# virsh -c remote-host list
root@10.0.0.1's password:
Last login: Mon Feb 18 07:28:55 2019
Id Name State
---------------------------------
1 remote-guest running
Para permitir esta melhoria, siga as instruções abaixo.
Procedimento
Editar ou criar o arquivo
~/.ssh/config
e adicionar o seguinte a ele, onde host-alias é um nome abreviado associado a um host remoto específico, e hosturl é o endereço URL do host.Host host-alias User root Hostname hosturl
Por exemplo, o seguinte estabelece o nome alternativo tyrannosaurus para root@10.0.0.1:
Host tyrannosaurus User root Hostname 10.0.0.1
Edite ou crie o arquivo
/etc/libvirt/libvirt.conf
e adicione o seguinte, onde qemu-host-alias é um apelido de host alias que QEMU e libvirt utilities associarão com o host pretendido:uri_aliases = [ "qemu-host-alias=qemu+ssh://host-alias/system", ]
Por exemplo, o seguinte utiliza o alias tyrannosaurus configurado na etapa anterior para configurar o alias t-rex, que significa
qemu ssh://10.0.0.1/system
:uri_aliases = [ "t-rex=qemu+ssh://tyrannosaurus/system", ]
Como resultado, você pode gerenciar VMs remotas usando utilitários baseados em libvírus no sistema local com um
-c qemu-host-alias
parâmetro. Isto executa automaticamente os comandos sobre o SSH no host remoto.Por exemplo, as seguintes listas de VMs no host remoto 10.0.0.1, cuja conexão foi configurada como t-rex nas etapas anteriores:
$ virsh -c t-rex list root@10.0.0.1's password: Last login: Mon Feb 18 07:28:55 2019 Id Name State --------------------------------- 1 velociraptor running
Optional: Se você quiser usar utilitários de libvirt exclusivamente em um único host remoto, você também pode definir uma conexão específica como alvo padrão para utilitários baseados em libvirt. Para fazer isso, edite o arquivo
/etc/libvirt/libvirt.conf
e defina o valor do parâmetrouri_default
para qemu-host-alias. Por exemplo, o seguinte usa o apelido de host t-rex configurado nas etapas anteriores como alvo padrão da libvirt.# These can be used in cases when no URI is supplied by the application # (@uri_default also prevents probing of the hypervisor driver). # uri_default = "t-rex"
Como resultado, todos os comandos baseados em libvírus serão executados automaticamente no host remoto especificado.
$ virsh list root@10.0.0.1's password: Last login: Mon Feb 18 07:28:55 2019 Id Name State --------------------------------- 1 velociraptor running
No entanto, isto não é recomendado se você também quiser gerenciar VMs em seu host local ou em hosts remotos diferentes.
Recursos adicionais
Ao conectar-se a um host remoto, você pode evitar ter que fornecer a senha raiz para o sistema remoto. Para fazer isso, use um ou mais dos seguintes métodos:
- Configurar o acesso SSH baseado em chaves para o host remoto.
- Use a multiplexação da conexão SSH para se conectar ao sistema remoto.
- Configurar um ticket de autenticação kerberos no sistema remoto. Para instruções, ver autenticação Kerberos em Gerenciamento de Identidade.
As utilidades que podem usar a opção
-c
(ou--connect
) e a configuração de acesso remoto ao host descrita acima incluem:- virt-install
- virt-viewer
- virsh
- virt-manager
2.5. Desligamento de máquinas virtuais
Para desligar uma máquina virtual em execução no Red Hat Enterprise Linux 8, use a interface de linha de comando ou o GUI do console web.
2.5.1. Desligamento de uma máquina virtual utilizando a interface de linha de comando
Para desativar uma máquina virtual (VM) responsiva, faça uma das seguintes ações:
- Use um comando de desligamento apropriado para o sistema operacional convidado enquanto estiver conectado ao convidado.
Use o comando
virsh shutdown
no host:Se o VM estiver em um host local:
# virsh shutdown demo-guest1 Domain demo-guest1 is being shutdown
Se o VM estiver em um host remoto, neste exemplo 10.0.0.1:
# virsh -c qemu+ssh://root@10.0.0.1/system shutdown demo-guest1 root@10.0.0.1's password: Last login: Mon Feb 18 07:28:55 2019 Domain demo-guest1 is being shutdown
Para forçar um convidado a desligar, por exemplo, se ele não responder, use o comando virsh destroy
no host:
# virsh destroy demo-guest1
Domain demo-guest1 destroyed
O comando virsh destroy
não apaga ou remove a configuração da VM ou imagens de disco. Ele apenas destrói a instância da VM em execução. Entretanto, em casos raros, este comando pode causar corrupção do sistema de arquivos da VM, portanto, o uso do virsh destroy só é recomendado se todos os outros métodos de desligamento falharam.
2.5.2. Desligamento e reinício de máquinas virtuais usando o console web
Usando o console web RHEL 8, você pode desligar ou reiniciar máquinas virtuais em funcionamento. Você também pode enviar uma interrupção não-máscara para uma máquina virtual não-responsável.
2.5.2.1. Desligamento de máquinas virtuais no console web
Se uma máquina virtual (VM) estiver no estado running, você pode desligá-la usando o console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM que você deseja desligar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Shut Down.
A VM se desliga.
Solução de problemas
- Se a VM não desligar, clique no botão Menu ⋮ ao lado do botão Shut Down e selecione Force Shut Down.
- Para desligar um VM não responsivo, você também pode enviar uma interrupção não-máscara. Para mais informações, veja Seção 2.5.2.3, “Envio de interrupções não-máscaras para VMs usando o console web”.
Recursos adicionais
- Para informações sobre como iniciar uma VM, veja Seção 2.3.2, “Inicialização de máquinas virtuais usando o console web”.
- Para informações sobre como reiniciar um VM, veja Seção 2.5.2.2, “Reinicialização de máquinas virtuais usando o console web”.
2.5.2.2. Reinicialização de máquinas virtuais usando o console web
Se uma máquina virtual (VM) estiver no estado running, você pode reiniciá-la usando o console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM que você deseja reiniciar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Reiniciar.
A VM se desliga e reinicia.
Solução de problemas
- Se a VM não reiniciar, clique no botão Menu ⋮ ao lado do botão Reiniciar e selecione Reiniciar Força.
- Para reiniciar um VM não responsivo, você também pode enviar uma interrupção não-máscara. Para mais informações, consulte Seção 2.5.2.3, “Envio de interrupções não-máscaras para VMs usando o console web”.
Recursos adicionais
- Para informações sobre como iniciar uma VM, veja Seção 2.3.2, “Inicialização de máquinas virtuais usando o console web”.
- Para obter informações sobre como desligar um VM, consulte Seção 2.5.2.1, “Desligamento de máquinas virtuais no console web”.
2.5.2.3. Envio de interrupções não-máscaras para VMs usando o console web
O envio de uma interrupção não-máscara (NMI) pode fazer com que uma máquina virtual em funcionamento (VM) não responda ou se desligue. Por exemplo, você pode enviar a Ctrl+Alt+Del NMI para uma VM que não está respondendo à entrada padrão.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM para a qual você deseja enviar uma MNI.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique no botão Menu ⋮ ao lado do botão Shut Down e selecione Send Non-Maskable Interrupt (Enviar Interrupção Não-Máscara).
Um MNI é enviado para o VM.
Recursos adicionais
- Para informações sobre como iniciar uma VM, veja Seção 2.3.2, “Inicialização de máquinas virtuais usando o console web”.
- Para informações sobre como reiniciar um VM, veja Seção 2.5.2.2, “Reinicialização de máquinas virtuais usando o console web”.
- Para obter informações sobre como desligar um VM, consulte Seção 2.5.2.1, “Desligamento de máquinas virtuais no console web”.
2.6. Eliminação de máquinas virtuais
Para apagar máquinas virtuais no Red Hat Enterprise Linux 8, use a interface de linha de comando ou o GUI do console web.
2.6.1. Eliminação de máquinas virtuais usando a interface de linha de comando
Para excluir uma máquina virtual (VM), você pode remover sua configuração XML e arquivos de armazenamento associados do host usando a linha de comando. Siga o procedimento abaixo:
Pré-requisitos
- Faça o backup de dados importantes do VM.
- Desligue o VM.
- Certifique-se de que nenhuma outra VM utilize o mesmo armazenamento associado.
Procedimento
Use o utilitário
virsh undefine
.Por exemplo, o seguinte comando remove a VM guest1, seus volumes de armazenamento associados e a RAM não volátil, se houver.
# virsh undefine guest1 --remove-all-storage --nvram Domain guest1 has been undefined Volume 'vda'(/home/images/guest1.qcow2) removed.
Recursos adicionais
-
Para outros argumentos
virsh undefine
, usevirsh undefine --help
ou consulte a página de manualvirsh
.
2.6.2. Eliminação de máquinas virtuais usando o console web
Para excluir uma máquina virtual (VM) e seus arquivos de armazenamento associados do host ao qual o console web RHEL 8 está conectado, siga o procedimento abaixo:
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Faça o backup de dados importantes do VM.
- Desligue o VM.
- Certifique-se de que nenhuma outra VM utilize o mesmo armazenamento associado.
Procedimento
Na interface das Máquinas Virtuais, clique no botão Menu ⋮ da VM que você deseja excluir.
Um menu suspenso aparece com controles para várias operações de VM.
Clique em Excluir.
Aparece um diálogo de confirmação.
- Optional: Para excluir todos ou alguns dos arquivos de armazenamento associados à VM, selecione as caixas de seleção ao lado dos arquivos de armazenamento que você deseja excluir.
Clique em Excluir.
O VM e quaisquer arquivos de armazenamento selecionados são excluídos.
2.7. Informações relacionadas
As informações acima se aplicam às arquiteturas AMD64 e Intel 64. Se você quiser usar a virtualização RHEL8 em outras arquiteturas suportadas, são necessários diferentes procedimentos de configuração e certas características podem ser restritas ou funcionar de forma diferente. Para obter detalhes, consulte a seção apropriada abaixo:
Capítulo 3. Começando com a virtualização no IBM POWER
Você pode usar a virtualização KVM ao usar o RHEL 8 em hardware IBM POWER8 ou POWER9. Entretanto, habilitar o KVM hypervisor em seu sistema requer passos extras em comparação à virtualização nas arquiteturas AMD64 e Intel64. Alguns recursos de virtualização RHEL 8 também possuem funcionalidades diferentes ou restritas no IBM POWER.
Além das informações nas seções seguintes, o uso da virtualização no IBM POWER funciona da mesma forma que no AMD64 e Intel 64. Portanto, você pode ver outra documentação de virtualização RHEL 8 para mais informações ao usar a virtualização no IBM POWER.
3.1. Possibilitando a virtualização no IBM POWER
Para configurar um KVM hypervisor e criar máquinas virtuais (VMs) em um sistema IBM POWER8 ou IBM POWER9 rodando o RHEL 8, siga as instruções abaixo.
Pré-requisitos
- O RHEL 8 é instalado e registrado em sua máquina host.
Os seguintes recursos mínimos do sistema estão disponíveis:
- 6 GB de espaço livre em disco para o host, mais outros 6 GB para cada VM pretendido.
- 2 GB de RAM para o host, mais outros 2 GB para cada VM pretendido.
Seu tipo de máquina CPU deve suportar a virtualização do IBM POWER.
Para verificar isso, consulte as informações da plataforma em seu arquivo
/proc/cpuinfo
.# grep ^platform /proc/cpuinfo/ platform : PowerNV
Se a saída deste comando inclui a entrada
PowerNV
, você está executando um tipo de máquina PowerNV e pode usar a virtualização no IBM POWER.
Procedimento
Carregar o módulo de kernel KVM-HV
# modprobe kvm_hv
Verificar se o módulo KVM kernel está carregado
# lsmod | grep kvm
Se o KVM for carregado com sucesso, a saída deste comando inclui
kvm_hv
.Instalar os pacotes no módulo de virtualização:
# yum module install virt
Instale o pacote
virt-install
:# yum install virt-install
Iniciar o serviço
libvirtd
.# systemctl start libvirtd
Verifique se seu sistema está preparado para ser um host de virtualização:
# virt-host-validate [...] QEMU: Checking if device /dev/vhost-net exists : PASS QEMU: Checking if device /dev/net/tun exists : PASS QEMU: Checking for cgroup 'memory' controller support : PASS QEMU: Checking for cgroup 'memory' controller mount-point : PASS [...] QEMU: Checking for cgroup 'blkio' controller support : PASS QEMU: Checking for cgroup 'blkio' controller mount-point : PASS QEMU: Checking if IOMMU is enabled by kernel : PASS
Se todos os cheques virt-host-validate retornarem um valor
PASS
, seu sistema está preparado para a criação de VMs.Se algum dos cheques devolver um valor
FAIL
, siga as instruções exibidas para corrigir o problema.Se algum dos cheques retornar um valor
WARN
, considere seguir as instruções exibidas para melhorar as capacidades de virtualização.
Informações adicionais
Note que se a virtualização não for suportada por sua CPU hospedeira, virt-host-validate gera a seguinte saída:
QEMU: Verificação da virtualização do hardware: FAIL (Somente CPUs emuladas estão disponíveis, o desempenho será significativamente limitado)
Entretanto, a tentativa de criar VMs em um sistema hospedeiro desse tipo falhará, ao invés de ter problemas de desempenho.
3.2. Como a virtualização no IBM POWER difere da AMD64 e Intel 64
A virtualização da KVM na RHEL 8 em sistemas IBM POWER é diferente da KVM em sistemas AMD64 e Intel 64 em uma série de aspectos, notadamente:
- Requisitos de memória
- As VMs na IBM POWER consomem mais memória. Portanto, a alocação mínima recomendada de memória para uma máquina virtual (VM) em um host IBM POWER é de 2GB de RAM.
- Protocolos de exibição
O protocolo SPICE não é suportado nos sistemas IBM POWER. Para exibir a saída gráfica de uma VM, use o protocolo
VNC
. Além disso, somente os seguintes dispositivos de placas gráficas virtuais são suportados:-
vga
- suportado apenas no modo-vga std
e não no modo-vga cirrus
. -
virtio-vga
-
virtio-gpu
-
- SMBIOS
- A configuração do SMBIOS não está disponível.
- Erros de alocação de memória
POWER8 VMs, incluindo VMs em modo de compatibilidade, podem falhar com um erro semelhante a:
qemu-kvm: Falha na alocação do KVM HPT da ordem 33 (tente um maxmem? menor): Não é possível alocar memória
Isto é significativamente mais provável que ocorra em VMs que usam RHEL 7.3 e anteriores como sistema operacional convidado.
Para solucionar o problema, aumente o pool de memória CMA disponível para a tabela de páginas de hashed do convidado (HPT), acrescentando
kvm_cma_resv_ratio=memory
para a linha de comando do kernel do host, onde memory é a porcentagem da memória do host que deve ser reservada para o pool CMA (padrão a 5).- Grandes páginas
Páginas enormes transparentes (THPs) não oferecem nenhum benefício notável de desempenho em VMs IBM POWER8. Entretanto, as VMs IBM POWER9 podem se beneficiar dos THPs, como esperado.
Além disso, o tamanho das páginas enormes estáticas nos sistemas IBM POWER8 são 16 MiB e 16 GiB, em oposição a 2 MiB e 1 GiB no AMD64, Intel 64, e IBM POWER9. Como conseqüência, para migrar uma VM configurada com páginas enormes estáticas de um host IBM POWER8 para um host IBM POWER9, você deve primeiro configurar 1GiB de páginas enormes na VM.
- kvm-clock
-
O serviço
kvm-clock
não tem que ser configurado para gerenciamento de tempo em VMs no IBM POWER9. - pvpanic
Os sistemas IBM POWER9 não suportam o dispositivo
pvpanic
. Entretanto, uma funcionalidade equivalente está disponível e ativada por padrão nesta arquitetura. Para ativá-la em uma VM, use o elemento de configuração<on_crash>
XML com o valorpreserve
.Além disso, certifique-se de remover o elemento
<panic>
da seção<devices>
, pois sua presença pode levar a VM a falhar no boot em sistemas IBM POWER.- Hospedeiro com uma única rosca
- Nos sistemas IBM POWER8, a máquina host deve rodar em single-threaded mode para suportar as VMs. Isto é configurado automaticamente se os pacotes qemu-kvm forem instalados. Entretanto, as VMs rodando em hosts com rosca única ainda podem usar várias roscas.
- Dispositivos periféricos
Vários dispositivos periféricos suportados em sistemas AMD64 e Intel 64 não são suportados em sistemas IBM POWER, ou um dispositivo diferente é suportado como um substituto.
-
Os dispositivos utilizados na hierarquia PCI-E, incluindo
ioh3420
exio3130-downstream
, não são suportados. Esta funcionalidade é substituída por múltiplas pontes de raiz independentes da PCI fornecidas pelo dispositivospapr-pci-host-bridge
. - Os controladores UHCI e EHCI PCI não são suportados. Use controladores OHCI e XHCI em seu lugar.
-
Os dispositivos IDE, incluindo o CD-ROM IDE virtual (
ide-cd
) e o disco IDE virtual (ide-hd
), não são suportados. Utilize os dispositivosvirtio-scsi
evirtio-blk
em seu lugar. -
Os PCIs emulados (
rtl8139
) não são suportados. Use o dispositivovirtio-net
em seu lugar. -
Os dispositivos de som, incluindo
intel-hda
,hda-output
, eAC97
, não são suportados. -
Os dispositivos de redirecionamento USB, incluindo
usb-redir
eusb-tablet
, não são suportados.
-
Os dispositivos utilizados na hierarquia PCI-E, incluindo
- v2v e p2v
-
Os utilitários
virt-v2v
evirt-p2v
são suportados somente na arquitetura AMD64 e Intel 64, e não são fornecidos no IBM POWER.
Fontes adicionais
- Para uma comparação de recursos selecionados de virtualização suportados e não suportados em arquiteturas de sistema suportadas pela Red Hat, veja Seção 20.5, “Uma visão geral dos recursos de apoio à virtualização”.
Capítulo 4. Começando com a virtualização no IBM Z
Você pode usar a virtualização KVM ao usar o RHEL 8 no hardware IBM Z. Entretanto, habilitar o KVM hypervisor em seu sistema requer passos extras em comparação à virtualização nas arquiteturas AMD64 e Intel 64. Certos recursos de virtualização RHEL 8 também têm funcionalidades diferentes ou restritas no IBM Z.
Além das informações nas seções seguintes, o uso da virtualização no IBM Z funciona da mesma forma que no AMD64 e Intel 64. Portanto, você pode ver outra documentação de virtualização RHEL 8 para mais informações ao usar a virtualização no IBM Z.
4.1. Possibilitando a virtualização na IBM Z
Para configurar um hipervisor KVM e criar máquinas virtuais (VMs) em um sistema IBM Z rodando RHEL 8, siga as instruções abaixo.
Pré-requisitos
- O RHEL 8 é instalado e registrado em sua máquina host.
Os seguintes recursos mínimos do sistema estão disponíveis:
- 6 GB de espaço livre em disco para o host, mais outros 6 GB para cada VM pretendido.
- 2 GB de RAM para o host, mais outros 2 GB para cada VM pretendido.
- Seu sistema host IBM Z está usando uma CPU z13 ou posterior.
O RHEL 8 é instalado em uma divisória lógica (LPAR). Além disso, a LPAR suporta as funções de virtualização do start-interpretive execution (SIE).
Para verificar isso, procure
sie
em seu arquivo/proc/cpuinfo
.# grep sie /proc/cpuinfo/ features : esan3 zarch stfle msa ldisp eimm dfp edat etf3eh highgprs te sie
Procedimento
Carregar o módulo KVM kernel:
# modprobe kvm
Verificar se o módulo KVM do kernel está carregado:
# lsmod | grep kvm
Se o KVM for carregado com sucesso, a saída deste comando inclui
kvm
:Instalar os pacotes no módulo de virtualização:
# yum module install virt
Instale o pacote
virt-install
:# yum install virt-install
Iniciar o serviço
libvirtd
.# systemctl start libvirtd
Verifique se seu sistema está preparado para ser um host de virtualização:
# virt-host-validate [...] QEMU: Checking if device /dev/kvm is accessible : PASS QEMU: Checking if device /dev/vhost-net exists : PASS QEMU: Checking if device /dev/net/tun exists : PASS QEMU: Checking for cgroup 'memory' controller support : PASS QEMU: Checking for cgroup 'memory' controller mount-point : PASS [...]
Se todos os cheques virt-host-validate retornarem um valor
PASS
, seu sistema está preparado para a criação de VMs.Se algum dos cheques devolver um valor
FAIL
, siga as instruções exibidas para corrigir o problema.Se algum dos cheques retornar um valor
WARN
, considere seguir as instruções exibidas para melhorar as capacidades de virtualização.
Informações adicionais
Note que se a virtualização não for suportada por sua CPU hospedeira, virt-host-validate gera a seguinte saída:
QEMU: Verificação da virtualização do hardware: FAIL (Somente CPUs emuladas estão disponíveis, o desempenho será significativamente limitado)
Entretanto, a tentativa de criar VMs em um sistema hospedeiro desse tipo falhará, ao invés de ter problemas de desempenho.
4.2. Como a virtualização na IBM Z difere da AMD64 e Intel 64
A virtualização da KVM na RHEL 8 em sistemas IBM Z difere da KVM em sistemas AMD64 e Intel 64 nos seguintes:
- Sem saída gráfica
-
A exibição da saída gráfica da VM não é possível quando se conecta à VM usando o protocolo VNC. Isto ocorre porque o utilitário
gnome-desktop
não é suportado no IBM Z. Além disso, o protocolo de exibição SPICE não funciona no IBM Z. - Dispositivos PCI e USB
Os dispositivos PCI e USB virtuais não são suportados no IBM Z. Isso também significa que
virtio-*-pci
dispositivos não têm suporte, evirtio-*-ccw
devem ser usados dispositivos em seu lugar. Por exemplo, usevirtio-net-ccw
ao invés devirtio-net-pci
.Note que a fixação direta de dispositivos PCI, também conhecida como PCI passthrough, é suportada.
- SO convidado suportado
- A Red Hat só suporta VMs hospedadas no IBM Z se eles usarem RHEL 7 ou RHEL 8 como sistema operacional convidado.
- Pedido de inicialização do dispositivo
IBM Z não suporta o
<boot dev='device'>
Elemento de configuração XML. Para definir a ordem de inicialização do dispositivo, use o elemento de configuração<boot order='number'>
elemento na seção<devices>
do XML. Por exemplo, o elemento XML:<disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/path/to/qcow2'/> <target dev='vda' bus='virtio'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/> <boot order='2'> </disk>
NotaUsando
<boot order='number'>
para gerenciamento de pedidos de inicialização também é preferível nos hosts AMD64 e Intel 64.- Plug quente de memória
- Adicionar memória a uma VM em execução não é possível na IBM Z. Note que remover memória de uma VM em execução (memory hot unplug) também não é possível na IBM Z, assim como na AMD64 e Intel 64.
- Topologia NUMA
-
A topologia de acesso de memória não uniforme (NUMA) para CPUs não é suportada por
libvirt
no IBM Z. Portanto, o ajuste do desempenho de vCPU usando NUMA não é possível nesses sistemas. - vfio-ap
- As VMs em um host IBM Z podem usar a passagem do dispositivo criptográfico vfio-ap, que não é suportada em nenhuma outra arquitetura.
- SMBIOS
- A configuração do SMBIOS não está disponível no IBM Z.
- Dispositivos de vigilância
Se utilizar dispositivos de vigilância em seu VM em um host IBM Z, utilize o modelo
diag288
. Por exemplo, o modelo :<devices> <watchdog model='diag288' action='poweroff'/> </devices>
- kvm-clock
-
O serviço
kvm-clock
é específico para sistemas AMD64 e Intel 64, e não precisa ser configurado para gerenciamento de tempo de VM no IBM Z. - v2v e p2v
-
Os utilitários
virt-v2v
evirt-p2v
são suportados somente na arquitetura AMD64 e Intel 64, e não são fornecidos na IBM Z. - Virtualização aninhada
- A criação de VMs aninhadas requer configurações diferentes no IBM Z do que no AMD64 e Intel 64. Para detalhes, veja Capítulo 18, Criando máquinas virtuais aninhadas.
Fontes adicionais
- Para uma comparação de recursos selecionados de virtualização suportados e não suportados em arquiteturas de sistema suportadas pela Red Hat, veja Seção 20.5, “Uma visão geral dos recursos de apoio à virtualização”.
4.3. Informações relacionadas
Ao configurar uma VM em um sistema IBM Z, é recomendado proteger o sistema operacional convidado contra a vulnerabilidade "Spectre". Para fazer isso, use o comando
virsh edit
para modificar a configuração XML da VM e configurar sua CPU de uma das seguintes maneiras:Use o modelo de CPU hospedeiro, por exemplo, como a seguir:
<cpu mode='host-model' check='partial'> <model fallback='allow'/> </cpu>
Isto torna os recursos
ppa15
ebpb
disponíveis para o hóspede se o anfitrião os apoiar.Se estiver usando um modelo de host específico, adicione os recursos
ppa15
epbp
. O exemplo a seguir utiliza o modelo de CPU zEC12:<cpu mode='custom' match='exact' check='partial'> <model fallback='allow'>zEC12</model> <feature policy='force' name='ppa15'/> <feature policy='force' name='bpb'/> </cpu>
Observe que ao usar o recurso
ppa15
com os modelos de CPUz114
ez196
em uma máquina host que usa uma CPU z12, você também precisa usar o mais recente nível de microcódigo (pacote 95 ou posterior).
- Note que rodar o KVM no sistema operacional z/VM não é suportado.
- Para informações sobre como anexar dispositivos DASD a VMs em hosts IBM Z, veja Seção 10.9, “Fixação de dispositivos DASD em máquinas virtuais no IBM Z”.
- Para instruções sobre o uso da criptografia de hardware IBM Z em VMs, veja Seção 15.7, “Anexar coprocessadores criptográficos a máquinas virtuais no IBM Z”.
- Para instruções sobre como configurar o IBM Z Secure Execution para suas VMs, veja Seção 15.6, “Configurando o IBM Secure Execution no IBM Z”.
- Para informações sobre como configurar a virtualização aninhada em hosts IBM Z, veja Seção 18.3, “Criando uma máquina virtual aninhada no IBM Z”.
Capítulo 5. Gerenciamento de máquinas virtuais no console web
Gerencie suas máquinas virtuais em um console web RHEL 8 e aprenda sobre as capacidades de gerenciamento de virtualização.
Para gerenciar máquinas virtuais em uma interface gráfica em um host RHEL 8, você pode usar o painel Virtual Machines
no console web RHEL 8.

5.1. Visão geral do gerenciamento de máquinas virtuais usando o console web
O console web RHEL 8 é uma interface baseada na web para a administração do sistema. Como uma de suas características, o console web fornece uma visão gráfica das máquinas virtuais (VMs) no sistema host, e torna possível criar, acessar e configurar estas VMs.
Note que para usar o console web para gerenciar suas VMs no RHEL 8, você deve primeiro instalar um plug-in de console web para virtualização.
Próximos passos
- Para instruções sobre como habilitar o gerenciamento de VMs em seu console web, consulte Configurando o console web para gerenciar máquinas virtuais.
- Para uma lista abrangente de ações de gerenciamento de VM que o console web oferece, consulte Recursos de gerenciamento de máquinas virtuais disponíveis no console web.
- Para uma lista de recursos que atualmente não estão disponíveis no console web, mas que podem ser usados no aplicativo virt-manager, veja Diferenças entre os recursos de virtualização no Virtual Machine Manager e no console web
5.2. Configuração do console web para gerenciar máquinas virtuais
Antes de utilizar o console web RHEL 8 para gerenciar máquinas virtuais (VMs), você deve instalar o plug-in da máquina virtual do console web no host.
Pré-requisitos
Certifique-se de que o console web esteja instalado e habilitado em sua máquina.
# systemctl status cockpit.socket cockpit.socket - Cockpit Web Service Socket Loaded: loaded (/usr/lib/systemd/system/cockpit.socket [...]
Se este comando retornar
Unit cockpit.socket could not be found
, siga o documento Instalando o console web para habilitar o console web.
Procedimento
Instale o plug-in
cockpit-machines
.# yum install cockpit-machines
Verificação
Se a instalação for bem sucedida, as Máquinas Virtuais aparecem no menu lateral do console web.
Recursos adicionais
- Para instruções sobre como se conectar ao console web, bem como outras informações sobre como usar o console web, consulte o Managing systems using the RHEL 8 web console documento.
5.3. Recursos de gerenciamento de máquinas virtuais disponíveis no console web
Usando o console web RHEL 8, você pode realizar as seguintes ações para gerenciar as máquinas virtuais (VMs) em seu sistema.
Tabela 5.1. Tarefas de gerenciamento de VM que podem ser realizadas no console web RHEL 8
5.4. Diferenças entre os recursos de virtualização no Virtual Machine Manager e no console web
O aplicativo Virtual Machine Manager (virt-manager) é suportado no RHEL 8, mas foi depreciado. O console web tem a intenção de se tornar seu substituto em um lançamento principal subseqüente. É, portanto, recomendado que você se familiarize com o console web para gerenciar a virtualização em uma GUI.
Entretanto, no RHEL 8, algumas tarefas de gerenciamento de VMs só podem ser realizadas em virt-manager ou na linha de comando. A tabela a seguir destaca as características que estão disponíveis em virt-manager mas não disponíveis no console web RHEL 8.0.
Se uma característica estiver disponível em uma versão menor posterior do RHEL 8, a versão mínima do RHEL 8 aparece na coluna Support in web console introduced.
Tabela 5.2. Tarefas de gerenciamento de VM que não podem ser realizadas utilizando o console web no RHEL 8.0
Tarefa | Introdução do suporte em console web | Método alternativo usando CLI |
---|---|---|
Configurando uma máquina virtual para começar quando as botas do host | RHEL 8.1 |
|
Suspender uma máquina virtual | RHEL 8.1 |
|
Retomar uma máquina virtual suspensa | RHEL 8.1 |
|
Criação de pools de armazenamento de diretório do sistema de arquivos | RHEL 8.1 |
|
Criação de pools de armazenamento NFS | RHEL 8.1 |
|
Criação de pools de armazenamento de dispositivos físicos em disco | RHEL 8.1 |
|
Criação de grupos de armazenamento de volume LVM | RHEL 8.1 |
|
Criação de pools de armazenamento baseados em divisórias | CURRENTLY UNAVAILABLE |
|
Criação de pools de armazenamento baseados em GlusterFS | CURRENTLY UNAVAILABLE |
|
Criação de pools de armazenamento baseados em vHBA com dispositivos SCSI | CURRENTLY UNAVAILABLE |
|
Criação de pools de armazenamento Multipath-based | CURRENTLY UNAVAILABLE |
|
Criação de pools de armazenagem com base em RBD | CURRENTLY UNAVAILABLE |
|
Criação de um novo volume de armazenamento | RHEL 8.1 |
|
Adicionando uma nova rede virtual | RHEL 8.1 |
|
Eliminação de uma rede virtual | RHEL 8.1 |
|
Criando uma ponte da interface de uma máquina host para uma máquina virtual | CURRENTLY UNAVAILABLE |
|
Criando um instantâneo | CURRENTLY UNAVAILABLE |
|
Revertendo para um instantâneo | CURRENTLY UNAVAILABLE |
|
Eliminação de um instantâneo | CURRENTLY UNAVAILABLE |
|
Clonagem de uma máquina virtual | CURRENTLY UNAVAILABLE |
|
Migração de uma máquina virtual para outra máquina host | CURRENTLY UNAVAILABLE |
|
Recursos adicionais
- Para obter informações sobre o Gerente de Máquina Virtual, consulte a documentação RHEL 7.
Capítulo 6. Visualização de informações sobre máquinas virtuais
Quando você precisa ajustar ou solucionar qualquer aspecto de sua implantação de virtualização no RHEL 8, o primeiro passo a ser dado normalmente é visualizar informações sobre o estado atual e a configuração de suas máquinas virtuais. Para fazer isso, você pode usar a interface de linha de comando ou o console web. Você também pode visualizar as informações na configuração XML da VM.
6.1. Visualização de informações de máquinas virtuais usando a interface de linha de comando
Para obter informações sobre máquinas virtuais (VMs) em seu host e suas configurações, use um ou mais dos seguintes comandos.
Procedimento
Para obter uma lista de VMs em seu host:
# virsh list --all Id Name State ---------------------------------- 1 testguest1 running - testguest2 shut off - testguest3 shut off - testguest4 shut off
Para obter informações básicas sobre um VM específico:
# virsh dominfo testguest1 Id: 1 Name: testguest1 UUID: a973666f-2f6e-415a-8949-75a7a98569e1 OS Type: hvm State: running CPU(s): 2 CPU time: 188.3s Max memory: 4194304 KiB Used memory: 4194304 KiB Persistent: yes Autostart: disable Managed save: no Security model: selinux Security DOI: 0 Security label: system_u:system_r:svirt_t:s0:c486,c538 (enforcing)
Para obter a configuração XML completa de uma VM específica:
# virsh dumpxml testguest2 <domain type='kvm' id='1'> <name>testguest2</name> <uuid>a973434f-2f6e-4ěša-8949-76a7a98569e1</uuid> <metadata> [...]
Para informações sobre os discos de uma VM e outros dispositivos de bloco:
# virsh domblklist testguest3 Target Source --------------------------------------------------------------- vda /var/lib/libvirt/images/testguest3.qcow2 sda - sdb /home/username/Downloads/virt-p2v-1.36.10-1.el7.iso
Para instruções sobre como gerenciar o armazenamento de uma VM, veja Capítulo 11, Gerenciamento de armazenamento para máquinas virtuais.
Para obter informações sobre os sistemas de arquivos de uma VM e seus pontos de montagem:
# virsh domfsinfo testguest3 Mountpoint Name Type Target ------------------------------------ / dm-0 xfs /boot vda1 xfs
Para obter mais detalhes sobre as vCPUs de uma VM específica:
# virsh vcpuinfo testguest4 VCPU: 0 CPU: 3 State: running CPU time: 103.1s CPU Affinity: yyyy VCPU: 1 CPU: 0 State: running CPU time: 88.6s CPU Affinity: yyyy
Para configurar e otimizar as vCPUs em sua VM, veja Seção 16.5, “Otimizando o desempenho da CPU da máquina virtual”.
Para listar todas as interfaces de rede virtual em seu host:
# virsh net-list --all Name State Autostart Persistent --------------------------------------------- default active yes yes labnet active yes yes
Para informações sobre uma interface específica:
# virsh net-info default Name: default UUID: c699f9f6-9202-4ca8-91d0-6b8cb9024116 Active: yes Persistent: yes Autostart: yes Bridge: virbr0
Para obter detalhes sobre interfaces de rede, redes VM e instruções para configurá-las, veja Capítulo 13, Configuração de conexões de rede de máquinas virtuais.
- Para instruções sobre como visualizar informações sobre pools e volumes de armazenamento em seu host, veja Seção 11.2.1, “Visualização de informações de armazenamento de máquinas virtuais usando o CLI”.
6.2. Visualização de informações de máquinas virtuais usando o console web
Usando o console web RHEL 8, você pode visualizar informações sobre o armazenamento virtual e as VMs às quais o console web está conectado.
6.2.1. Visualizando uma visão geral da virtualização no console web
O procedimento a seguir descreve como visualizar uma visão geral das máquinas virtuais (VMs) e o armazenamento virtual disponível ao qual a sessão do console web está conectada.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Clique em Virtual Machines no menu lateral do console web.
Aparece uma caixa de diálogo com informações sobre o armazenamento disponível e as VMs às quais o console web está conectado.

As informações incluem o seguinte:
- Storage Pools - O número de pools de armazenamento que podem ser acessados pelo console web e seu estado.
- Networks - O número de redes que podem ser acessadas pelo console web e seu estado.
- Name - O nome do VM.
- Connection - O tipo de conexão, sistema ou sessão de libvirt.
- State - O estado do VM.
Recursos adicionais
- Para obter instruções sobre como visualizar informações detalhadas sobre os pools de armazenamento que a sessão do console web pode acessar, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
6.2.2. Visualização das informações do pool de armazenamento usando o console web
O procedimento a seguir descreve como visualizar informações detalhadas sobre os pools de armazenamento da máquina virtual (VM) que a sessão do console web pode acessar.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da interface das Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
As informações incluem o seguinte:
- Name - O nome do pool de armazenagem.
- Size - O tamanho do pool de armazenagem.
- Connection - A conexão utilizada para acessar o pool de armazenamento.
- State - O estado do pool de armazenagem.
Clique na linha do depósito cujas informações você deseja ver.
A linha se expande para revelar o painel de Visão Geral com as seguintes informações sobre o pool de armazenamento selecionado:
- Path - O caminho para o pool de armazenagem.
- Persistent - Se o pool de armazenagem é persistente ou não.
- Autostart - Quer o pool de armazenagem comece ou não automaticamente.
- Type - O tipo de piscina de armazenagem.
Para ver uma lista dos volumes de armazenamento criados a partir do pool de armazenamento, clique em Volumes de Armazenamento.
Aparece o painel de Volumes de Armazenamento, mostrando uma lista de volumes de armazenamento configurados com seus tamanhos e a quantidade de espaço utilizada.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
6.2.3. Visualização de informações básicas da máquina virtual no console web
O seguinte descreve como visualizar informações básicas sobre uma máquina virtual selecionada (VM) à qual a sessão do console web está conectada.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
- Clique em Virtual Machines no menu lateral do console web.
Clique na fila do VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Se outra aba for selecionada, clique em Visão Geral.
As informações incluem os seguintes detalhes gerais da VM:
- Memory - A quantidade de memória atribuída ao VM.
- vCPUs - O número de CPUs virtuais configuradas para a VM.
- CPU Type - A arquitetura das CPUs virtuais configuradas para a VM.
- Boot Order - A ordem de inicialização configurada para a VM.
- Autostart - Se o autostart está ou não habilitado para a VM.
As informações também incluem os seguintes detalhes do hipervisor:
- Emulated Machine - O tipo de máquina emulada pela VM.
- Firmware - O firmware da VM.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
- Para ver informações mais detalhadas sobre a CPU virtual e configurar as CPUs virtuais configuradas para uma VM, veja Seção 16.5.2, “Gerenciamento de CPUs virtuais usando o console web”.
6.2.4. Visualização do uso de recursos da máquina virtual no console web
O procedimento a seguir descreve como visualizar a memória e as informações de uso da CPU virtual sobre uma máquina virtual selecionada (VM) à qual a sessão do console web está conectada.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Usage (Uso).
O painel de Uso aparece com informações sobre a memória e o uso da CPU virtual da VM.

Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
6.2.5. Visualização das informações do disco da máquina virtual no console web
O procedimento a seguir descreve como visualizar as informações em disco de uma máquina virtual (VM) à qual a sessão do console web está conectada.
Pré-requisitos
Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Clique na fila do VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Discos.
O painel de discos aparece com informações sobre os discos designados para a VM.

As informações incluem o seguinte:
- Device - O tipo de dispositivo do disco.
- Used - A quantidade do disco que é utilizada.
- Capacity - O tamanho do disco.
- Bus - O tipo de ônibus do disco.
- Access - Se o disco é gravável ou somente leitura.
- Source - O dispositivo ou arquivo em disco.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
6.2.6. Visualização e edição de informações da interface de rede virtual no console web
Usando o console web RHEL 8, você pode visualizar e modificar as interfaces de rede virtual em uma máquina virtual selecionada (VM):
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Interfaces de rede.
O painel Interfaces de Redes aparece com informações sobre a interface de rede virtual configurada para a VM.
As informações incluem o seguinte:
Type - O tipo de interface de rede para a VM. Os tipos incluem rede virtual, ponte para LAN, e conexão direta.
NotaConexão Ethernet genérica não é suportada no RHEL 8.2.
- Model type - O modelo da interface da rede virtual.
- MAC Address - O endereço MAC da interface da rede virtual.
- IP Address - O endereço IP da interface da rede virtual.
- Source - A fonte da interface da rede. Isto depende do tipo de rede.
- State - O estado da interface da rede virtual.
Para editar as configurações da interface de rede virtual, clique em Editar. O diálogo Configurações da interface de rede virtual é aberto.
- Alterar o tipo de interface, fonte ou modelo.
Clique em Salvar. A interface da rede é modificada.
NotaAs mudanças nas configurações da interface de rede virtual entram em vigor somente após o reinício da VM.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
6.3. Exemplo de configuração de XML de máquina virtual
A configuração XML de uma VM, também chamada de domain XML, determina as configurações e componentes da VM. A tabela a seguir mostra seções de uma amostra da configuração XML de uma máquina virtual (VM) e explica o conteúdo.
Para obter a configuração XML de uma VM, você pode usar o comando virsh dumpxml
seguido do nome da VM.
# virsh dumpxml testguest1
Tabela 6.1. Exemplo de configuração XML
Seção XML de domínio | Descrição |
---|---|
<domain type='kvm'> <name>Testguest1</name> <uuid>ec6fbaa1-3eb4-49da-bf61-bb02fbec4967</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> | Esta é uma máquina virtual KVM chamada Testguest1, com 1024 MiB de RAM alocada. |
<vcpu placement='static'>1</vcpu> | A VM é alocada com uma única CPU virtual (vCPU). Para informações sobre a configuração de vCPUs, veja Seção 16.5, “Otimizando o desempenho da CPU da máquina virtual”. |
<os> <type arch='x86_64' machine='pc-q35-4.1'>hvm</type> <boot dev='hd'/> </os> | A arquitetura da máquina está ajustada à arquitetura AMD64 e Intel 64, e usa o tipo de máquina Intel Q35 para determinar a compatibilidade dos recursos. O sistema operacional está configurado para ser inicializado a partir do disco rígido. Para informações sobre como criar uma VM com um sistema operacional instalado, veja Seção 2.2.2, “Criação de máquinas virtuais e instalação de sistemas operacionais convidados usando o console web”. |
<features> <acpi/> <apic/> <vmport state='off'/> </features> | Os recursos do hipervisor acpi e apic estão desativados e a porta VMWare IO está desligada. |
<cpu mode='host-model' check='partial'> |
As definições de CPU do host a partir das capacidades XML (obtidas com |
<clock offset='utc'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock> | O relógio de hardware virtual da VM usa o fuso horário UTC. Além disso, três temporizadores diferentes são configurados para sincronização com o hipervisor QEMU. |
<on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> |
Quando a VM desliga, ou seu sistema operacional termina inesperadamente, |
<pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> | Os estados S3 e S4 ACPI do sono estão desativados para esta VM. |
<devices> <emulator>/usr/bin/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/Testguest.qcow2'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdb' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> |
A VM usa o arquivo binário |
<controller type='usb' index='0' model='qemu-xhci' ports='15'> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> <controller type='sata' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> </controller> <controller type='pci' index='0' model='pcie-root'/> <controller type='pci' index='1' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='1' port='0x10'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/> </controller> <controller type='pci' index='2' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='2' port='0x11'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/> </controller> <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0x12'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/> </controller> <controller type='pci' index='4' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='4' port='0x13'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/> </controller> <controller type='pci' index='5' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='5' port='0x14'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/> </controller> <controller type='pci' index='6' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='6' port='0x15'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/> </controller> <controller type='pci' index='7' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='7' port='0x16'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </controller> |
A VM usa um único controlador para anexar dispositivos USB, e um controlador raiz para dispositivos PCI-Express (PCIe). Além disso, está disponível uma controladora Para mais informações sobre dispositivos virtuais, veja Seção 10.5, “Tipos de dispositivos virtuais”. |
<interface type='network'> <mac address='52:54:00:65:29:21'/> <source network='default'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> | Uma interface de rede é estabelecida na VM que utiliza a rede virtual default e o modelo de dispositivo de rede rtl8139. Para informações sobre como configurar a interface de rede, veja Seção 16.6, “Otimizando o desempenho da rede de máquinas virtuais”. |
<serial type='pty'> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <address type='virtio-serial' controller='0' bus='0' port='2'/> </channel> |
Um console serial Para mais informações sobre como interagir com VMs, veja Seção 2.4.1, “Interagindo com máquinas virtuais usando o console web”. |
<input type='tablet' bus='usb'> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> | A VM usa uma porta virtual usb, que é configurada para receber a entrada do tablet, e uma porta virtual ps2 configurada para receber a entrada do mouse e do teclado. Esta é configurada automaticamente e não é recomendável alterar estas configurações. |
<graphics type='spice' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'/> <image compression='off'/> </graphics> <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1'> <listen type='address' address='127.0.0.1'/> </graphics> |
A VM usa os protocolos |
<sound model='ich6'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </sound> <video> <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> |
Um dispositivo de som |
<redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='1'/> </redirdev> <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='2'/> </redirdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </memballoon> </devices> </domain> | A VM tem dois redirecionadores para anexar dispositivos USB remotamente, e o balonamento de memória é ligado. Isto é configurado automaticamente e não é recomendável alterar estas configurações. |
Capítulo 7. Salvando e restaurando máquinas virtuais
Para liberar os recursos do sistema, você pode desligar uma máquina virtual (VM) rodando nesse sistema. Entretanto, quando você precisar da VM novamente, você deve inicializar o sistema operacional (SO) convidado e reiniciar as aplicações, o que pode levar um tempo considerável. Para reduzir este tempo de inatividade e permitir que a carga de trabalho da VM comece a funcionar mais cedo, você pode usar o recurso de salvar e restaurar para evitar o desligamento do SO e a seqüência de inicialização totalmente.
Esta seção fornece informações sobre como salvar VMs, bem como sobre como restaurá-las ao mesmo estado sem um boot-up completo de VMs.
7.1. Como funciona a economia e a restauração de máquinas virtuais
Salvar uma máquina virtual (VM) salva sua memória e o estado do dispositivo no disco do host, e pára imediatamente o processo da VM. Você pode salvar uma VM que esteja em estado de funcionamento ou em pausa, e ao ser restaurada, a VM retornará a esse estado.
Este processo libera recursos de RAM e CPU no sistema hospedeiro em troca de espaço em disco, o que pode melhorar o desempenho do sistema hospedeiro. Quando a VM é restaurada, porque o sistema operacional convidado não precisa ser inicializado, o longo período de inicialização também é evitado.
Para salvar uma VM, você pode usar a interface de linha de comando (CLI). Para instruções, consulte Salvando máquinas virtuais usando a interface de linha de comando.
Para restaurar uma VM, você pode usar o CLI ou o GUI do console web.
7.2. Salvando uma máquina virtual usando a interface de linha de comando
Para salvar uma máquina virtual (VM) usando a linha de comando, siga o procedimento abaixo.
Pré-requisitos
- Certifique-se de ter espaço suficiente em disco para salvar o VM e sua configuração. Observe que o espaço ocupado pela VM depende da quantidade de RAM alocada a essa VM.
- Certifique-se de que o VM seja persistente.
- Optional: Faça backup de dados importantes do VM, se necessário.
Procedimento
Use o utilitário
virsh managedsave
.Por exemplo, o seguinte comando pára o VM demo-guest1 e salva sua configuração.
# virsh managedsave demo-guest1 Domain demo-guest1 saved by libvirt
O arquivo VM salvo está localizado, por padrão, no diretório /var/lib/libvirt/qemu/save como demo-guest1.save.
Na próxima vez que o VM for iniciado, ele restaurará automaticamente o estado salvo do arquivo acima.
Verificação
Você pode se certificar de que a VM está em estado salvo ou desligada usando o utilitário
virsh list
.Para listar as VMs que conseguiram salvar habilitadas, use o seguinte comando. As VMs listadas como saved têm seu salvamento gerenciado habilitado.
# virsh list --managed-save --all Id Name State ---------------------------------------------------- - demo-guest1 saved - demo-guest2 shut off
Para listar as VMs que têm uma imagem gerenciada salvar:
# virsh list --with-managed-save --all Id Name State ---------------------------------------------------- - demo-guest1 shut off
Note que para listar as VMs salvas que estão em estado de desligamento, você deve usar as opções
--all
ou--inactive
com o comando.
Solução de problemas
- Se o arquivo VM salvo se tornar corrompido ou ilegível, a restauração da VM iniciará uma inicialização padrão da VM.
Recursos adicionais
-
Para mais argumentos
virsh managedsave
, usevirsh managedsave --help
ou consulte a página de manualvirsh
. - Para instruções sobre como restaurar uma VM salva usando a interface de linha de comando, veja Seção 7.3, “Iniciando uma máquina virtual usando a interface de linha de comando”.
- Para instruções sobre a restauração de um VM salvo usando o console web, veja Seção 7.4, “Inicialização de máquinas virtuais usando o console web”.
7.3. Iniciando uma máquina virtual usando a interface de linha de comando
Você pode usar a interface de linha de comando para iniciar uma máquina virtual de desligamento (VM) ou restaurar uma VM salva. Siga o procedimento abaixo.
Pré-requisitos
- Um VM inativo que já está definido.
- O nome do VM.
Para VMs remotas:
- O endereço IP do host onde a VM está localizada.
- Privilégios de acesso à raiz para o anfitrião.
Procedimento
Para uma VM local, use o utilitário
virsh start
.Por exemplo, o seguinte comando inicia o demo-guest1 VM.
# virsh start demo-guest1 Domain demo-guest1 started
Para uma VM localizada em um host remoto, use o utilitário
virsh start
junto com a conexão SSH QEMU com o host.Por exemplo, o seguinte comando inicia o VM demo-guest1 no host 192.168.123.123.
# virsh -c qemu+ssh://root@192.168.123.123/system start demo-guest1 root@192.168.123.123's password: Last login: Mon Feb 18 07:28:55 2019 Domain demo-guest1 started
Recursos adicionais
-
Para mais argumentos
virsh start
, usevirsh start --help
. - Para simplificar o gerenciamento de VM em hosts remotos, veja modificando sua configuração de libvirt e SSH.
-
Você pode usar o utilitário
virsh autostart
para configurar uma VM para iniciar automaticamente quando o host iniciar. Para mais informações sobre o autostart, consulte a página de ajudavirsh autostart
.
7.4. Inicialização de máquinas virtuais usando o console web
Se uma máquina virtual (VM) estiver no estado shut off, você pode iniciá-la usando o console web RHEL 8.
Pré-requisitos
- Um VM inativo que já está definido.
- O nome do VM.
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM que você deseja iniciar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Run.
A VM inicia, e você pode se conectar a seu console ou saída gráfica.
-
Optional: Para configurar a VM para iniciar automaticamente quando o host iniciar, clique na caixa de seleção
Autostart
.
Recursos adicionais
- Para obter informações sobre como desligar um VM, consulte Seção 2.5.2.1, “Desligamento de máquinas virtuais no console web”.
- Para informações sobre como reiniciar um VM, veja Seção 2.5.2.2, “Reinicialização de máquinas virtuais usando o console web”.
- Para informações sobre como enviar uma interrupção não-máscara para uma VM, veja Seção 2.5.2.3, “Envio de interrupções não-máscaras para VMs usando o console web”.
Capítulo 8. Clonagem de máquinas virtuais
Para criar rapidamente uma nova máquina virtual (VM) com um conjunto específico de propriedades, você pode clone uma VM existente.
A clonagem cria uma nova VM que usa sua própria imagem de disco para armazenamento, mas a maioria da configuração e dos dados armazenados do clone é idêntica à da VM de origem. Isto torna possível preparar uma série de VMs otimizadas para uma determinada tarefa, sem a necessidade de otimizar cada VM individualmente.
8.1. Como funciona a clonagem de máquinas virtuais
A clonagem de uma máquina virtual (VM) copia a configuração XML da VM de origem e suas imagens em disco, e faz ajustes nas configurações para garantir a singularidade da nova VM. Isto inclui mudar o nome da VM e garantir que ela utilize os clones das imagens de disco. No entanto, os dados armazenados nos discos virtuais do clone são idênticos aos da VM de origem.
Este processo é mais rápido do que criar uma nova VM e instalá-la com um sistema operacional convidado, e pode ser usado para gerar rapidamente VMs com uma configuração e conteúdo específicos.
Se você está planejando criar vários clones de uma VM, primeiro crie uma VM template que não contenha:
- Configurações únicas, tais como a configuração persistente da rede MAC, que podem impedir que os clones funcionem corretamente.
- Dados sensíveis, tais como chaves SSH e arquivos de senhas.
Para instruções, ver Seção 8.2, “Criação de um modelo de máquina virtual”.
Para clonar um VM, você pode usar o RHEL 8 CLI. Para maiores detalhes, veja Seção 8.3, “Clonagem de uma máquina virtual usando a interface de linha de comando”.
8.2. Criação de um modelo de máquina virtual
Para garantir que os clones da máquina virtual (VM) funcionem corretamente, remova as informações e configurações exclusivas da VM de origem, tais como chaves SSH ou configuração de MAC de rede persistente, antes de clonar a VM de origem.
Isto cria uma VM template, que pode ser usada para criar clones de VM com facilidade e segurança.
Pré-requisitos
O utilitário
virt-sysprep
está instalado em seu host:# yum install /usr/bin/virt-sysprep
- A VM pretendida como modelo é desligada.
Você deve saber onde se encontra a imagem em disco da VM de origem, e ser o proprietário do arquivo de imagem em disco da VM.
Note que as imagens em disco para VMs criadas na sessão de libvirt do sistema estão por padrão localizadas no diretório
/var/lib/libvirt/images
e pertencem ao usuário root:# ls -la /var/lib/libvirt/images -rw-------. 1 root root 9665380352 Jul 23 14:50 a-really-important-vm.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 an-actual-vm-that-i-use.qcow2 -rw-------. 1 root root 8591507456 Jul 26 2017 totally-not-a-fake-vm.qcow2 -rw-------. 1 root root 10739318784 Sep 20 17:57 another-vm-example.qcow2
- Optional: Qualquer dado importante no disco da VM foi copiado. Se você quiser preservar a VM de origem intacta, clone-a primeiro e edite o clone para criar um modelo.
Procedimento
Certifique-se de estar logado como o proprietário da imagem em disco da VM:
# whoami root
Optional: Copiar a imagem do disco da VM.
# cp /var/lib/libvirt/images/a-really-important-vm.qcow2 /var/lib/libvirt/images/a-really-important-vm-original.qcow2
Isto é usado posteriormente para verificar se a VM foi transformada com sucesso em um modelo.
Use o seguinte comando, e substitua /var/lib/libvirt/images/a-really-important-vm.qcow2 pelo caminho para a imagem em disco da fonte VM.
# virt-sysprep -a /var/lib/libvirt/images/a-really-important-vm.qcow2 [ 0.0] Examining the guest ... [ 7.3] Performing "abrt-data" ... [ 7.3] Performing "backup-files" ... [ 9.6] Performing "bash-history" ... [ 9.6] Performing "blkid-tab" ... [...]
Verificação
Para confirmar que o processo foi bem sucedido, compare a imagem modificada do disco com a original. O exemplo a seguir mostra uma criação bem sucedida de um modelo:
# virt-diff -a /var/lib/libvirt/images/a-really-important-vm-orig.qcow2 -A /var/lib/libvirt/images/a-really-important-vm.qcow2 - - 0644 1001 /etc/group- - - 0000 797 /etc/gshadow- = - 0444 33 /etc/machine-id [...] - - 0600 409 /home/username/.bash_history - d 0700 6 /home/username/.ssh - - 0600 868 /root/.bash_history [...]
Recursos adicionais
Usando o comando
virt-sysprep
, como mostrado acima, executa a preparação padrão do modelo VM. Para mais informações, consulte a seçãoOPERATIONS
na página de manualvirt-sysprep
.Para personalizar quais operações específicas você deseja que
virt-sysprep
realize, use a opção--operations
e especifique as operações pretendidas como uma lista separada por vírgulas.- Para instruções sobre a clonagem de um modelo VM, veja Seção 8.3, “Clonagem de uma máquina virtual usando a interface de linha de comando”.
8.3. Clonagem de uma máquina virtual usando a interface de linha de comando
Para criar rapidamente uma nova máquina virtual (VM) com um conjunto específico de propriedades, por exemplo, para fins de teste, você pode clonar uma VM existente. Para fazer isso utilizando a CLI, siga as instruções abaixo.
Pré-requisitos
- A fonte VM está desligada.
- Garantir que haja espaço suficiente em disco para armazenar as imagens do disco clonado.
- Optional: Ao criar vários clones de VMs, remova dados e configurações exclusivas da VM de origem para garantir que as VMs clonadas funcionem corretamente. Para instruções, veja Seção 8.2, “Criação de um modelo de máquina virtual”.
Procedimento
Use o utilitário
virt-clone
com opções apropriadas para seu ambiente e caso de uso.Sample use cases
O seguinte comando clona um VM local chamado doppelganger e cria o VM doppelganger-clone. Ele também cria a imagem do disco doppelganger-clone.qcow2 no mesmo local que a imagem do disco da VM original, e com os mesmos dados:
# virt-clone --original doppelganger --auto-clone Allocating 'doppelganger-clone.qcow2' | 50.0 GB 00:05:37 Clone 'doppelganger-clone' created successfully.
O seguinte comando clona uma VM chamada geminus1, e cria uma VM local chamada geminus2, que usa apenas dois dos múltiplos discos de geminus1.
# virt-clone --original geminus1 --name geminus2 --file /var/lib/libvirt/images/disk1.qcow2 --file /var/lib/libvirt/images/disk2.qcow2 Allocating 'disk1-clone.qcow2' | 78.0 GB 00:05:37 Allocating 'disk2-clone.qcow2' | 80.0 GB 00:05:37 Clone 'geminus2' created successfully.
Para clonar seu VM para um host diferente, migre o VM sem indefini-lo para o host local. Por exemplo, os seguintes comandos clonam a VM previamente criada geminus2 para o sistema remoto 10.0.0.1, incluindo seus discos locais. Note que a utilização destes comandos também requer privilégios de root para a 10.0.0.1.
# virsh migrate --offline --persistent geminus2 qemu+ssh://root@10.0.0.1/system root@10.0.0.1's password: # scp /var/lib/libvirt/images/disk1-clone.qcow2 root@10.0.0.1/user@remote_host.com://var/lib/libvirt/images/ # scp /var/lib/libvirt/images/disk2-clone.qcow2 root@10.0.0.1/user@remote_host.com://var/lib/libvirt/images/
Verificação
Para verificar se o VM foi clonado com sucesso e está funcionando corretamente:
Confirme se o clone foi adicionado à lista de VMs em seu host.
# virsh list --all Id Name State --------------------------------------- - doppelganger shut off - doppelganger-clone shut off
Comece o clone e observe se ele se inicia.
# virsh start doppelganger-clone Domain doppelganger-clone started
Recursos adicionais
-
Para opções adicionais de clonagem de VMs, consulte a página de manual
virt-clone
. - Para detalhes sobre como mover os clones de VM para um host diferente, incluindo informações sobre solução de problemas, veja Capítulo 9, Migração de máquinas virtuais.
Capítulo 9. Migração de máquinas virtuais
Se o host atual de uma máquina virtual (VM) tornar-se inadequado ou não puder mais ser usado, ou se você quiser redistribuir a carga de trabalho do host, você pode migrar a VM para outro host KVM.
9.1. Como funciona a migração de máquinas virtuais
A parte essencial da migração da máquina virtual (VM) é copiar a configuração XML de uma VM para uma máquina host diferente. Se a VM migrada não for desligada, a migração também transfere o estado da memória da VM e quaisquer dispositivos virtualizados para uma máquina host de destino. Para que a VM permaneça funcional no host de destino, as imagens em disco da VM devem permanecer disponíveis para ela.
Por padrão, a VM migrada é transitória no host de destino, e permanece definida também no host de origem.
Você pode migrar uma VM em funcionamento usando live ou non-live migrações. Para migrar uma VM desligada, você deve usar uma migração offline. Para detalhes, consulte a tabela a seguir.
Tabela 9.1. Tipos de migração VM
Tipo de migração | Descrição | Estojo de uso | Requisitos de armazenamento |
---|---|---|---|
Live migration | A VM continua a funcionar na máquina host de origem enquanto a KVM está transferindo as páginas de memória da VM para o host de destino. Quando a migração está quase completa, a KVM suspende muito brevemente a VM, e a retoma no host de destino. | Útil para VMs que requerem tempo de atividade constante. Entretanto, as VMs que modificam páginas de memória mais rapidamente do que a KVM pode transferi-las, como as VMs sob carga pesada de E/S, não podem ser migradas ao vivo, e non-live migration deve ser utilizado em seu lugar. | As imagens em disco da VM devem estar localizadas em uma rede compartilhada, acessível tanto para o host de origem quanto para o host de destino. |
Non-live migration | Suspende o VM, copia sua configuração e sua memória para o host de destino, e retoma o VM. | Cria tempo ocioso para o VM, mas geralmente é mais confiável do que a migração ao vivo. Recomendado para as VMs sob carga pesada de E/S. | As imagens em disco da VM devem estar localizadas em uma rede compartilhada, acessível tanto para o host de origem quanto para o host de destino. |
Offline migration | Move a configuração da VM para o host de destino | Recomendado para VMs de desligamento. | As imagens em disco da VM não precisam estar disponíveis em uma rede compartilhada e podem ser copiadas ou movidas manualmente para o host de destino. |
Recursos adicionais
- Para mais informações sobre os benefícios da migração de VMs, veja Seção 9.2, “Benefícios da migração de máquinas virtuais”.
- Para instruções sobre a criação de armazenamento compartilhado para VMs migratórios, veja Seção 9.4, “Compartilhar imagens de disco de máquinas virtuais com outros anfitriões”.
9.2. Benefícios da migração de máquinas virtuais
A migração de máquinas virtuais (VMs) pode ser útil:
- Balanceamento de carga
- As VMs podem ser movidas para máquinas host com menor utilização se seu host ficar sobrecarregado, ou se outro host for subutilizado.
- Independência do hardware
- Quando você precisar atualizar, adicionar ou remover dispositivos de hardware na máquina host, você pode realocar com segurança as VMs para outros hosts. Isto significa que as VMs não sofrem nenhum tempo de inatividade para melhorias de hardware.
- Economia de energia
- As VMs podem ser redistribuídas para outros hosts, e os sistemas host descarregados podem assim ser desligados para economizar energia e cortar custos durante períodos de baixa utilização.
- Migração geográfica
- Os VMs podem ser movidos para outro local físico por baixa latência ou quando necessário por outros motivos.
9.3. Limitações para a migração de máquinas virtuais
Antes de migrar máquinas virtuais (VMs) no RHEL 8, certifique-se de estar ciente das limitações da migração.
- A migração de armazenamento ao vivo não pode ser realizada no RHEL 8, mas você pode migrar o armazenamento enquanto a VM estiver desligada. Note que a migração de armazenamento ao vivo está disponível na Red Hat Virtualization.
-
Migrar VMs de ou para uma sessão de usuário de
libvirt
não é confiável e, portanto, não é recomendado. As VMs que utilizam certas características e configurações não funcionarão corretamente se migradas, ou a migração falhará. Tais características incluem:
- Passagem do dispositivo
- Atribuição de dispositivos SR-IOV
- Dispositivos mediados, tais como vGPUs
- Acesso de Memória Não-Uniforme (NUMA)
9.4. Compartilhar imagens de disco de máquinas virtuais com outros anfitriões
Para realizar uma migração ao vivo de uma máquina virtual (VM) entre hosts KVM suportados, é necessário o armazenamento compartilhado de VM. Esta seção fornece instruções para compartilhar uma imagem VM armazenada localmente com o host de origem e o host de destino usando o protocolo NFS.
Pré-requisitos
- O VM destinado à migração é desativado.
- Optional: Está disponível um sistema host para hospedar o armazenamento que não é o host de origem ou destino, mas tanto o host de origem quanto o host de destino podem alcançá-lo através da rede. Esta é a solução ideal para o armazenamento compartilhado e é recomendada pela Red Hat.
- Certifique-se de que o travamento de arquivos NFS não seja usado, pois não é suportado no KVM.
O NFS é instalado e habilitado nos hosts de origem e destino. Se não estiver:
Instalar os pacotes NFS:
# yum install nfs-utils
Certifique-se de que as portas para NFS em
iptables
(como 2049) estejam abertas no firewall.# firewall-cmd --permanent --add-service=nfs # firewall-cmd --permanent --add-service=mountd # firewall-cmd --permanent --add-service=rpc-bind # firewall-cmd --permanent --add-port=2049/tcp # firewall-cmd --permanent --add-port=2049/udp # firewall-cmd --reload
Iniciar o serviço de NFS.
# systemctl start nfs-server
Procedimento
Conecte-se ao anfitrião que fornecerá o armazenamento compartilhado. Neste exemplo, é o anfitrião
cargo-bay
:# ssh root@cargo-bay root@cargo-bay's password: Last login: Mon Sep 24 12:05:36 2019 root~#
Crie um diretório que manterá a imagem do disco e será compartilhado com os anfitriões da migração.
# mkdir /var/lib/libvirt/shared-images
Copie a imagem do disco da VM do host de origem para o diretório recém-criado. Por exemplo, as seguintes cópias da imagem do disco da VM
wanderer1
para o diretório/var/lib/libvirt/shared-images/
no host do "cargo-bay":# scp /var/lib/libvirt/images/wanderer1.qcow2 root@cargo-bay:/var/lib/libvirt/shared-images/wanderer1.qcow2
No host que você deseja usar para compartilhar o armazenamento, adicione o diretório de compartilhamento ao arquivo
/etc/exports
. O seguinte exemplo compartilha o diretório/var/lib/libvirt/shared-images
com os hostssource-example
edest-example
:/var/lib/libvirt/libvirt/shared-images source-example(rw,no_root_squash) dest-example(rw,no_root_squash)
Tanto no host de origem quanto no host de destino, monte o diretório compartilhado no diretório
/var/lib/libvirt/images
:# mount cargo-bay:/var/lib/libvirt/shared-images /var/lib/libvirt/images
Verificação
- Para verificar se o processo foi bem sucedido, inicie o VM no host de origem e observe se ele inicia corretamente.
Recursos adicionais
- Para informações detalhadas sobre a configuração do NFS, abertura de tabelas IP e configuração do firewall, consulte Exportando ações do NFS.
9.5. Migração de uma máquina virtual usando a interface de linha de comando
Se o host atual de uma máquina virtual (VM) tornar-se inadequado ou não puder mais ser usado, ou se você quiser redistribuir a carga de trabalho do host, você pode migrar a VM para outro host KVM. Esta seção fornece instruções e exemplos para vários cenários de tais migrações.
Pré-requisitos
- Tanto o hospedeiro de origem quanto o hospedeiro de destino utilizam o hipervisor KVM.
-
O anfitrião de origem e o anfitrião de destino são capazes de alcançar um ao outro através da rede. Use o utilitário
ping
para verificar isso. - Para que a migração seja suportada pela Red Hat, o host de origem e o host de destino devem estar usando sistemas operacionais e tipos de máquinas específicos. Para garantir que este seja o caso, consulte a tabela de compatibilidade da migração da VM.
A Red Hat recomenda que as imagens em disco das VMs que serão migradas sejam localizadas em um local de rede separado acessível tanto ao host de origem quanto ao host de destino. Isto é opcional para a migração offline, mas necessário para a migração de uma VM em funcionamento.
Para instruções de como configurar esse armazenamento de VM compartilhado, veja Seção 9.4, “Compartilhar imagens de disco de máquinas virtuais com outros anfitriões”.
- Ao migrar uma VM existente em uma rede pública de torneira de ponte, os hosts de origem e destino devem estar localizados na mesma rede. Caso contrário, a rede da VM não operará após a migração.
Procedimento
Certifique-se de que o serviço
libvirtd
esteja habilitado e funcionando.# systemctl enable libvirtd.service # systemctl restart libvirtd.service
Use o comando
virsh migrate
com opções apropriadas para suas necessidades de migração.O seguinte migra o
wanderer1
VM de seu host local para a sessão do sistema do hostdest-example
. O VM permanecerá em funcionamento durante a migração.# virsh migrate --persistent --live wanderer1 qemu ssh://dest-example/system
O seguinte permite que você faça ajustes manuais na configuração da VM
wanderer2
rodando em seu host local, e depois migre a VM para o hostdest-example
. A VM migrada utilizará automaticamente a configuração atualizada.# virsh dumpxml --migratable wanderer2 >wanderer2.xml # vi wanderer2.xml # virsh migrate --live --persistent --xml wanderer2.xml wanderer2 qemu+ssh://dest-example/system
Este procedimento pode ser útil, por exemplo, quando o host de destino precisa usar um caminho diferente para acessar o armazenamento compartilhado da VM ou ao configurar um recurso específico para o host de destino.
O seguinte suspende o
wanderer3
VM do hostsource-example
, o migra para o hostdest-example
e o instrui a usar a configuração XML ajustada, fornecida pelo arquivowanderer3-alt.xml
. Quando a migração for concluída,libvirt
retomará a VM no host de destino.# virsh migrate wanderer3 qemu ssh://source-example/system qemu ssh://dest-example/system --xml wanderer3-alt.xml
Após a migração, a VM permanece no estado suspenso no host de origem, e a cópia migrada é apagada após ser desligada.
O seguinte elimina o desligamento
wanderer4
VM do hostsource-example
, e move sua configuração para o hostdest-example
.# virsh migrate --offline --persistent --undefinesource wanderer4 qemu ssh://source-example/system qemu ssh://dest-example/system
Note que este tipo de migração não requer mover a imagem do disco da VM para o armazenamento compartilhado. Entretanto, para que a VM possa ser utilizada no host de destino, é necessário migrar a imagem de disco da VM. Por exemplo, a imagem de disco da VM:
# scp root@source-example:/var/lib/libvirt/images/wanderer4.qcow2 root@dest-example:/var/lib/libvirt/images/wanderer4.qcow2
Esperar que a migração seja concluída. O processo pode levar algum tempo, dependendo da largura de banda da rede, da carga do sistema e do tamanho da VM. Se a opção
--verbose
não for utilizada paravirsh migrate
, a CLI não exibirá nenhum indicador de progresso, exceto erros.Quando a migração estiver em andamento, você pode usar o utilitário
virsh domjobinfo
para exibir as estatísticas de migração.
Verificação
No host de destino, liste as VMs disponíveis para verificar se a VM foi migrada:
# virsh list Id Name State ---------------------------------- 10 wanderer1 running
Note que se a migração ainda estiver em execução, este comando listará o estado da VM como
paused
.
Solução de problemas
-
Em alguns casos, o host alvo não será compatível com certos valores da configuração XML da VM migrada, tais como o nome da rede ou tipo de CPU. Como resultado, a VM não inicializará no host de destino. Para corrigir estes problemas, você pode atualizar os valores problemáticos usando o comando
virsh edit
. Se uma migração ao vivo está demorando muito tempo para ser concluída, isto pode ser porque o VM está sob carga pesada e muitas páginas de memória estão mudando para que a migração ao vivo seja possível. Para resolver este problema, mude a migração para uma não viva, suspendendo a VM.
# virsh suspend wanderer1
Recursos adicionais
-
Para outras opções e exemplos de migração de máquinas virtuais, use
virsh migrate --help
ou consulte a página de manualvirsh
.
9.6. Anfitriões suportados para a migração de máquinas virtuais
Para que a migração da máquina virtual (VM) funcione corretamente e seja suportada pela Red Hat, os hosts de origem e destino devem ser versões específicas da RHEL e tipos de máquina. A tabela a seguir mostra os caminhos de migração suportados pela VM.
Tabela 9.2. Compatibilidade com a migração ao vivo
Método de migração | Tipo de liberação | Exemplo | Status de suporte |
---|---|---|---|
Avançar | Lançamento principal | 7.6 → 8.1 | Em sistemas RHEL 7 suportados: tipos de máquinas i440fx e q35 |
Para trás | Lançamento principal | 8.1 → 7.6 | Em sistemas RHEL 8 suportados: tipos de máquinas i440fx e q35 |
Avançar | Pequena liberação | 8.0.1 → 8.1 | Em sistemas RHEL 7 suportados: tipos de máquinas i440fx e q35 em RHEL 7.6.0 e posteriores. Em sistemas RHEL 8 suportados: tipo de máquina q35. |
Para trás | Pequena liberação | 8.1 → 8.0.1 | Em sistemas RHEL 7 suportados. Totalmente compatível com os tipos de máquinas i440fx e q35. Em sistemas RHEL 8 suportados: tipo de máquina q35. |
Recursos adicionais
- Para informações sobre as versões atualmente suportadas da RHEL 7 e RHEL 8, consulte a Base de Conhecimento da Red Hat.
9.7. Recursos adicionais
-
Você também pode migrar VMs de um hypervisor não KVM para um host RHEL 7 ou RHEL 8. Isto também é referido como um
V2V conversion
, e você pode encontrar informações e instruções adicionais na Base de Conhecimento da Red Hat.
Capítulo 10. Gerenciamento de dispositivos virtuais
Uma das formas mais eficazes de gerenciar a funcionalidade, as características e o desempenho de uma máquina virtual (VM) é ajustar seu virtual devices.
As seções seguintes fornecem uma visão geral do que são dispositivos virtuais, e instruções sobre como eles podem ser anexados, modificados ou removidos de um VM.
10.1. Como funcionam os dispositivos virtuais
O básico
Assim como as máquinas físicas, as máquinas virtuais (VMs) requerem dispositivos especializados para fornecer funções ao sistema, tais como poder de processamento, memória, armazenamento, rede ou gráficos. Os sistemas físicos geralmente usam dispositivos de hardware para estes fins. Entretanto, como as VMs funcionam como implementos de software, elas precisam utilizar abstrações de software de tais dispositivos em seu lugar, referidas como virtual devices.
Os dispositivos virtuais conectados a uma VM podem ser configurados ao criar a VM, e também podem ser gerenciados em uma VM existente. Geralmente, os dispositivos virtuais podem ser conectados ou desligados de uma VM somente quando a VM é desligada, mas alguns podem ser adicionados ou removidos quando a VM está em funcionamento. Este recurso é chamado de dispositivo hot plug e hot unplug.
Ao criar uma nova VM, libvirt
cria e configura automaticamente um conjunto padrão de dispositivos virtuais essenciais, a menos que especificado de outra forma pelo usuário. Estes são baseados na arquitetura do sistema host e no tipo de máquina, e normalmente incluem:
- a CPU
- memória
- um teclado
- um controlador de interface de rede (NIC)
- vários controladores de dispositivos
- uma placa de vídeo
- uma placa de som
Para gerenciar dispositivos virtuais após a criação da VM, utilize a interface de linha de comando (CLI). Entretanto, para gerenciar dispositivos de armazenamento virtual e DNIs, você também pode usar o console web RHEL 8.
Desempenho ou flexibilidade
Para alguns tipos de dispositivos, o RHEL 8 suporta múltiplas implementações, muitas vezes com um trade-off entre desempenho e flexibilidade.
Por exemplo, o armazenamento físico utilizado para discos virtuais pode ser representado por arquivos em vários formatos, tais como qcow2
ou raw
, e apresentado à VM utilizando uma variedade de controladores:
- um controlador emulado
-
virtio-scsi
-
virtio-blk
Um controlador emulado é mais lento do que um controlador virtio
, porque os dispositivos virtio
são projetados especificamente para fins de virtualização. Por outro lado, os controladores emulados permitem executar sistemas operacionais que não possuem controladores para os dispositivos virtio
. Da mesma forma, virtio-scsi
oferece um suporte mais completo para comandos SCSI, e torna possível anexar um número maior de discos à VM. Finalmente, virtio-blk
oferece melhor desempenho do que virtio-scsi
e controladores emulados, mas uma gama mais limitada de casos de uso. Por exemplo, anexar um disco físico como um dispositivo LUN a uma VM não é possível ao utilizar virtio-blk
.
Para mais informações sobre os tipos de dispositivos virtuais, veja Seção 10.5, “Tipos de dispositivos virtuais”.
Recursos adicionais
- Para instruções de como anexar, remover ou modificar dispositivos de armazenamento de VM usando o CLI, veja Capítulo 11, Gerenciamento de armazenamento para máquinas virtuais.
- Para instruções de como gerenciar discos VM usando o console web, veja Seção 11.3.7, “Gerenciamento de discos de máquinas virtuais usando o console web”.
- Para instruções de como gerenciar os DNIs de VM usando o console web, veja Seção 13.2, “Utilização do console web para o gerenciamento de interfaces de rede de máquinas virtuais”.
- Para instruções de como criar e gerenciar as NVIDIA vGPUs, veja Capítulo 12, Gerenciando os dispositivos NVIDIA vGPU.
10.2. Fixação de dispositivos em máquinas virtuais
O seguinte fornece informações gerais sobre como criar e anexar dispositivos virtuais a suas máquinas virtuais (VMs) usando a interface de linha de comando (CLI). Alguns dispositivos também podem ser anexados às VMs usando o console web RHEL 8.
Pré-requisitos
Obtenha as opções necessárias para o dispositivo que você pretende anexar a uma VM. Para ver as opções disponíveis para um dispositivo específico, use o
virt-xml --device=?
comando. Por exemplo:# virt-xml --network=? --network options: [...] address.unit boot_order clearxml driver_name [...]
Procedimento
Para anexar um dispositivo a uma VM, use o comando
virt-xml --add-device
, incluindo a definição do dispositivo e as opções necessárias:Por exemplo, o seguinte comando cria uma imagem de disco de 20GB newdisk qcow2 no diretório
/var/lib/libvirt/images/
, e a anexa como um disco virtual ao VM em execução testguest na próxima inicialização do VM:# virt-xml testguest --add-device --disk /var/lib/libvirt/images/newdisk.qcow2,format=qcow2,size=20 Domain 'testguest' defined successfully. Changes will take effect after the domain is fully powered off.
A seguir é anexada uma unidade flash USB, anexada como dispositivo 004 no ônibus 002 no host, ao VM testguest2 enquanto o VM estiver em funcionamento:
# virt-xml testguest2 --add-device --update --hostdev 002.004 Device hotplug successful. Domain 'testguest2' defined successfully.
A combinação ônibus-dispositivo para definir o USB pode ser obtida usando o comando
lsusb
.
Verificação
Para verificar se o dispositivo foi adicionado, faça uma das seguintes ações:
Use o comando
virsh dumpxml
e veja se a definição XML do dispositivo foi adicionada à seção<devices>
na configuração XML da VM.Por exemplo, a saída a seguir mostra a configuração da VM testguest e confirma que o dispositivo de disco flash USB 002.004 foi adicionado.
# virsh dumpxml testguest [...] <hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x4146'/> <product id='0x902e'/> <address bus='2' device='4'/> </source> <alias name='hostdev0'/> <address type='usb' bus='0' port='3'/> </hostdev> [...]
- Execute o VM e teste se o dispositivo está presente e funciona corretamente.
Recursos adicionais
-
Para maiores informações sobre o uso do comando
virt-xml
, useman virt-xml
.
10.3. Modificando dispositivos ligados a máquinas virtuais
O procedimento a seguir fornece instruções gerais para modificar dispositivos virtuais usando a interface de linha de comando (CLI). Alguns dispositivos conectados à sua VM, tais como discos e DNIs, também podem ser modificados usando o console web RHEL 8.
Pré-requisitos
-
Obtenha as opções necessárias para o dispositivo que você pretende anexar a uma VM. Para ver as opções disponíveis para um dispositivo específico, use o
virt-xml --device=?
comando. Por exemplo:
# virt-xml --network=?
--network options:
[...]
address.unit
boot_order
clearxml
driver_name
[...]
-
Optional: Faça o backup da configuração XML de sua VM usando
virsh dumpxml vm-name
e enviando a saída para um arquivo. Por exemplo, o seguinte faz backup da configuração de seu Motoko VM como o arquivomotoko.xml
:
# virsh dumpxml Motoko > motoko.xml # cat motoko.xml <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>Motoko</name> <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid> [...] </domain>
Procedimento
Use o comando
virt-xml --edit
, incluindo a definição do dispositivo e as opções necessárias:Por exemplo, o seguinte esclarece a configuração <cpu> do desligamento testguest VM e a coloca em host-model:
# virt-xml testguest --edit --cpu host-model,clearxml=yes Domain 'testguest' defined successfully.
Verificação
Para verificar se o dispositivo foi modificado, faça uma das seguintes ações:
- Executar a VM e testar se o dispositivo está presente e reflete as modificações.
Use o comando
virsh dumpxml
e veja se a definição XML do dispositivo foi modificada na configuração XML da VM.Por exemplo, a seguinte saída mostra a configuração da VM testguest e confirma que o modo CPU foi configurado como host-model.
# virsh dumpxml testguest [...] <cpu mode='host-model' check='partial'> <model fallback='allow'/> </cpu> [...]
Solução de problemas
Se a modificação de um dispositivo fizer com que sua VM fique sem inicialização, use o utilitário
virsh define
para restaurar a configuração XML, recarregando o arquivo de configuração XML que você fez backup anteriormente.# virsh define testguest.xml
Para pequenas mudanças na configuração XML de sua VM, você pode usar o comando virsh edit
- por exemplo virsh edit testguest
. Entretanto, não utilize este método para mudanças mais extensas, pois é mais provável que ele quebre a configuração de maneiras que poderiam impedir a VM de arrancar.
Recursos adicionais
-
Para obter detalhes sobre o uso do comando
virt-xml
, useman virt-xml
.
10.4. Remoção de dispositivos de máquinas virtuais
O seguinte fornece informações gerais para remover dispositivos virtuais de suas máquinas virtuais (VMs) usando a interface de linha de comando (CLI). Alguns dispositivos, tais como discos ou NICs, também podem ser removidos das VMs usando o console web RHEL 8.
Pré-requisitos
-
Optional: Faça o backup da configuração XML de sua VM usando
virsh dumpxml vm-name
e enviando a saída para um arquivo. Por exemplo, o seguinte faz backup da configuração de seu Motoko VM como o arquivomotoko.xml
:
# virsh dumpxml Motoko > motoko.xml # cat motoko.xml <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name>Motoko</name> <uuid>ede29304-fe0c-4ca4-abcd-d246481acd18</uuid> [...] </domain>
Procedimento
Use o comando
virt-xml --remove-device
, incluindo uma definição do dispositivo. Por exemplo:O seguinte retira o dispositivo de armazenamento marcado como vdb do funcionamento testguest VM depois que ele é desligado:
# virt-xml testguest --remove-device --disk target=vdb Domain 'testguest' defined successfully. Changes will take effect after the domain is fully powered off.
O seguinte remove imediatamente um dispositivo USB flash drive do testguest2 VM em execução:
# virt-xml testguest2 --remove-device --update --hostdev type=usb Device hotunplug successful. Domain 'testguest2' defined successfully.
Solução de problemas
Se a remoção de um dispositivo fizer com que sua VM fique sem inicialização, use o utilitário
virsh define
para restaurar a configuração XML, recarregando o arquivo de configuração XML que você fez backup anteriormente.# virsh define testguest.xml
Recursos adicionais
-
Para obter detalhes sobre o uso do comando
virt-xml
, useman virt-xml
.
10.5. Tipos de dispositivos virtuais
A virtualização no RHEL 8 pode apresentar vários tipos distintos de dispositivos virtuais que você pode anexar às máquinas virtuais (VMs):
- Dispositivos emulados
Os dispositivos emulados são implementações de software de dispositivos físicos amplamente utilizados. Os drivers projetados para dispositivos físicos também são compatíveis com dispositivos emulados. Portanto, os dispositivos emulados podem ser usados de forma muito flexível.
Entretanto, como eles precisam emular fielmente um determinado tipo de hardware, os dispositivos emulados podem sofrer uma perda de desempenho significativa em comparação com os dispositivos físicos correspondentes ou dispositivos virtuais mais otimizados.
Os seguintes tipos de dispositivos emulados são suportados:
- CPUs virtuais (vCPUs), com uma grande variedade de modelos de CPU disponíveis. O impacto no desempenho da emulação depende significativamente das diferenças entre a CPU hospedeira e a vCPU emulada.
- Componentes do sistema emulado, tais como controladores de barramento PCI
- Controladores de armazenamento emulado, tais como SATA, SCSI ou mesmo IDE
- Dispositivos de som emulado, tais como ICH9, ICH6 ou AC97
- Placas gráficas emuladas, tais como as placas VGA ou QXL
- Dispositivos de rede emulada, tais como rtl8139
- Dispositivos paravirtualizados
A paravirtualização fornece um método rápido e eficiente para expor dispositivos virtuais a VMs. Os dispositivos paravirtualizados expõem interfaces que são projetadas especificamente para uso em VMs, e assim aumentam significativamente o desempenho do dispositivo. O RHEL 8 fornece dispositivos paravirtualizados para VMs usando a API virtio como uma camada entre o hipervisor e a VM. A desvantagem desta abordagem é que ela requer um driver de dispositivo específico no sistema operacional convidado.
É recomendado o uso de dispositivos paravirtualizados em vez de dispositivos emulados para VM sempre que possível, notadamente se estiverem executando aplicações intensivas de E/S. Os dispositivos paravirtualizados diminuem a latência de E/S e aumentam a produção de E/S, em alguns casos aproximando-os muito do desempenho de metais nobres. Outros dispositivos paravirtualizados também adicionam funcionalidade às VMs que não estão disponíveis de outra forma.
Os seguintes tipos de dispositivos paravirtualizados são suportados:
-
O dispositivo de rede paravirtualizada (
virtio-net
). Controladores de armazenamento paravirtualizados:
-
virtio-blk
- fornece emulação de dispositivos em bloco. -
virtio-scsi
- fornece uma emulação SCSI mais completa.
-
- O relógio paravirtualizado.
-
O dispositivo serial paravirtualizado (
virtio-serial
). O dispositivo balão (
virtio-balloon
), usado para compartilhar informações sobre o uso da memória do convidado com o hipervisor.Observe, entretanto, que o dispositivo de balão também requer que o serviço de balão seja instalado.
-
O gerador de números aleatórios paravirtualizado (
virtio-rng
). -
A placa gráfica paravirtualizada (
QXL
).
-
O dispositivo de rede paravirtualizada (
- Dispositivos fisicamente compartilhados
Certas plataformas de hardware permitem às VMs acessar diretamente vários dispositivos e componentes de hardware. Este processo é conhecido como device assignment ou passthrough.
Quando anexados desta forma, alguns aspectos do dispositivo físico estão diretamente disponíveis para a VM como o seriam para uma máquina física. Isto proporciona um desempenho superior para o dispositivo quando usado na VM. Entretanto, os dispositivos fisicamente conectados a uma VM tornam-se indisponíveis ao host, e também não podem ser migrados.
No entanto, alguns dispositivos podem ser shared em várias VMs. Por exemplo, um único dispositivo físico pode, em certos casos, fornecer múltiplos mediated devices, que podem então ser atribuídos a diferentes VMs.
Os seguintes tipos de dispositivos de passthrough são suportados:
- Atribuição de dispositivos de E/S de Função Virtual (VFIO) - expõe com segurança os dispositivos a aplicações ou VMs usando DMA reforçado por hardware e isolamento interrompido.
- USB, PCI e SCSI passthrough - exponha os barramentos padrão comuns da indústria diretamente às VMs, a fim de disponibilizar suas características específicas ao software convidado.
- Virtualização de E/S de raiz única (SR-IOV) - uma especificação que permite o isolamento reforçado de recursos PCI Express. Isto torna seguro e eficiente a divisão de um único recurso PCI físico em funções PCI virtuais. É comumente usado para placas de interface de rede (NICs).
- N_Port ID virtualization (NPIV) - uma tecnologia de canal de fibra para compartilhar um único adaptador host bus físico (HBA) com várias portas virtuais.
- GPUs e vGPUs - aceleradores para tipos específicos de cargas de trabalho gráficas ou computacionais. Algumas GPUs podem ser anexadas diretamente a uma VM, enquanto certos tipos também oferecem a capacidade de criar GPUs virtuais (vGPUs) que compartilham o hardware físico subjacente.
10.6. Gerenciamento de dispositivos USB virtuais
Ao utilizar uma máquina virtual (VM), você pode acessar e controlar um dispositivo USB, como uma unidade flash ou uma câmera web, que é anexado ao sistema host. Neste cenário, o sistema host passa o controle do dispositivo para a VM. Isto também é conhecido como um USB-passthrough.
As seções seguintes fornecem informações sobre o uso da linha de comando para:
- Anexar um dispositivo USB a uma VM
- Remover um dispositivo USB de um VM
10.6.1. Fixação de dispositivos USB em máquinas virtuais
Para anexar um dispositivo USB a uma máquina virtual (VM), você pode incluir as informações do dispositivo USB no arquivo de configuração XML da VM.
Pré-requisitos
- Certifique-se de que o dispositivo pelo qual você deseja passar para o VM esteja anexado ao host.
Procedimento
Localize os valores do barramento e do dispositivo USB que você deseja anexar à VM.
Por exemplo, o seguinte comando exibe uma lista de dispositivos USB anexados ao host. O dispositivo que usaremos neste exemplo é anexado no ônibus 001 como dispositivo 005.
# lsusb [...] Bus 001 Device 003: ID 2567:0a2b Intel Corp. Bus 001 Device 005: ID 0407:6252 Kingston River 2.0 [...]
Use o utilitário
virt-xml
junto com o argumento--add-device
.Por exemplo, o seguinte comando anexa um pen drive USB ao VM
Library
.# virt-xml Library --add-device --hostdev 001.005 Domain 'Library' defined successfully.
Para anexar um dispositivo USB a uma VM em execução, adicione o argumento --update
ao comando anterior.
Etapas de verificação
- Execute o VM e teste se o dispositivo está presente e funciona como esperado.
Use o comando
virsh dumpxml
para ver se a definição XML do dispositivo foi adicionada à seção <devices> no arquivo de configuração XML da VM.# virsh dumpxml Library [...] <hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x0407'/> <product id='0x6252'/> <address bus='1' device='5'/> </source> <alias name='hostdev0'/> <address type='usb' bus='0' port='3'/> </hostdev> [...]
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.6.2. Remoção de dispositivos USB de máquinas virtuais
Para remover um dispositivo USB de uma máquina virtual (VM), você pode remover as informações do dispositivo USB da configuração XML da VM.
Procedimento
Localize os valores do barramento e do dispositivo USB que você deseja remover da VM.
Por exemplo, o seguinte comando exibe uma lista de dispositivos USB anexados ao host. O dispositivo que usaremos neste exemplo é anexado no ônibus 001 como dispositivo 005.
# lsusb [...] Bus 001 Device 003: ID 2567:0a2b Intel Corp. Bus 001 Device 005: ID 0407:6252 Kingston River 2.0 [...]
Use o utilitário
virt-xml
junto com o argumento--remove-device
.Por exemplo, o seguinte comando remove um pen drive USB, anexado ao host como dispositivo 005 no ônibus 001, do
Library
VM.# virt-xml Library --remove-device --hostdev 001.005 Domain 'Library' defined successfully.
Para remover um dispositivo USB de um VM em execução, adicione o argumento --update
ao comando anterior.
Etapas de verificação
- Execute o VM e verifique se o dispositivo foi removido da lista de dispositivos.
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.6.3. Recursos adicionais
- Para informações sobre o gerenciamento de outros tipos de dispositivos, veja Seção 10.2, “Fixação de dispositivos em máquinas virtuais”.
10.7. Gerenciamento de unidades ópticas virtuais
Ao utilizar uma máquina virtual (VM), você pode acessar informações armazenadas em uma imagem ISO no host. Para fazer isso, anexe a imagem ISO à VM como uma unidade óptica virtual, como um drive de CD ou um drive de DVD.
As seções seguintes fornecem informações sobre o uso da linha de comando para:
- Anexar uma unidade e uma imagem ISO a uma VM
- Substituir uma imagem ISO em um drive óptico virtual
- Remover uma imagem ISO de um drive óptico virtual
- Remova um drive do VM
10.7.1. Fixação de drives ópticos em máquinas virtuais
Para anexar uma imagem ISO como unidade óptica virtual, edite o arquivo de configuração XML da máquina virtual (VM) e adicione a nova unidade.
Pré-requisitos
- Você deve armazenar a imagem ISO no host local.
- Você deve conhecer o caminho para a imagem ISO.
Procedimento
Use o utilitário
virt-xml
com o argumento--add-device
.Por exemplo, o seguinte comando anexa a imagem ISO
Doc10
, armazenada no diretório/MC/tank/
, àDN1
VM.# virt-xml DN1 --add-device --disk /MC/tank/Doc10.iso,device=cdrom Domain 'DN1' defined successfully.
Etapas de verificação
- Execute o VM e teste se o dispositivo está presente e funciona como esperado.
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.7.2. Substituição de imagens ISO em unidades ópticas virtuais
Para substituir uma imagem ISO anexada como unidade óptica virtual a uma máquina virtual (VM), edite o arquivo de configuração XML da VM e especifique a substituição.
Pré-requisitos
- Você deve armazenar a imagem ISO no host local.
- Você deve conhecer o caminho para a imagem ISO.
Procedimento
Localize o dispositivo alvo onde o CD-ROM está anexado ao VM. Você pode encontrar esta informação no arquivo de configuração XML da VM.
Por exemplo, o seguinte comando exibe o arquivo de configuração XML da
DN1
VM, onde o dispositivo alvo do CD-ROM ésda
.# virsh dumpxml DN1 ... <disk> ... <source file='/MC/tank/Doc10.iso'/> <target dev='sda' bus='sata'/> ... </disk> ...
Use o utilitário
virt-xml
com o argumento--edit
.Por exemplo, o seguinte comando substitui a imagem ISO
Doc10
, anexada àDN1
VM no targetsda
, com a imagem ISODrDN
armazenada no diretório/Dvrs/current/
.# virt-xml DN1 --edit target=sda --disk /Dvrs/current/DrDN.iso Domain 'DN1' defined successfully.
Etapas de verificação
- Execute o VM e teste se o dispositivo for substituído e funcionar como esperado.
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.7.3. Remoção de imagens ISO de unidades ópticas virtuais
Para remover uma imagem ISO de uma unidade óptica virtual anexada a uma máquina virtual (VM), edite o arquivo de configuração XML da VM.
Procedimento
Localize o dispositivo alvo onde o CD-ROM está anexado ao VM. Você pode encontrar esta informação no arquivo de configuração XML da VM.
Por exemplo, o seguinte comando exibe o arquivo de configuração XML da
DN1
VM, onde o dispositivo alvo do CD-ROM ésda
.# virsh dumpxml DN1 ... <disk> ... <source file='/Dvrs/current/DrDN'/> <target dev='sda' bus='sata'/> ... </disk> ...
Use o utilitário
virt-xml
com o argumento--edit
.Por exemplo, o seguinte comando remove a imagem ISO
DrDN
da unidade de CD anexada àDN1
VM.# virt-xml DN1 --edit target=sda --disk path= Domain 'DN1' defined successfully.
Etapas de verificação
- Execute o VM e verifique se a imagem não está mais disponível.
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.7.4. Remoção de drives ópticos de máquinas virtuais
Para remover um drive óptico anexado a uma máquina virtual (VM), edite o arquivo de configuração XML da VM.
Procedimento
Localize o dispositivo alvo onde o CD-ROM está anexado ao VM. Você pode encontrar esta informação no arquivo de configuração XML da VM.
Por exemplo, o seguinte comando exibe o arquivo de configuração XML da
DN1
VM, onde o dispositivo alvo do CD-ROM ésda
.# virsh dumpxml DN1 ... <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='sda' bus='sata'/> ... </disk> ...
Use o utilitário
virt-xml
com o argumento--remove-device
.Por exemplo, o seguinte comando remove o drive óptico anexado como alvo
sda
do siteDN1
VM.# virt-xml DN1 --remove-device --disk target=sda Domain 'DN1' defined successfully.
Etapas de verificação
- Confirme que o dispositivo não está mais listado no arquivo de configuração XML da VM.
Recursos adicionais
- Para outros argumentos, veja a página de manual virt-xml(1).
10.7.5. Recursos adicionais
- Para informações sobre o gerenciamento de outros tipos de dispositivos, veja Seção 10.2, “Fixação de dispositivos em máquinas virtuais”.
10.8. Gerenciamento de dispositivos SR-IOV
Um dispositivo virtual emulado freqüentemente usa mais CPU e memória do que um dispositivo de rede de hardware. Isto pode limitar o desempenho de uma máquina virtual (VM). Entretanto, se algum dispositivo em seu host de virtualização suportar Virtualização de E/S de raiz única (SR-IOV), você pode usar este recurso para melhorar o desempenho do dispositivo, e possivelmente também o desempenho geral de suas VMs.
10.8.1. O que é SR-IOV?
A virtualização de E/S de raiz única (SR-IOV) é uma especificação que permite que um único dispositivo PCI Express (PCIe) apresente vários dispositivos PCI separados, chamados virtual functions (VFs), para o sistema host. Cada um desses dispositivos:
- É capaz de fornecer o mesmo ou similar serviço que o dispositivo PCIe original.
- Aparece em um endereço diferente no barramento PCI hospedeiro.
- Pode ser atribuído a um VM diferente usando a atribuição VFIO.
Por exemplo, um único dispositivo de rede capaz de SR-IOV pode apresentar VFs a várias VMs. Enquanto todas as VFs utilizam a mesma placa física, a mesma conexão de rede e o mesmo cabo de rede, cada uma das VMs controla diretamente seu próprio dispositivo de rede de hardware, e não utiliza recursos extras do host.
Como funciona o SR-IOV
A funcionalidade SR-IOV é possível graças à introdução das seguintes funções PCIe:
- Physical functions (PFs) - Uma função PCIe que fornece a funcionalidade de seu dispositivo (por exemplo, rede) para o host, mas também pode criar e gerenciar um conjunto de VFs. Cada dispositivo capaz de SR-IOV tem uma ou mais PFs.
- Virtual functions (VFs) - Funções de PCIe leves que se comportam como dispositivos independentes. Cada VF é derivada de uma PF. O número máximo de VFs que um dispositivo pode ter depende do hardware do dispositivo. Cada VF pode ser atribuída apenas a uma única VM de cada vez, mas uma VM pode ter várias VFs atribuídas a ela.
As VMs reconhecem as VFs como dispositivos virtuais. Por exemplo, uma VF criada por um dispositivo de rede SR-IOV aparece como uma placa de rede para uma VM à qual é atribuída, da mesma forma que uma placa de rede física aparece para o sistema host.
Figura 10.1. Arquitetura SR-IOV

Benefícios
As principais vantagens de usar SR-IOV VFs em vez de dispositivos emulados são:
- Melhoria do desempenho
- Redução do uso de CPU e recursos de memória do host
Por exemplo, uma VF anexada a um VM como um vNIC tem um desempenho quase igual ao de um DNI físico, e muito melhor do que os DNIs paravirtualizados ou emulados. Em particular, quando várias VFs são usadas simultaneamente em um único host, os benefícios de desempenho podem ser significativos.
Desvantagens
- Para modificar a configuração de um PF, é necessário primeiro alterar o número de VFs expostas pelo PF para zero. Portanto, você também precisa remover os dispositivos fornecidos por essas VFs da VM à qual elas estão atribuídas.
- Uma VM com um dispositivo VFIO anexado, incluindo VFs SR-IOV, não pode ser migrada para outro host. Em alguns casos, você pode contornar esta limitação emparelhando o dispositivo designado com um dispositivo emulado. Por exemplo, você pode unir uma VF em rede atribuída a um vNIC emulado, e remover a VF antes da migração.
- Além disso, os dispositivos atribuídos pela VFIO requerem o acionamento da memória VM, o que aumenta o consumo de memória da VM e impede o uso de balonamento de memória na VM.
Recursos adicionais
- Para uma lista dos tipos de dispositivos que suportam SR-IOV, ver Seção 10.8.3, “Dispositivos suportados para a tarefa SR-IOV”.
10.8.2. Fixação de dispositivos de rede SR-IOV em máquinas virtuais
Para anexar um dispositivo de rede SR-IOV a uma máquina virtual (VM) em um host Intel ou AMD, você deve criar uma função virtual (VF) a partir de uma interface de rede capaz de SR-IOV no host e atribuir a VF como um dispositivo a uma VM especificada. Para detalhes, veja as seguintes instruções.
Pré-requisitos
A CPU e o firmware de seu host suportam a Unidade de Gerenciamento de Memória I/O (IOMMU).
- Se utilizar uma CPU Intel, ela deve suportar a Tecnologia de Virtualização Intel para E/S direcionada (VT-d).
- Se estiver usando uma CPU AMD, ela deve suportar a funcionalidade AMD-Vi.
O sistema host usa o Serviço de Controle de Acesso (ACS) para fornecer acesso direto à memória (DMA) isolação para a topologia PCIe. Verifique isto com o fornecedor do sistema.
Para informações adicionais, consulte Considerações sobre Hardware para implementação do SR-IOV.
O dispositivo físico de rede suporta SR-IOV. Para verificar se algum dispositivo de rede em seu sistema suporta SR-IOV, use o comando
lspci -v
e procureSingle Root I/O Virtualization (SR-IOV)
na saída.# lspci -v [...] 02:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) Subsystem: Intel Corporation Gigabit ET Dual Port Server Adapter Flags: bus master, fast devsel, latency 0, IRQ 16, NUMA node 0 Memory at fcba0000 (32-bit, non-prefetchable) [size=128K] [...] Capabilities: [150] Alternative Routing-ID Interpretation (ARI) Capabilities: [160] Single Root I/O Virtualization (SR-IOV) Kernel driver in use: igb Kernel modules: igb [...]
A interface da rede anfitriã que você deseja usar para criar VFs está em execução. Por exemplo, para ativar a interface eth1 e verificar se ela está em execução:
# ip link set eth1 up # ip link show eth1 8: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000 link/ether a0:36:9f:8f:3f:b8 brd ff:ff:ff:ff:ff:ff vf 0 MAC 00:00:00:00:00:00, spoof checking on, link-state auto vf 1 MAC 00:00:00:00:00:00, spoof checking on, link-state auto vf 2 MAC 00:00:00:00:00:00, spoof checking on, link-state auto vf 3 MAC 00:00:00:00:00:00, spoof checking on, link-state auto
Para que o dispositivo SR-IOV possa funcionar, o recurso IOMMU deve estar habilitado na BIOS e no kernel do host. Para fazer isso:
Em um host Intel, habilite o VT-d:
Se seu host Intel usa múltiplas entradas de inicialização:
Edite o arquivo
/etc/default/grub
e adicione os parâmetrosintel_iommu=on
eiommu=pt
no final da linha GRUB_CMDLINE_LINUX:GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel_dell-per730-27-swap rd.lvm.lv=rhel_dell-per730-27/root rd.lvm.lv=rhel_dell-per730-27/swap console=ttyS0,115200n81 intel_iommu=on iommu=pt"
Regenerar a configuração do GRUB:
# grub2-mkconfig -o /boot/grub2/grub.cfg
- Reiniciar o anfitrião.
Se seu host Intel usa uma única entrada de inicialização:
Regenerar a configuração do GRUB com o parâmetro
intel_iommu=on
:# grubby --args="intel_iommu=on" --update-kernel DEFAULT
- Reiniciar o anfitrião.
Em um host AMD, habilite o AMD-Vi:
Se seu host AMD usa múltiplas entradas de inicialização:
Edite o arquivo
/etc/default/grub
e adicione os parâmetrosiommu=pt
eamd_iommu=on
no final da linha GRUB_CMDLINE_LINUX:GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/rhel_dell-per730-27-swap rd.lvm.lv=rhel_dell-per730-27/root rd.lvm.lv=rhel_dell-per730-27/swap console=ttyS0,115200n81 iommu=pt amd_iommu=on"
Regenerar a configuração do GRUB:
# grub2-mkconfig -o /boot/grub2/grub.cfg
- Reiniciar o anfitrião.
Se seu host AMD usa uma única entrada de inicialização:
Regenerar a configuração do GRUB com o parâmetro
iommu=pt
:# grubby --args="iommu=pt" --update-kernel DEFAULT
- Reiniciar o anfitrião.
Procedimento
Optional: Confirme o número máximo de VFs que seu dispositivo de rede pode usar. Para isso, use o seguinte comando e substitua eth1 pelo seu dispositivo de rede compatível com SR-IOV.
# cat /sys/class/net/eth1/device/sriov_totalvfs 7
Use o seguinte comando para criar uma função virtual (VF):
# echo VF-number > /sys/class/net/network-interface/device/sriov_numvfs
No comando, substitua:
- VF-number com o número de VFs que você deseja criar no PF.
- network-interface com o nome da interface da rede para a qual as VFs serão criadas.
O exemplo a seguir cria 2 VFs a partir da interface de rede eth1:
# echo 2 > /sys/class/net/eth1/device/sriov_numvfs
Verificar se as VFs foram adicionadas:
# lspci | grep Ethernet 01:00.0 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) 01:00.1 Ethernet controller: Intel Corporation Ethernet Controller 10-Gigabit X540-AT2 (rev 01) 07:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01) 07:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
Torne as VFs criadas persistentes, criando uma regra udev para a interface de rede que você usou para criar as VFs. Por exemplo, para a interface eth1, crie o arquivo
/etc/udev/rules.d/eth1.rules
, e acrescente a seguinte linha:ACTION=="add", SUBSYSTEM=="net", ENV{ID_NET_DRIVER}=="ixgbe", ATTR{device/sriov_numvfs}="2"
Isto assegura que as duas VFs que usam o driver
ixgbe
estarão automaticamente disponíveis para a interfaceeth1
quando o host iniciar.AtençãoAtualmente, este comando não funciona corretamente quando se tenta tornar as VFs persistentes nos adaptadores Broadcom NetXtreme II BCM57810. Além disso, anexar VFs baseadas nestes adaptadores às VMs do Windows não é atualmente confiável.
Use o comando
virsh nodedev-list
para verificar que libvirt reconhece os dispositivos VF adicionados. Por exemplo, o seguinte mostra que os PFs 01:00.0 e 07:00.0 do exemplo anterior foram convertidos com sucesso em VFs:# virsh nodedev-list | grep pci_ pci_0000_01_00_0 pci_0000_01_00_1 pci_0000_07_10_0 pci_0000_07_10_1 [...]
Obter os valores
bus
,slot
efunction
de uma PF e uma de suas FVs correspondentes. Por exemplo, parapci_0000_01_00_0
epci_0000_01_00_1
:# virsh nodedev-dumpxml pci_0000_01_00_0 <device> <name>pci_0000_01_00_0</name> <path>/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0</path> <parent>pci_0000_00_01_0</parent> <driver> <name>ixgbe</name> </driver> <capability type='pci'> <domain>0</domain> <bus>1</bus> <slot>0</slot> <function>0</function> [...] # virsh nodedev-dumpxml pci_0000_01_00_1 <device> <name>pci_0000_01_00_1</name> <path>/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.1</path> <parent>pci_0000_00_01_0</parent> <driver> <name>vfio-pci</name> </driver> <capability type='pci'> <domain>0</domain> <bus>1</bus> <slot>0</slot> <function>1</function> [...]
Crie um arquivo XML temporário e adicione uma configuração usando os valores obtidos no passo anterior:
bus
,slot
, efunction
. Por exemplo:<interface type='hostdev' managed='yes'> <source> <address type='pci' domain='0x0000' bus='0x03' slot='0x10' function='0x2'/> </source> </interface>
Adicione a VF a uma VM usando o arquivo temporário XML. Por exemplo, o seguinte anexa uma VF salva no
/tmp/holdmyfunction.xml
a uma VM em funcionamento testguest1 e garante que ela estará disponível após o reinício da VM:# virsh attach-device testguest1 /tmp/holdmyfunction.xml --live --config Device attached successfully.
Se isto for bem-sucedido, o sistema operacional convidado detecta uma nova placa de interface de rede.
10.8.3. Dispositivos suportados para a tarefa SR-IOV
Nem todos os dispositivos podem ser utilizados para SR-IOV. Os seguintes dispositivos foram testados e verificados como compatíveis com o SR-IOV no RHEL 8.
Dispositivos de rede
-
Controlador Ethernet Intel 82599ES 10 Gigabit - utiliza o driver
ixgbe
-
Controlador Ethernet Intel série XL710 - utiliza o driver
i40e
-
Cartões Adaptadores Ethernet Mellanox ConnectX-5 - use o driver
mlx5_core
-
Adaptador de rede Ethernet Intel XXV710 - utiliza o driver
i40e
-
Intel 82576 Gigabit Ethernet Controller - utiliza o driver
igb
-
Broadcom NetXtreme II BCM57810 - utiliza o driver
bnx2x
10.9. Fixação de dispositivos DASD em máquinas virtuais no IBM Z
Os dispositivos de armazenamento de acesso direto (DASDs) fornecem uma série de características específicas de armazenamento. Usando o recurso vfio-ccw
, você pode atribuir DASDs como dispositivos mediados a suas máquinas virtuais (VMs) em hosts IBM Z. Isto, por exemplo, torna possível para a VM acessar um conjunto de dados z/OS, ou compartilhar os DASDs atribuídos com uma máquina z/OS.
Pré-requisitos
- Seu sistema host está usando a arquitetura de hardware IBM Z e suporta o protocolo FICON.
- O VM alvo está usando um sistema operacional Linux convidado.
Os módulos de kernel necessários foram carregados no host. Para verificar, use:
# lsmod | grep vfio
A saída deve conter os seguintes módulos:
-
vfio_ccw
-
vfio_mdev
-
vfio_iommu_type1
-
- Você tem um dispositivo DASD de reposição para uso exclusivo da VM.
Procedimento
Obter o identificador de dispositivo do dispositivo DASD. O utilitário
lsdasd
o exibe comoBus-ID
.# lsdasd Bus-ID Status Name Device Type BlkSz Size Blocks ================================================================================ 0.0.002c active dasdh 94:0 ECKD 4096 21129MB 5409180
Nos comandos seguintes deste procedimento, substitua
0.0.002c
pelo identificador de dispositivo detectado de seu dispositivo.Obter o caminho de sub-canal do dispositivo DASD.
# lscss | grep 0.0.002c 0.0.002c 0.0.24ac 3390/0c 3990/e9 yes f0 f0 ff 01021112 00000000
Neste exemplo, o caminho do sub-canal é detectado como
0.0.24ac
. Nos comandos seguintes deste procedimento, substitua0.0.24ac
pelo caminho de sub-canal detectado de seu dispositivo.Desbloquear o dispositivo DASD de seu sub-canal no host.
# echo 0.0.002c > /sys/bus/ccw/devices/0.0.002c/driver/unbind
Desobstruir o sub-canal do motorista do sub-canal de E/S.
# echo 0.0.24ac > /sys/bus/css/devices/0.0.24ac/driver/unbind
Ligar o sub-canal ao motorista da passagem
vfio_ccw
.# echo 0.0.24ac > /sys/bus/css/drivers/vfio_ccw/bind
Gerar uma UUID.
# uuidgen 30820a6f-b1a5-4503-91ca-0c10ba12345a
Criar o dispositivo mediado DASD utilizando o UUID gerado
# echo "30820a6f-b1a5-4503-91ca-0c10ba12345a" > /sys/bus/css/devices/0.0.24ac/mdev_supported_types/vfio_ccw-io/create
Anexe o dispositivo mediado à VM. Para isso, use o utilitário
virsh edit
para editar a configuração XML da VM, adicione a seguinte seção ao XML, e substitua o valoruuid
pelo UUID gerado no passo anterior.<hostdev mode='subsystem' type='mdev' model='vfio-ccw'> <source> <address uuid="30820a6f-b1a5-4503-91ca-0c10ba12345a"/> </source> </hostdev>
Verificação
Obter o identificador que
libvirt
designou para o dispositivo DASD mediado. Para fazer isso, exibir a configuração XML da VM e procurar um dispositivovfio-ccw
.# virsh dumpxml vm-name <domain> [...] <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ccw'> <source> <address uuid='10620d2f-ed4d-437b-8aff-beda461541f9'/> </source> <alias name='hostdev0'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0009'/> </hostdev> [...] </domain>
Neste exemplo, o identificador atribuído ao dispositivo é
0.0.0009
.Entre no sistema operacional convidado da VM e confirme que o dispositivo está listado. Por exemplo:
# lscss | grep 0.0.0009 0.0.0009 0.0.0007 3390/0c 3990/e9 f0 f0 ff 12212231 00000000
Colocar o dispositivo online. Por exemplo:
# chccwdev -e 0.0009 Setting device 0.0.0009 online Done
Capítulo 11. Gerenciamento de armazenamento para máquinas virtuais
Você pode gerenciar o armazenamento de máquinas virtuais usando o CLI ou o console web.
Esta documentação fornece informações sobre como gerenciar o armazenamento de máquinas virtuais usando o comando virsh
.
11.1. Entendendo o armazenamento de máquinas virtuais
As seções seguintes fornecem informações sobre armazenamento para máquinas virtuais (VMs), incluindo informações sobre pools de armazenamento, volumes de armazenamento e como eles são usados para fornecer armazenamento para VMs.
11.1.1. Armazenamento de máquinas virtuais
A seguir, são fornecidas informações sobre como os pools e volumes de armazenamento são utilizados para criar armazenamento para máquinas virtuais (VMs).
Um storage pool é uma quantidade de armazenamento gerenciada pelo host e reservada para uso pelos VMs. Storage volumes pode ser criado a partir de espaço nos pools de armazenamento. Cada volume de armazenamento pode ser atribuído a uma VM como um dispositivo de bloco, como um disco, em um ônibus convidado.
Os pools e volumes de armazenamento são gerenciados utilizando libvirt
. Com o protocolo remoto libvirt
, você pode gerenciar todos os aspectos do armazenamento de VM. Estas operações podem ser realizadas em um host remoto. Como resultado, um aplicativo de gerenciamento que utiliza libvirt
, como o console web RHEL, pode ser utilizado para realizar todas as tarefas necessárias para configurar o armazenamento para uma VM.
A API libvirt
pode ser usada para consultar a lista de volumes no pool de armazenamento ou para obter informações sobre a capacidade, alocação e armazenamento disponível no pool de armazenamento. Um volume de armazenamento no pool de armazenamento pode ser consultado para obter informações tais como alocação e capacidade, que podem ser diferentes para volumes esparsos.
Para os pools de armazenamento que o suportam, a API libvirt
pode ser usada para criar, clonar, redimensionar e excluir volumes de armazenamento. As APIs também podem ser usadas para carregar dados para volumes de armazenamento, baixar dados de volumes de armazenamento ou apagar dados de volumes de armazenamento.
Uma vez iniciado um pool de armazenamento, um volume de armazenamento pode ser atribuído a uma VM usando o nome do pool de armazenamento e o nome do volume de armazenamento em vez do caminho do host para o volume nos arquivos de configuração XML da VM.
11.1.2. Piscinas de armazenagem
Um pool de armazenamento é um arquivo, diretório ou dispositivo de armazenamento, gerenciado por libvirt
para fornecer armazenamento a máquinas virtuais (VMs). Os pools de armazenamento são divididos em volumes de armazenamento que armazenam imagens de VMs ou são anexados às VMs como armazenamento adicional. Várias VMs podem compartilhar o mesmo pool de armazenamento, permitindo uma melhor alocação de recursos de armazenamento.
As piscinas de armazenamento podem ser persistentes ou transitórias:
- Um pool de armazenamento persistente sobrevive a um reinício do sistema da máquina hospedeira.
- Só existe uma piscina de armazenagem transitória até o reinício do host.
O comando virsh pool-define
é usado para criar um pool de armazenamento persistente, e o comando virsh pool-create
é usado para criar um pool de armazenamento transitório.
Tipos de armazenagem de pool de armazenagem
Os pools de armazenamento podem ser locais ou em rede (compartilhados):
Local storage pools
Os pools de armazenamento locais são anexados diretamente ao servidor host. Eles incluem diretórios locais, discos diretamente anexados, partições físicas e grupos de volume Logical Volume Management (LVM) em dispositivos locais.
Os pools de armazenamento local são úteis para o desenvolvimento, testes e pequenas implantações que não requerem migração ou um grande número de VMs.
Networked (shared) storage pools
Os pools de armazenamento em rede incluem dispositivos de armazenamento compartilhados através de uma rede usando protocolos padrão.
Exemplo de uso do pool de armazenagem
Para ilustrar as opções disponíveis para o gerenciamento de pools de armazenamento, o seguinte descreve um exemplo de servidor NFS que utiliza mount -t nfs nfs.example.com:/path/to/share /path/to/data
.
Um administrador de armazenamento poderia definir um NFS Storage Pool no host de virtualização para descrever o caminho do servidor exportado e o caminho de destino do cliente. Isto permitirá que libvirt
realize a montagem automaticamente quando libvirt
for iniciado ou conforme necessário enquanto libvirt
estiver rodando. Os arquivos com o diretório exportado do servidor NFS são listados como volumes de armazenamento dentro do pool de armazenamento NFS.
Quando o volume de armazenamento é adicionado à VM, o administrador não precisa adicionar o caminho de destino ao volume. Eles apenas precisam adicionar o pool de armazenamento e o volume de armazenamento pelo nome. Portanto, se o caminho do cliente alvo mudar, isso não afeta a VM.
Quando o pool de armazenamento é iniciado, libvirt
monta o compartilhamento no diretório especificado, como se o administrador do sistema tivesse feito o login e executado mount nfs.example.com:/path/to/share /vmdata
. Se o pool de armazenamento estiver configurado para reiniciar automaticamente, libvirt
assegura que o disco compartilhado NFS seja montado no diretório especificado quando libvirt
for iniciado.
Uma vez iniciado o pool de armazenamento, os arquivos no disco compartilhado NFS são relatados como volumes de armazenamento, e os caminhos dos volumes de armazenamento podem ser consultados usando a API libvirt
. Os caminhos dos volumes de armazenamento podem então ser copiados para a seção da definição XML de uma VM que descreve o armazenamento de origem para os dispositivos de bloco da VM. No caso do NFS, uma aplicação que utiliza a API libvirt
pode criar e excluir volumes de armazenamento no pool de armazenamento (arquivos no compartilhamento NFS) até o limite do tamanho do pool (a capacidade de armazenamento do compartilhamento).
Parar (destruir) um pool de armazenamento retira a abstração dos dados, mas mantém os dados intactos.
Nem todos os tipos de pool de armazenamento suportam a criação e a eliminação de volumes. A parada do pool de armazenamento (pool-destroy
) desfaz a operação inicial, neste caso, desmontando a parte do NFS. Os dados sobre o compartilhamento não são modificados pela operação de destruição, a despeito do que o nome do comando sugere. Para mais detalhes, veja man virsh
.
Tipos de pool de armazenamento suportados e não suportados
A seguir, uma lista dos tipos de pool de armazenagem suportados pela RHEL:
- Piscinas de armazenamento baseadas em diretórios
- Piscinas de armazenamento em disco
- Piscinas de armazenamento divisórias
- Piscinas de armazenagem GlusterFS
- piscinas de armazenamento baseadas em iSCSI
- Piscinas de armazenamento baseadas em LVM
- Piscinas de armazenamento baseadas em NFS
- Piscinas de armazenamento baseadas em SCSI com dispositivos vHBA
- Piscinas de armazenamento multipath-based
- Piscinas de armazenagem com base em RBD
A seguir está uma lista dos tipos de pool de armazenamento libvirt
que não são suportados pela RHEL:
- Piscinas de armazenagem com base em ovinos
- Piscinas de armazenagem em andares
- Piscinas de armazenagem baseadas em ZFS
11.1.3. Volumes de armazenamento
Os pools de armazenamento estão divididos em storage volumes
. Os volumes de armazenamento são abstrações de partições físicas, volumes lógicos LVM, imagens de disco baseadas em arquivos e outros tipos de armazenamento manipulados por libvirt
. Os volumes de armazenamento são apresentados às VMs como dispositivos de armazenamento local, tais como discos, independentemente do hardware subjacente.
Na máquina host, um volume de armazenamento é referido por seu nome e um identificador para o pool de armazenamento do qual ele deriva. Na linha de comando virsh
, isto toma a forma --pool storage_pool volume_name
.
Por exemplo, para exibir informações sobre um volume chamado firstimage no pool guest_images.
# virsh vol-info --pool guest_images firstimage
Name: firstimage
Type: block
Capacity: 20.00 GB
Allocation: 20.00 GB
11.2. Gerenciamento de armazenamento para máquinas virtuais usando o CLI
A documentação a seguir fornece informações sobre como gerenciar o armazenamento da máquina virtual (VM) usando o utilitário de linha de comando virsh
.
Usando virsh
, você pode adicionar, remover e modificar o armazenamento de VM, assim como visualizar informações sobre o armazenamento de VM.
Em muitos casos, o armazenamento para uma VM é criado ao mesmo tempo em que a VM é criada. Portanto, as informações a seguir referem-se principalmente ao gerenciamento avançado do armazenamento da VM.
11.2.1. Visualização de informações de armazenamento de máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a visualização das informações sobre pools e volumes de armazenamento usando o CLI.
11.2.1.1. Visualização das informações do pool de armazenamento usando o CLI
Usando o CLI, você pode visualizar uma lista de todas as piscinas de armazenamento com detalhes limitados ou completos sobre as piscinas de armazenamento. Você também pode filtrar os pools de armazenamento listados.
Procedimento
Use o comando
virsh pool-list
para visualizar as informações do pool de armazenamento.# virsh pool-list --all --details Name State Autostart Persistent Capacity Allocation Available default running yes yes 48.97 GiB 23.93 GiB 25.03 GiB Downloads running yes yes 175.62 GiB 62.02 GiB 113.60 GiB RHEL8-Storage-Pool running yes yes 214.62 GiB 93.02 GiB 168.60 GiB
Recursos adicionais
-
Para obter informações sobre as opções disponíveis em
virsh pool-list
, use o comandovirsh pool-list --help
.
11.2.1.2. Visualização de informações sobre o volume de armazenamento usando o CLI
A seguir, informações sobre a visualização das informações sobre os pools de armazenamento. Você pode visualizar uma lista de todos os pools de armazenagem em um pool de armazenagem especificado e detalhes sobre um pool de armazenagem especificado.
Procedimento
Use o comando
virsh vol-list
para listar os volumes de armazenamento em um pool de armazenamento especificado.# virsh vol-list --pool RHEL8-Storage-Pool --details Name Path Type Capacity Allocation --------------------------------------------------------------------------------------------- .bash_history /home/VirtualMachines/.bash_history file 18.70 KiB 20.00 KiB .bash_logout /home/VirtualMachines/.bash_logout file 18.00 B 4.00 KiB .bash_profile /home/VirtualMachines/.bash_profile file 193.00 B 4.00 KiB .bashrc /home/VirtualMachines/.bashrc file 1.29 KiB 4.00 KiB .git-prompt.sh /home/VirtualMachines/.git-prompt.sh file 15.84 KiB 16.00 KiB .gitconfig /home/VirtualMachines/.gitconfig file 167.00 B 4.00 KiB RHEL8_Volume.qcow2 /home/VirtualMachines/RHEL8_Volume.qcow2 file 60.00 GiB 13.93 GiB
Use o comando
virsh vol-info
para listar os volumes de armazenamento em um pool de armazenamento especificado.# vol-info --pool RHEL8-Storage-Pool --vol RHEL8_Volume.qcow2 Name: RHEL8_Volume.qcow2 Type: file Capacity: 60.00 GiB Allocation: 13.93 GiB
11.2.2. Criação e atribuição de armazenamento para máquinas virtuais usando o CLI
O seguinte é um procedimento de alto nível para a criação e atribuição de armazenamento para máquinas virtuais (VMs):
Create storage pools
Criar um ou mais pools de armazenamento a partir dos meios de armazenamento disponíveis. Para uma lista dos tipos de pools de armazenamento suportados, consulte Tipos de pools de armazenamento.
Para criar pools de armazenamento persistentes, use os comandos
virsh pool-define-as
evirsh pool-define
.O comando
virsh pool-define-as
coloca as opções na linha de comando. O comandovirsh pool-define
usa um arquivo XML para as opções do pool.Para criar pools de armazenamento temporário, utilize os comandos
virsh pool-create
evirsh pool-create-as
.O comando
virsh pool-create-as
coloca as opções na linha de comando. O comandovirsh pool-create
usa um arquivo XML para as opções do pool.
Create storage volumes
Criar um ou mais volumes de armazenamento a partir dos pools de armazenamento disponíveis.
Assign storage devices to a VM
Atribuir um ou mais dispositivos de armazenamento abstraídos dos volumes de armazenamento a uma VM.
As seções seguintes fornecem informações sobre a criação e atribuição de armazenamento usando o CLI:
11.2.2.1. Criação e atribuição de armazenamento baseado em diretório para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em diretórios, e a atribuição de volumes a máquinas virtuais.
11.2.2.1.1. Criação de pools de armazenamento baseados em diretórios usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados em diretórios.
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento de diretórios:
# virsh pool-capabilities | grep "'dir' supported='yes'"
Se o comando exibir qualquer saída, os pools de diretórios são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento do tipo diretor. Por exemplo, para criar um pool de armazenamento chamadoguest_images_dir
que utiliza o diretório /guest_images:# virsh pool-define-as guest_images_dir dir --target "/guest_images" Pool guest_images_dir defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.1.2, “Parâmetros do pool de armazenamento baseado em diretório”.
Create the storage pool target path
Use o comando
virsh pool-build
para criar um caminho de destino do pool de armazenamento para um pool de armazenamento do sistema de arquivos pré-formatado, inicializar o dispositivo de fonte de armazenamento e definir o formato dos dados.# virsh pool-build guest_images_dir Pool guest_images_dir built # ls -la /guest_images total 8 drwx------. 2 root root 4096 May 31 19:38 . dr-xr-xr-x. 25 root root 4096 May 31 19:38 ..
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_dir inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_dir Pool guest_images_dir started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_dir Pool guest_images_dir marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_dir inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
.# virsh pool-info guest_images_dir Name: guest_images_dir UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.1.2. Parâmetros do pool de armazenamento baseado em diretório
Esta seção fornece informações sobre os parâmetros XML necessários para um pool de armazenamento baseado em diretório e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_dir
Parâmetros
A tabela a seguir fornece uma lista de parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em diretório.
Tabela 11.1. Parâmetros do pool de armazenamento baseado em diretório
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O caminho que especifica o alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
Exemplo
A seguir, um exemplo de arquivo XML para um pool de armazenamento baseado no diretório /guest_images
:
<pool type='dir'> <name>dirpool</name> <target> <path>/guest_images</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em diretórios, veja Seção 11.2.2.1.1, “Criação de pools de armazenamento baseados em diretórios usando o CLI”.
11.2.2.2. Criação e atribuição de armazenamento em disco para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em disco e a atribuição de volumes a máquinas virtuais.
11.2.2.2.1. Criação de pools de armazenamento baseados em disco usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados em disco.
Recomendações
Esteja atento ao seguinte antes de criar um pool de armazenamento baseado em disco:
-
Dependendo da versão do
libvirt
que estiver sendo usada, a dedicação de um disco a um pool de armazenamento pode reformatar e apagar todos os dados atualmente armazenados no dispositivo do disco. É altamente recomendável que você faça backup dos dados no dispositivo de armazenamento antes de criar um pool de armazenamento. VMs não devem ter acesso de escrita a discos inteiros ou dispositivos de bloqueio (por exemplo,
/dev/sdb
). Utilizar partições (por exemplo,/dev/sdb1
) ou volumes LVM.Se você passar um dispositivo de bloco inteiro para uma VM, a VM provavelmente o partirá ou criará seus próprios grupos LVM sobre ele. Isto pode fazer com que a máquina host detecte estas partições ou grupos LVM e cause erros.
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados em disco:
# virsh pool-capabilities | grep "'disk' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em disco são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento do tipo disco. Por exemplo, para criar um pool de armazenamento chamadoguest_images_disk
que utiliza a partição /dev/sdb1, e é montado no diretório /dev:# virsh pool-define-as guest_images_disk disk gpt --source-dev=/dev/sdb1 --target /dev Pool guest_images_disk defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.2.2, “Parâmetros do pool de armazenamento em disco”.
Create the storage pool target path
Use o comando
virsh pool-build
para criar um caminho de destino do pool de armazenamento para um pool de armazenamento de sistema de arquivos pré-formatado, inicializar o dispositivo de fonte de armazenamento e definir o formato dos dados.# virsh pool-build guest_images_disk Pool guest_images_disk built
NotaA construção do caminho de destino só é necessária para pools de armazenamento baseados em disco, em sistema de arquivos e lógicos. Se
libvirt
detectar que o formato de dados do dispositivo de armazenamento de origem difere do tipo de pool de armazenamento selecionado, a construção falha, a menos que ooverwrite
a opção é especificada.Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_disk inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_disk Pool guest_images_disk started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_disk Pool guest_images_disk marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_disk inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
.# virsh pool-info guest_images_disk Name: guest_images_disk UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.2.2. Parâmetros do pool de armazenamento em disco
Esta seção fornece informações sobre os parâmetros XML necessários para um pool de armazenamento baseado em disco e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_disk
Parâmetros
A tabela a seguir fornece uma lista de parâmetros necessários para o arquivo XML de um pool de armazenamento baseado em disco.
Tabela 11.2. Parâmetros do pool de armazenamento em disco
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O caminho que especifica o dispositivo de armazenamento. Por exemplo, |
|
O caminho que especifica o dispositivo alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
Exemplo
A seguir, um exemplo de um arquivo XML para um pool de armazenamento baseado em disco:
<pool type='disk'> <name>phy_disk</name> <source> <device path='/dev/sdb'/> <format type='gpt'/> </source> <target> <path>/dev</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em disco, veja Seção 11.2.2.2.1, “Criação de pools de armazenamento baseados em disco usando o CLI”.
11.2.2.3. Criação e atribuição de armazenamento baseado em sistema de arquivos para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em sistemas de arquivos, e a atribuição de volumes a máquinas virtuais.
11.2.2.3.1. Criação de pools de armazenamento baseados no sistema de arquivos usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados em sistemas de arquivos.
Recomendações
Não utilize este procedimento para atribuir um disco inteiro como um pool de armazenamento (por exemplo, /dev/sdb
). As VMs não devem ter acesso de escrita a discos inteiros ou dispositivos de bloco. Este método deve ser usado apenas para atribuir partições (por exemplo, /dev/sdb1
) aos pools de armazenamento.
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados no sistema de arquivos:
# virsh pool-capabilities | grep "'fs' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em arquivos são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento do tipo sistema de arquivos. Por exemplo, para criar um pool de armazenamento chamadoguest_images_fs
que utiliza a partição /dev/sdc1, e é montado no diretório /guest_images:# virsh pool-define-as guest_images_fs fs --source-dev /dev/sdc1 --target /guest_images Pool guest_images_fs defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.3.2, “Parâmetros do pool de armazenamento baseado no sistema de arquivos”.
Define the storage pool target path
Use o comando
virsh pool-build
para criar um caminho de destino do pool de armazenamento para um pool de armazenamento de sistema de arquivos pré-formatado, inicializar o dispositivo de fonte de armazenamento e definir o formato dos dados.# virsh pool-build guest_images_fs Pool guest_images_fs built # ls -la /guest_images total 8 drwx------. 2 root root 4096 May 31 19:38 . dr-xr-xr-x. 25 root root 4096 May 31 19:38 ..
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_fs Pool guest_images_fs started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_fs Pool guest_images_fs marked as autostarted
Verify the
Autostart
stateUse o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_fs inactive yes
Verify the storage pool
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
. Verifique se há um diretóriolost found
no caminho de destino no sistema de arquivos, indicando que o dispositivo está montado.# virsh pool-info guest_images_fs Name: guest_images_fs UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB # mount | grep /guest_images /dev/sdc1 on /guest_images type ext4 (rw) # ls -la /guest_images total 24 drwxr-xr-x. 3 root root 4096 May 31 19:47 . dr-xr-xr-x. 25 root root 4096 May 31 19:38 .. drwx------. 2 root root 16384 May 31 14:18 lost+found
11.2.2.3.2. Parâmetros do pool de armazenamento baseado no sistema de arquivos
A seguir, informações sobre os parâmetros necessários para um pool de armazenamento baseado em sistema de arquivos e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_fs
Parâmetros
A tabela a seguir fornece uma lista dos parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em sistema de arquivos.
Tabela 11.3. Parâmetros do pool de armazenamento baseado no sistema de arquivos
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O caminho que especifica a divisória. Por exemplo, |
|
O tipo de sistema de arquivo, por exemplo ext4. |
|
O caminho que especifica o alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
Exemplo
A seguir, um exemplo de arquivo XML para um pool de armazenamento baseado na partição /dev/sdc1
:
<pool type='fs'> <name>guest_images_fs</name> <source> <device path='/dev/sdc1'/> <format type='auto'/> </source> <target> <path>/guest_images</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em sistemas de arquivos, veja Seção 11.2.2.3.1, “Criação de pools de armazenamento baseados no sistema de arquivos usando o CLI”.
11.2.2.4. Criação e atribuição de armazenamento GlusterFS para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em GlusterFS, e a atribuição de volumes a máquinas virtuais.
11.2.2.4.1. Criação de pools de armazenamento baseados em GlusterFS usando o CLI
GlusterFS é um sistema de arquivo de espaço de usuário que utiliza o Sistema de Arquivo em Espaço de Usuário (FUSE). A seguir fornecemos instruções para a criação de pools de armazenamento baseados no GlusterFS.
Pré-requisitos
Antes de criar um pool de armazenamento baseado em GlusterFS em um host, prepare um Gluster.
Obter o endereço IP do servidor Gluster, listando seu status com o seguinte comando:
# gluster volume status Status of volume: gluster-vol1 Gluster process Port Online Pid ------------------------------------------------------------ Brick 222.111.222.111:/gluster-vol1 49155 Y 18634 Task Status of Volume gluster-vol1 ------------------------------------------------------------ There are no active volume tasks
-
Se não estiver instalado, instale o pacote
glusterfs-fuse
. Se não estiver habilitado, habilite o
virt_use_fusefs
boolean. Verifique se ele está habilitado.# setsebool virt_use_fusefs on # getsebool virt_use_fusefs virt_use_fusefs --> on
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados em GlusterFS:
# virsh pool-capabilities | grep "'gluster' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em GlusterFS são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento baseado em GlusterFS. Por exemplo, para criar um pool de armazenamento chamadoguest_images_glusterfs
que usa um servidor Gluster chamadogluster-vol1
com IP111.222.111.222
, e é montado no diretório raiz do servidor Gluster:# virsh pool-define-as --name guest_images_glusterfs --type gluster --source-host 111.222.111.222 --source-name gluster-vol1 --source-path / Pool guest_images_glusterfs defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.4.2, “Parâmetros do pool de armazenamento baseado em GlusterFS”.
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart -------------------------------------------- default active yes guest_images_glusterfs inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_glusterfs Pool guest_images_glusterfs started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_glusterfs Pool guest_images_glusterfs marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart -------------------------------------------- default active yes guest_images_glusterfs inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
.# virsh pool-info guest_images_glusterfs Name: guest_images_glusterfs UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.4.2. Parâmetros do pool de armazenamento baseado em GlusterFS
A seguir, informações sobre os parâmetros necessários para um pool de armazenamento baseado em GlusterFS e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_glusterfs
Parâmetros
A tabela a seguir fornece uma lista de parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em GlusterFS.
Tabela 11.4. Parâmetros do pool de armazenamento baseado em GlusterFS
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O hostname ou endereço IP do servidor Gluster |
|
O caminho no servidor Gluster utilizado para o pool de armazenamento. |
|
Exemplo
O seguinte é um exemplo de arquivo XML para um pool de armazenamento baseado no sistema de arquivo Gluster em 111.222.111.222:
<pool type='gluster'> <name>Gluster_pool</name> <source> <host name='111.222.111.222'/> <dir path='/'/> <name>gluster-vol1</name> </source> </pool>
Para mais informações sobre a criação de pools de armazenamento baseados em sistemas de arquivos, veja Seção 11.2.2.4.1, “Criação de pools de armazenamento baseados em GlusterFS usando o CLI”.
11.2.2.5. Criação e atribuição de armazenamento baseado em iSCSI para máquinas virtuais usando o CLI
O seguinte fornece informações sobre a criação de pools de armazenamento e volumes de armazenamento baseados em iSCSI, protegendo os pools de armazenamento baseados em iSCSI com libvirt
segredos, e atribuindo volumes a máquinas virtuais.
Recomendações
Internet Small Computer System Interface (iSCSI) é um protocolo de rede para compartilhar dispositivos de armazenamento. iSCSI conecta iniciadores (clientes de armazenamento) a alvos (servidores de armazenamento) usando instruções SCSI sobre a camada IP.
O uso de dispositivos baseados em iSCSI para armazenar máquinas virtuais permite opções de armazenamento mais flexíveis, como o uso de iSCSI como um dispositivo de armazenamento em bloco. Os dispositivos iSCSI usam um alvo Linux-IO (LIO). Este é um alvo SCSI multiprotocolo para Linux. Além do iSCSI, o LIO também suporta Fibre Channel e Fibre Channel over Ethernet (FCoE).
Se você precisar impedir o acesso a um pool de armazenamento iSCSI, você pode protegê-lo usando um segredo de libvirt.
Pré-requisitos
Antes de poder criar um pool de armazenamento baseado em iSCSI, você deve criar metas iSCSI. Você pode criar alvos iSCSI são criados usando o pacote
targetcli
, que fornece um conjunto de comandos para a criação de alvos iSCSI com suporte de software.Para mais informações e instruções sobre a criação de alvos iSCSI, consulte o documento Managing storage devices.
11.2.2.5.1. Criação de pools de armazenamento baseados em iSCSI usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados em iSCSI.
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados em iSCSI:
# virsh pool-capabilities | grep "'iscsi' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em iSCSI são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento do tipo iSCSI. Por exemplo, para criar um pool de armazenamento chamadoguest_images_iscsi
que usa oiqn.2010-05.com.example.server1:iscsirhel7guest
IQN noserver1.example.com
, e é montado no caminho/dev/disk/by-path
:# virsh pool-define-as --name guest_images_iscsi --type iscsi --source-host server1.example.com --source-dev iqn.2010-05.com.example.server1:iscsirhel7guest --target /dev/disk/by-path Pool guest_images_iscsi defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.5.2, “parâmetros do pool de armazenamento baseado em iSCSI”.
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_iscsi inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_iscsi Pool guest_images_iscsi started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_iscsi Pool guest_images_iscsi marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_iscsi inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
. Verifique se há um diretóriolost found
no caminho de destino no sistema de arquivos, indicando que o dispositivo está montado.# virsh pool-info guest_images_iscsi Name: guest_images_iscsi UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.5.2. parâmetros do pool de armazenamento baseado em iSCSI
A seguir, informações sobre os parâmetros necessários para um pool de armazenamento baseado em iSCSI e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_iscsi
Parâmetros
A tabela a seguir fornece uma lista dos parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em iSCSI.
Tabela 11.5. parâmetros do pool de armazenamento baseado em iSCSI
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O nome do anfitrião |
|
O iSCSI IQN |
|
O caminho que especifica o alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
[Opcional] O IQN do iniciador iSCSI. Isto só é necessário quando o ACL restringe o LUN a um iniciador em particular. |
|
O IQN do iniciador iSCSI pode ser determinado usando o comando virsh find-storage-pool-sources-as
iscsi.
Exemplo
A seguir, um exemplo de arquivo XML para um pool de armazenamento baseado no dispositivo iSCSI especificado:
<pool type='iscsi'> <name>iSCSI_pool</name> <source> <host name='server1.example.com'/> <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em iSCSCI, veja Seção 11.2.2.5.1, “Criação de pools de armazenamento baseados em iSCSI usando o CLI”.
11.2.2.5.3. Protegendo as piscinas de armazenamento iSCSI com segredos de libvirt
Os parâmetros de nome de usuário e senha podem ser configurados com virsh
para garantir um pool de armazenamento iSCSI. Você pode configurar isto antes ou depois de definir o pool, mas o pool deve ser iniciado para que as configurações de autenticação entrem em vigor.
A seguir são fornecidas instruções para proteger as piscinas de armazenamento baseadas em iSCSI com libvirt
segredos.
Este procedimento é necessário se um user_ID
e password
foram definidos ao criar a meta iSCSI.
Procedimento
Criar um arquivo secreto libvirt com um nome de usuário CHAP (challenge-handshake authentication protocol). Por exemplo:
<secret ephemeral='no' private='yes'> <description>Passphrase for the iSCSI example.com server</description> <usage type='iscsi'> <target>iscsirhel7secret</target> </usage> </secret>
Defina o segredo da libvirt com o comando
virsh secret-define
.# virsh secret-define secret.xml
Verifique a UUID com o comando
virsh secret-list
.# virsh secret-list UUID Usage ------------------------------------------------------------------- 2d7891af-20be-4e5e-af83-190e8a922360 iscsi iscsirhel7secret
Atribuir um segredo à UUID na saída da etapa anterior usando o comando
virsh secret-set-value
. Isto assegura que o nome de usuário e a senha CHAP estejam em uma lista secreta controlada por libvirt. Por exemplo, o nome de usuário e a senha do CHAP estão em uma lista secreta controlada por libvirt:# virsh secret-set-value --interactive 2d7891af-20be-4e5e-af83-190e8a922360 Enter new value for secret: Secret value set
Adicione uma entrada de autenticação no arquivo XML do pool de armazenamento usando o comando
virsh edit
, e adicione uma<auth>
elemento, especificandoauthentication type
,username
esecret usage
.Por exemplo:
<pool type='iscsi'> <name>iscsirhel7pool</name> <source> <host name='192.168.122.1'/> <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/> <auth type='chap' username='redhat'> <secret usage='iscsirhel7secret'/> </auth> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
NotaO
<auth>
subelemento existe em diferentes locais dentro da máquina virtual<pool>
e<disk>
Elementos XML. Para um<pool>
,<auth>
é especificado dentro do<source>
como este descreve onde encontrar as fontes do pool, já que a autenticação é uma propriedade de algumas fontes do pool (iSCSI e RBD). Para um<disk>
, que é um subelemento de um domínio, a autenticação para o disco iSCSI ou RBD é uma propriedade do disco. Além disso, o<auth>
subelemento para um disco é diferente do de um pool de armazenamento.<auth username='redhat'> <secret type='iscsi' usage='iscsirhel7secret'/> </auth>
Para ativar as mudanças, ative o pool de armazenamento. Se o pool já tiver sido iniciado, pare e reinicie o pool de armazenamento:
# virsh pool-destroy iscsirhel7pool
# virsh pool-start iscsirhel7pool
11.2.2.6. Criação e atribuição de armazenamento baseado em LVM para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em LVM e a atribuição de volumes a máquinas virtuais.
11.2.2.6.1. Criação de pools de armazenamento baseados em LVM usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados em LVM.
Recomendações
Esteja atento ao seguinte antes de criar um pool de armazenamento baseado em LVM:
- Os pools de armazenamento baseados na LVM não oferecem a flexibilidade total da LVM.
-
libvirt
suporta volumes lógicos finos, mas não fornece as características de pools de armazenamento finos. Os pools de armazenamento baseados em LVM são grupos de volume. Você pode criar grupos de volume usando comandos do Logical Volume Manager ou comandos do
virsh
. Para gerenciar grupos de volume usando a interfacevirsh
, use os comandosvirsh
para criar grupos de volume.Para mais informações sobre grupos de volume, consulte o site Red Hat Enterprise Linux Logical Volume Manager Administration Guide.
- Os pools de armazenamento baseados em LVM requerem uma partição de disco completa. Se for ativada uma nova partição ou dispositivo com estes procedimentos, a partição será formatada e todos os dados serão apagados. Se for utilizado o Grupo de Volume (VG) existente do host nada será apagado. Recomenda-se fazer o backup do dispositivo de armazenamento antes de iniciar.
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados em LVM:
# virsh pool-capabilities | grep "'logical' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em LVM são suportados.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento do tipo LVM. Por exemplo, o seguinte cria um pool de armazenamento chamadoguest_images_logical
que utiliza um dispositivo LVMlibvirt_lvm
montado em/dev/sdc
. O pool de armazenamento criado é montado como/dev/libvirt_lvm
.# virsh pool-define-as guest_images_logical logical --source-dev=/dev/sdc --source-name libvirt_lvm --target /dev/libvirt_lvm Pool guest_images_logical defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.6.2, “Parâmetros do pool de armazenamento baseado em LVM”.
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes guest_images_logical inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_logical Pool guest_images_logical started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_logical Pool guest_images_logical marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes guest_images_logical inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
.# virsh pool-info guest_images_logical Name: guest_images_logical UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.6.2. Parâmetros do pool de armazenamento baseado em LVM
A seguir, informações sobre os parâmetros necessários para um pool de armazenamento baseado em LVM e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_logical
Parâmetros
A tabela a seguir fornece uma lista dos parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em LVM.
Tabela 11.6. Parâmetros do pool de armazenamento baseado em LVM
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O caminho para o dispositivo para o pool de armazenagem |
|
O nome do grupo de volume |
|
O formato de grupo virtual |
|
O caminho-alvo |
|
Se o grupo de volume lógico for feito de múltiplas partições de disco, pode haver vários dispositivos de fonte listados. Por exemplo, o grupo de volume lógico é composto de múltiplas partições de disco:
<source> <device path='/dev/sda1'/> <device path='/dev/sdb3'/> <device path='/dev/sdc2'/> ... </source>
Exemplo
A seguir, um exemplo de arquivo XML para um pool de armazenamento baseado na LVM especificada:
<pool type='logical'> <name>guest_images_lvm</name> <source> <device path='/dev/sdc'/> <name>libvirt_lvm</name> <format type='lvm2'/> </source> <target> <path>/dev/libvirt_lvm</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em iSCSCI, veja Seção 11.2.2.6.1, “Criação de pools de armazenamento baseados em LVM usando o CLI”.
11.2.2.7. Criação e atribuição de armazenamento em rede para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em rede e a atribuição de volumes a máquinas virtuais.
Pré-requisitos
- Para criar um pool de armazenamento baseado no Network File System (NFS), um servidor NFS já deve estar configurado para ser usado pela máquina host. Para maiores informações sobre o NFS, consulte o site Red Hat Enterprise Linux Storage Administration Guide.
-
Certifique-se de que as utilidades necessárias para o sistema de arquivo que está sendo utilizado estejam instaladas no host. Por exemplo,
cifs-utils
para Sistemas de Arquivos Comuns na Internet (CIFS) ouglusterfs.fuse
para GlusterFS.
11.2.2.7.1. Criação de pools de armazenamento baseados em NFS usando o CLI
A seguir são fornecidas instruções para a criação de pools de armazenamento baseados no sistema de arquivos em rede (NFS).
Pré-requisitos
Assegure-se de que seu hipervisor suporta pools de armazenamento baseados em NFS:
# virsh pool-capabilities | grep "<value>nfs</value>"
Se o comando exibir qualquer saída, os pools baseados em NFS são suportados.
Procedimento
Create a storage pool
Use o comando virsh
pool-define-as
para definir e criar um pool de armazenamento do tipo NFS. Por exemplo, para criar um pool de armazenamento chamadoguest_images_netfs
que usa um servidor NFS com IP111.222.111.222
montado no diretório do servidor/home/net_mount
usando o diretório de destino/var/lib/libvirt/images/nfspool
:# virsh pool-define-as --name guest_images_netfs --type netfs --source-host='111.222.111.222' source-path='/home/net_mount' --source-format='nfs' --target='/var/lib/libvirt/images/nfspool'
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.7.2, “Parâmetros do pool de armazenamento baseado em NFS”.
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_netfs inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_netfs Pool guest_images_netfs started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_netfs Pool guest_images_netfs marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_netfs inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
. Verifique se há um diretóriolost found
no caminho de destino no sistema de arquivos, indicando que o dispositivo está montado.# virsh pool-info guest_images_netfs Name: guest_images_netfs UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.7.2. Parâmetros do pool de armazenamento baseado em NFS
A seguir, informações sobre os parâmetros necessários para um pool de armazenamento baseado em NFS e um exemplo.
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_netfs
Parâmetros
A tabela a seguir fornece uma lista de parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em NFS.
Tabela 11.7. Parâmetros do pool de armazenamento baseado em NFS
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O hostname do servidor de rede onde está localizado o ponto de montagem. Este pode ser um nome de host ou um endereço IP. |
|
O formato do pool de armazenagem | Uma das seguintes:
|
O diretório utilizado no servidor de rede |
|
O caminho que especifica o alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
Exemplo
A seguir, um exemplo de arquivo XML para um pool de armazenamento baseado no diretório /home/net_mount
do servidor file_server
NFS:
<pool type='netfs'> <name>nfspool</name> <source> <host name='file_server'/> <format type='nfs'/> <dir path='/home/net_mount'/> </source> <target> <path>/var/lib/libvirt/images/nfspool</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em NFS, veja Seção 11.2.2.7.1, “Criação de pools de armazenamento baseados em NFS usando o CLI”.
11.2.2.8. Criação e atribuição de armazenamento baseado em SCSI com dispositivos vHBA para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a criação de pools e volumes de armazenamento baseados em SCSI usando dispositivos vHBA, bem como a atribuição de volumes a máquinas virtuais (VMs).
Recomendações
N_Port ID Virtualization (NPIV) é uma tecnologia de software que permite o compartilhamento de um único adaptador físico de barramento host do Canal de Fibra (HBA). Isto permite que várias VMs vejam o mesmo armazenamento a partir de vários hosts físicos, e assim permite caminhos de migração mais fáceis para o armazenamento. Como resultado, não há necessidade de migração para criar ou copiar o armazenamento, desde que o caminho de armazenamento correto seja especificado.
Em virtualização, o virtual host bus adapter, ou vHBA, controla os Números de Unidade Lógica (LUNs) para VMs. Para que um host compartilhe um caminho de dispositivo Fibre Channel entre várias VMs, você deve criar um vHBA para cada VM. Um único vHBA não pode ser usado por múltiplas VMs.
Cada vHBA para NPIV é identificado por sua matriz HBA e seu próprio World Wide Node Name (WWNN) e World Wide Port Name (WWPN). O caminho para o armazenamento é determinado pelos valores WWNN e WWPN. O HBA pai pode ser definido como scsi_host#
ou como um par WWNN/WWPN.
Se um HBA pai é definido como scsi_host#
e hardware é adicionado à máquina hospedeira, o scsi_host#
a tarefa pode mudar. Portanto, recomenda-se definir um HBA pai usando um par WWNN/WWPN.
Recomenda-se definir um pool de armazenamento libvirt
com base no vHBA, pois isso preserva a configuração do vHBA.
A utilização de uma piscina de armazenamento de libvirt tem duas vantagens principais:
- O código da libvirt pode facilmente encontrar o caminho do LUN através da saída do comando virsh.
- Você pode migrar uma VM requer apenas definir e iniciar um pool de armazenamento com o mesmo nome vHBA na máquina alvo. Para fazer isto, o vHBA LUN, libvirt storage pool e o nome do volume devem ser especificados na configuração XML da VM.
Antes de criar um vHBA, é recomendado que você configure o zoneamento de armazenamento (SAN) no LUN do host para proporcionar isolamento entre VMs e evitar a possibilidade de corrupção de dados.
Para criar uma configuração vHBA persistente, primeiro crie um arquivo XML do pool de armazenamento 'scsi'. Para obter informações sobre o arquivo XML, consulte Criando vHBAs. Ao criar um único vHBA que utilize um pool de armazenamento no mesmo HBA físico, recomenda-se usar um local estável para o valor <path>
, tal como um dos /dev/disk/by-{path|id|uuid|label}
locais em seu sistema.
Ao criar múltiplos vHBAs que usam pools de armazenamento no mesmo HBA físico, o valor do campo <path>
deve ser apenas /dev/
, caso contrário, os volumes do pool de armazenamento são visíveis apenas para um dos vHBAs, e os dispositivos do host não podem ser expostos a múltiplos VMs com a configuração NPIV.
Para maiores informações sobre <path>
e os elementos em <target>
, veja a documentação da libvirt upstream.
11.2.2.8.1. Criando vHBAs
A seguir são fornecidas instruções para a criação de um adaptador de ônibus host virtual (vHBA).
Procedimento
Localize os HBAs em seu sistema host, usando o comando
virsh nodedev-list --cap vports
.O exemplo seguinte mostra um anfitrião que tem dois HBAs que suportam o vHBA:
# virsh nodedev-list --cap vports scsi_host3 scsi_host4
Veja os detalhes da HBA, usando o
virsh nodedev-dumpxml HBA_device
comando.# virsh nodedev-dumpxml scsi_host3
A saída do comando lista os campos
<name>
,<wwnn>
, e<wwpn>
, que são usados para criar um vHBA.<max_vports>
mostra o número máximo de vHBAs suportados. Por exemplo:<device> <name>scsi_host3</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3</path> <parent>pci_0000_10_00_0</parent> <capability type='scsi_host'> <host>3</host> <unique_id>0</unique_id> <capability type='fc_host'> <wwnn>20000000c9848140</wwnn> <wwpn>10000000c9848140</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> <capability type='vport_ops'> <max_vports>127</max_vports> <vports>0</vports> </capability> </capability> </device>
Neste exemplo, o valor
<max_vports>
mostra que há um total de 127 portas virtuais disponíveis para uso na configuração HBA. O valor<vports>
mostra o número de portas virtuais que estão sendo utilizadas atualmente. Estes valores são atualizados após a criação de um vHBA.Criar um arquivo XML similar a um dos seguintes para o host vHBA. Nestes exemplos, o nome do arquivo é
vhba_host3.xml
.Este exemplo usa
scsi_host3
para descrever o vHBA pai.<device> <parent>scsi_host3</parent> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
Este exemplo usa um par WWNN/WWPN para descrever o vHBA pai.
<device> <name>vhba</name> <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
NotaOs valores da WWNN e da WWPN devem coincidir com os valores da HBA, que foram vistos na etapa anterior.
O campo
<parent>
especifica o dispositivo HBA a ser associado a este dispositivo vHBA. Os detalhes na tag<device>
são usados na próxima etapa para criar um novo dispositivo vHBA para o host. Para mais informações sobre o formatonodedev
XML, veja as páginas da libvirt upstream.NotaO comando
virsh
não fornece uma forma de definir os atributosparent_wwnn
,parent_wwpn
, ouparent_fabric_wwn
.Criar um VHBA com base no arquivo XML criado na etapa anterior usando o comando
virsh nodev-create
.# virsh nodedev-create vhba_host3 Node device scsi_host5 created from vhba_host3.xml
Verificação
Verifique os detalhes do novo vHBA (scsi_host5) usando o comando
virsh nodedev-dumpxml
:# virsh nodedev-dumpxml scsi_host5 <device> <name>scsi_host5</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3/vport-3:0-0/host5</path> <parent>scsi_host3</parent> <capability type='scsi_host'> <host>5</host> <unique_id>2</unique_id> <capability type='fc_host'> <wwnn>5001a4a93526d0a1</wwnn> <wwpn>5001a4ace3ee047d</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> </capability> </device>
11.2.2.8.2. Criação de pools de armazenamento baseados em SCSI com dispositivos vHBA usando o CLI
A seguir fornecemos instruções para a criação de pools de armazenamento baseados em SCSI usando dispositivos de adaptador de ônibus host virtual (vHBA).
Pré-requisitos
Assegure-se de que seu hipervisor suporte pools de armazenamento baseados em SCSI:
# virsh pool-capabilities | grep "'scsi' supported='yes'"
Se o comando exibir qualquer saída, os pools baseados em SCSI são suportados.
- Antes de criar um pool de armazenamento baseado em SCSI com dispositivos vHBA, crie um vHBA. Para mais informações, consulte Criando vHBAs.
Procedimento
Create a storage pool
Use o comando
virsh pool-define-as
para definir e criar um pool de armazenamento SCSI usando um vHBA. Por exemplo, o seguinte cria um pool de armazenamento chamadoguest_images_vhba
que usa um vHBA identificado pelo adaptador paiscsi_host3
, porta mundial número5001a4ace3ee047d
, e nó mundial número5001a4a93526d0a1
. O pool de armazenamento é montado no diretório/dev/disk/
:# virsh pool-define-as guest_images_vhba scsi --adapter-parent scsi_host3 --adapter-wwnn 5001a4a93526d0a1 --adapter-wwpn 5001a4ace3ee047d --target /dev/disk/ Pool guest_images_vhba defined
Se você já possui uma configuração XML do pool de armazenamento que deseja criar, você também pode definir o pool com base no XML. Para detalhes, veja Seção 11.2.2.8.3, “Parâmetros para piscinas de armazenamento baseadas em SCSI com dispositivos vHBA”.
Verify that the pool was created
Use o comando
virsh pool-list
para verificar se o pool foi criado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_vhba inactive no
Start the storage pool
Use o comando
virsh pool-start
para montar o pool de armazenamento.# virsh pool-start guest_images_vhba Pool guest_images_vhba started
NotaO comando
virsh pool-start
só é necessário para poços de armazenamento persistentes. Os pools de armazenagem transitórios são automaticamente iniciados quando são criados.[Optional] Turn on autostart
Por padrão, um pool de armazenamento definido com o comando
virsh
não é definido para iniciar automaticamente cada vez que a libvirtd inicia. Use o comandovirsh pool-autostart
para configurar o pool de armazenamento para reiniciar automaticamente.# virsh pool-autostart guest_images_vhba Pool guest_images_vhba marked as autostarted
Verificação
Use o comando
virsh pool-list
para verificar oAutostart
estado.# virsh pool-list --all Name State Autostart ----------------------------------------- default active yes guest_images_vhba inactive yes
Verificar se o pool de armazenagem foi criado corretamente, se os tamanhos relatados são os esperados e se o estado é relatado como
running
.# virsh pool-info guest_images_vhba Name: guest_images_vhba UUID: c7466869-e82a-a66c-2187-dc9d6f0877d0 State: running Persistent: yes Autostart: yes Capacity: 458.39 GB Allocation: 197.91 MB Available: 458.20 GB
11.2.2.8.3. Parâmetros para piscinas de armazenamento baseadas em SCSI com dispositivos vHBA
A seguir são fornecidas informações sobre os parâmetros necessários para um pool de armazenamento baseado em SCSi que utiliza um dispositivo host bus adaptador virtual (vHBA).
Você pode definir um pool de armazenamento com base na configuração XML em um arquivo especificado. Por exemplo:
# virsh pool-define ~/guest_images.xml
Pool defined from guest_images_vhba
Parâmetros
A tabela a seguir fornece uma lista dos parâmetros necessários para o arquivo XML para um pool de armazenamento baseado em SCSI com vHBA.
Tabela 11.8. Parâmetros para piscinas de armazenamento baseadas em SCSI com dispositivos vHBA
Descrição | XML |
---|---|
O tipo de piscina de armazenamento |
|
O nome do pool de armazenagem |
|
O identificador do vHBA. O atributo |
|
O caminho-alvo. Este será o caminho utilizado para o pool de armazenamento. |
|
Quando o campo <path>
é /dev/
libvirt
gera um caminho curto e único para o caminho do dispositivo de volume. Por exemplo, /dev/sdc
. Caso contrário, é utilizado o caminho físico do hospedeiro. Por exemplo, /dev/disk/by-path/pci-0000:10:00.0-fc-0x5006016044602198-lun-0
. O caminho curto e exclusivo do dispositivo permite que o mesmo volume seja listado em várias máquinas virtuais (VMs) por vários pools de armazenamento. Se o caminho físico do host for usado por múltiplas VMs, podem ocorrer avisos duplicados do tipo de dispositivo.
O atributo parent
pode ser usado no campo <adapter>
para identificar o pai físico HBA a partir do qual os LUNs NPIV podem ser usados por caminhos variados. Este campo, scsi_hostN
, é combinado com os atributos vports
e max_vports
para completar a identificação dos pais. Os atributos parent
, parent_wwnn
, parent_wwpn
, ou parent_fabric_wwn
oferecem vários graus de garantia de que, após o reinício do host, o mesmo HBA é usado.
-
Se não for especificado
parent
,libvirt
usa o primeiro adaptadorscsi_hostN
que suporta o NPIV. -
Se apenas o
parent
for especificado, podem surgir problemas se forem acrescentados adaptadores SCSI adicionais à configuração. -
Se for especificado
parent_wwnn
ouparent_wwpn
, após a reinicialização do host, o mesmo HBA é usado. -
Se for utilizado
parent_fabric_wwn
, após a reinicialização do host é selecionado um HBA no mesmo tecido, independentemente doscsi_hostN
utilizado.
Exemplos
A seguir, alguns exemplos de arquivos XML para pools de armazenamento baseados em SCSI com vHBA.
Um pool de armazenagem que é o único pool de armazenagem na HBA:
<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
Um pool de armazenamento que é um dos vários pools de armazenamento que utilizam um único vHBA e usa o atributo
parent
para identificar o dispositivo host SCSI:<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
Recursos adicionais
Para mais informações sobre a criação de pools de armazenamento baseados em SCSI com vHBA, veja Seção 11.2.2.8.2, “Criação de pools de armazenamento baseados em SCSI com dispositivos vHBA usando o CLI”.
11.2.2.9. Criação e atribuição de volumes de armazenamento usando o CLI
Para obter uma imagem de disco e anexá-la a uma máquina virtual (VM) como disco virtual, criar um volume de armazenamento e atribuir sua configuração XML a uma VM.
Pré-requisitos
Uma piscina de armazenamento com espaço não alocado está presente no anfitrião. Para verificar, liste os pools de armazenamento no host:
# virsh pool-list --details Name State Autostart Persistent Capacity Allocation Available -------------------------------------------------------------------------------------------- default running yes yes 48.97 GiB 36.34 GiB 12.63 GiB Downloads running yes yes 175.92 GiB 121.20 GiB 54.72 GiB VM-disks running yes yes 175.92 GiB 121.20 GiB 54.72 GiB
Procedimento
Crie um volume de armazenamento usando o comando
virsh vol-create-as
. Por exemplo, para criar um volume de 20 GB qcow2 com base no pool de armazenamentoguest-images-fs
:# virsh vol-create-as --pool guest-images-fs --name vm-disk1 --capacity 20 --format qcow2
Important: Tipos específicos de pool de armazenamento não suportam o comando
virsh vol-create-as
e, em vez disso, requerem processos específicos para criar volumes de armazenamento:-
GlusterFS-based - Use o comando
qemu-img
para criar volumes de armazenamento. - iSCSI-based - Prepare os iSCSI LUNs com antecedência no servidor iSCSI.
-
Multipath-based - Use o comando
multipathd
para preparar ou administrar o multipath. - vHBA-based - Prepare o cartão do canal de fibra com antecedência.
-
GlusterFS-based - Use o comando
Criar um arquivo XML, e adicionar as seguintes linhas nele. Este arquivo será usado para adicionar o volume de armazenamento como um disco a uma VM.
<disk type='volume' device='disk'> <driver name='qemu' type='qcow2'/> <source pool='guest-images-fs' volume='vm-disk1'/> <target dev='hdk' bus='ide'/> </disk>
Este exemplo especifica um disco virtual que utiliza o volume
vm-disk1
, criado na etapa anterior, e define o volume a ser configurado como discohdk
em um ônibuside
. Modifique os respectivos parâmetros conforme apropriado para seu ambiente.Important: Com tipos específicos de pool de armazenamento, você deve usar diferentes formatos XML para descrever um disco de volume de armazenamento.
Para GlusterFS-based pools:
<disk type='network' device='disk'> <driver name='qemu' type='raw'/> <source protocol='gluster' name='Volume1/Image'> <host name='example.org' port='6000'/> </source> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </disk>
Para multipath-based pools:
<disk type='block' device='disk'> <driver name='qemu' type='raw'/> <source dev='/dev/mapper/mpatha' /> <target dev='sda' bus='scsi'/> </disk>
Para RBD-based storage pools:
<disk type='network' device='disk'> <driver name='qemu' type='raw'/> <source protocol='rbd' name='pool/image'> <host name='mon1.example.org' port='6321'/> </source> <target dev='vdc' bus='virtio'/> </disk>
Use o arquivo XML para atribuir o volume de armazenamento como um disco a uma VM. Por exemplo, para atribuir um disco definido em
~/vm-disk1.xml
para a VMtestguest1
:# attach-device --config testguest1 ~/vm-disk1.xml
Verificação
- No sistema operacional convidado da VM, confirme que a imagem do disco ficou disponível como um disco não formatado e não alocado.
11.2.3. Eliminação do armazenamento para máquinas virtuais usando o CLI
A seguir, são fornecidas informações sobre a eliminação de pools de armazenamento e volumes de armazenamento usando o CLI.
11.2.3.1. Eliminação de pools de armazenamento usando o CLI
Para remover um pool de armazenamento de seu sistema hospedeiro, você deve parar o pool e remover sua definição de XML.
Procedimento
Liste os pools de armazenamento definidos usando o comando
virsh pool-list
.# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes Downloads active yes RHEL8-Storage-Pool active yes
Pare o pool de armazenamento que você deseja excluir usando o comando
virsh pool-destroy
.# virsh pool-destroy Downloads Pool Downloads destroyed
Optional: Para alguns tipos de pools de armazenamento, você pode remover o diretório onde o pool de armazenamento reside usando o comando
virsh pool-delete
. Note que para fazer isso, o diretório deve estar vazio.# virsh pool-delete Downloads Pool Downloads deleted
Eliminar a definição do pool de armazenamento usando o comando
virsh pool-undefine
.# virsh pool-undefine Downloads Pool Downloads has been undefined
Verificação
Confirmar que o pool de armazenamento foi eliminado.
# virsh pool-list --all Name State Autostart ------------------------------------------- default active yes RHEL8-Storage-Pool active yes
11.2.3.2. Eliminação de volumes de armazenamento usando o CLI
Para remover um volume de armazenamento de seu sistema hospedeiro, você deve parar o pool e remover sua definição de XML.
Pré-requisitos
- Qualquer máquina virtual que utilize o volume de armazenamento que você deseja excluir é desligada.
Procedimento
Liste os volumes de armazenamento definidos em um pool de armazenamento usando o comando
virsh vol-list
. O comando deve especificar o nome ou caminho de um pool de armazenagem.# virsh vol-list --pool RHEL8-Storage-Pool Name Path --------------------------------------------------------------- .bash_history /home/VirtualMachines/.bash_history .bash_logout /home/VirtualMachines/.bash_logout .bash_profile /home/VirtualMachines/.bash_profile .bashrc /home/VirtualMachines/.bashrc .git-prompt.sh /home/VirtualMachines/.git-prompt.sh .gitconfig /home/VirtualMachines/.gitconfig RHEL8_Volume.qcow2 /home/VirtualMachines/RHEL8_Volume.qcow2
Excluir volumes de armazenamento usando o comando
virsh vol-delete
. O comando deve especificar o nome ou caminho do volume de armazenamento e o pool de armazenamento do qual o volume de armazenamento é abstraído.# virsh vol-delete --pool RHEL-Storage-Pool RHEL8_Volume.qcow2 Pool RHEL8_Volume.qcow2 deleted
Verificação
Liste novamente os volumes de armazenamento definidos, e verifique se a saída não exibe mais o volume excluído.
# virsh vol-list --pool RHEL8-Storage-Pool Name Path --------------------------------------------------------------- .bash_history /home/VirtualMachines/.bash_history .bash_logout /home/VirtualMachines/.bash_logout .bash_profile /home/VirtualMachines/.bash_profile .bashrc /home/VirtualMachines/.bashrc .git-prompt.sh /home/VirtualMachines/.git-prompt.sh .gitconfig /home/VirtualMachines/.gitconfig
11.3. Gerenciamento de armazenamento para máquinas virtuais usando o console web
Usando o console web RHEL 8, você pode gerenciar vários aspectos do armazenamento de uma máquina virtual (VM's). Você pode usar o console web para:
11.3.1. Visualização das informações do pool de armazenamento usando o console web
O procedimento a seguir descreve como visualizar informações detalhadas sobre os pools de armazenamento da máquina virtual (VM) que a sessão do console web pode acessar.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da interface das Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
As informações incluem o seguinte:
- Name - O nome do pool de armazenagem.
- Size - O tamanho do pool de armazenagem.
- Connection - A conexão utilizada para acessar o pool de armazenamento.
- State - O estado do pool de armazenagem.
Clique na linha do depósito cujas informações você deseja ver.
A linha se expande para revelar o painel de Visão Geral com as seguintes informações sobre o pool de armazenamento selecionado:
- Path - O caminho para o pool de armazenagem.
- Persistent - Se o pool de armazenagem é persistente ou não.
- Autostart - Quer o pool de armazenagem comece ou não automaticamente.
- Type - O tipo de piscina de armazenagem.
Para ver uma lista dos volumes de armazenamento criados a partir do pool de armazenamento, clique em Volumes de Armazenamento.
Aparece o painel de Volumes de Armazenamento, mostrando uma lista de volumes de armazenamento configurados com seus tamanhos e a quantidade de espaço utilizada.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
11.3.2. Criação de pools de armazenamento utilizando o console web
Uma máquina virtual (VM) requer um arquivo, diretório ou dispositivo de armazenamento que pode ser usado para criar volumes de armazenamento para armazenar a imagem da VM ou atuar como armazenamento adicional. Você pode criar pools de armazenamento a partir de recursos locais ou baseados em rede que podem ser usados para criar os volumes de armazenamento.
Para criar pools de armazenamento usando o console web RHEL, veja o seguinte procedimento.
Pré-requisitos
- Para utilizar o console web para gerenciar máquinas virtuais (VMs), é necessário instalar o plug-in para o console web VM.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da aba Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
Clique em Create Storage Pool. Aparece a caixa de diálogo Criar Pool de Armazenamento.
Digite as seguintes informações no diálogo Criar Pool de Armazenamento:
- Name - O nome do pool de armazenagem.
- Type - O tipo de piscina de armazenagem. Pode ser um diretório de sistema de arquivos, um sistema de arquivos em rede, um alvo iSCSI, uma unidade de disco físico ou um grupo de volume LVM.
- Target Path - O caminho do pool de armazenamento no sistema de arquivos do host.
- Startup - Se a piscina de armazenamento começa ou não quando as botas do anfitrião.
- Clique em Criar. O pool de armazenagem é criado, o diálogo Criar pool de armazenagem é fechado e o novo pool de armazenagem aparece na lista de pools de armazenagem.
Recursos adicionais
- Para mais informações sobre pools de armazenagem, consulte Entendendo os pools de armazenagem.
- Para instruções sobre como visualizar informações sobre pools de armazenamento usando o console web, consulte Visualização de informações sobre o pool de armazenamento usando o console web.
11.3.3. Remoção de pools de armazenamento usando o console web
Você pode remover pools de armazenamento para liberar recursos no host ou na rede para melhorar o desempenho do sistema. A eliminação dos pools de armazenamento também libera recursos que podem ser utilizados por outras máquinas virtuais (VMs).
A menos que explicitamente especificado, a eliminação de um pool de armazenamento não elimina simultaneamente os volumes de armazenamento dentro desse pool.
Para excluir um pool de armazenamento usando o console web RHEL, veja o seguinte procedimento.
Se você deseja desativar temporariamente um pool de armazenamento em vez de excluí-lo, veja Desativação de pools de armazenamento usando o console web
Pré-requisitos
- Para utilizar o console web para gerenciar as VMs, é necessário instalar o plug-in de VM do console web.
- Se você quiser apagar um volume de armazenamento junto com o pool, é necessário primeiro separar o disco da VM.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da aba Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
Na janela Piscinas de armazenamento, clique no pool de armazenamento que você deseja excluir.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre o pool de armazenamento selecionado e controles para desativar ou excluir o pool de armazenamento.
Clique em Excluir.
Aparece um diálogo de confirmação.
- Optional: Para excluir os volumes de armazenamento dentro do pool, selecione a caixa de seleção no diálogo.
Clique em Excluir.
O pool de armazenamento é eliminado. Se você tiver selecionado a caixa de seleção na etapa anterior, os volumes de armazenamento associados também são excluídos.
Recursos adicionais
- Para mais informações sobre pools de armazenagem, consulte Entendendo os pools de armazenagem.
- Para instruções sobre como visualizar informações sobre pools de armazenamento usando o console web, veja as informações sobre o pool de armazenamento usando o console web.
11.3.4. Desativação de pools de armazenamento usando o console web
Se você não quiser excluir permanentemente um pool de armazenamento, pode desativá-lo temporariamente em seu lugar.
Ao desativar um pool de armazenagem, nenhum volume novo pode ser criado nesse pool. Entretanto, quaisquer máquinas virtuais (VMs) que tenham volumes nesse pool continuarão a funcionar. Isto é útil por várias razões, por exemplo, você pode limitar o número de volumes que podem ser criados em um pool para aumentar o desempenho do sistema.
Para desativar um pool de armazenamento usando o console web RHEL, veja o seguinte procedimento.
Pré-requisitos
- Para utilizar o console web para gerenciar máquinas virtuais (VMs), é necessário instalar o plug-in para o console web VM.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da aba Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
Na janela Piscinas de armazenamento, clique no pool de armazenamento que você deseja desativar.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre o pool de armazenamento selecionado e controles para desativar e excluir a VM.
Clique em Desativar.
O pool de armazenamento está desativado.
Recursos adicionais
- Para mais informações sobre pools de armazenagem, consulte Entendendo os pools de armazenagem.
- Para instruções sobre como visualizar informações sobre pools de armazenamento usando o console web, consulte Visualização de informações sobre o pool de armazenamento usando o console web.
11.3.5. Criação de volumes de armazenamento usando o console web
Para criar uma máquina virtual funcional (VM) é necessário um dispositivo de armazenamento local designado à VM que possa armazenar a imagem da VM e os dados relacionados à VM. Você pode criar um volume de armazenamento em um pool de armazenamento e atribuí-lo a uma VM como um disco de armazenamento.
Para criar volumes de armazenamento usando o console web, veja o seguinte procedimento.
Pré-requisitos
- Para utilizar o console web para gerenciar as VMs, é necessário instalar o plug-in de VM do console web.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da aba Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
Na janela Piscinas de armazenamento, clique no pool de armazenamento a partir do qual você deseja criar um volume de armazenamento.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre o pool de armazenamento selecionado.
Clique em Volumes de Armazenamento ao lado da guia Visão Geral na linha expandida.
A guia Volume de armazenamento aparece com informações básicas sobre os volumes de armazenamento existentes, se houver.
Clique em Create Volume (Criar volume).
Aparece o diálogo Criar volume de armazenamento.
Digite as seguintes informações no diálogo Criar volume de armazenamento:
- Name - O nome do volume de armazenamento.
- Size - O tamanho do volume de armazenamento em MiB ou GiB.
-
Format - O formato do volume de armazenamento. Os tipos suportados são
qcow2
eraw
.
Clique em Criar.
O volume de armazenamento é criado, o diálogo Criar volume de armazenamento é fechado, e o novo volume de armazenamento aparece na lista de volumes de armazenamento.
Recursos adicionais
- Para mais informações sobre volumes de armazenamento, consulte Entendendo volumes de armazenamento.
- Para informações sobre como adicionar discos a VMs usando o console web, veja Adicionar novos discos a máquinas virtuais usando o console web.
11.3.6. Remoção de volumes de armazenamento usando o console web
Você pode remover volumes de armazenamento para liberar espaço no pool de armazenamento, ou para remover itens de armazenamento associados a máquinas virtuais defunto (VMs).
Para remover volumes de armazenamento usando o console web RHEL, veja o seguinte procedimento.
Pré-requisitos
- Para utilizar o console web para gerenciar as VMs, é necessário instalar o plug-in de VM do console web.
- Você deve separar o volume do VM.
Procedimento
Clique em Piscinas de Armazenamento na parte superior da aba Máquinas Virtuais. A janela Piscinas de Armazenamento aparece, mostrando uma lista de pools de armazenamento configurados.
Na janela Piscinas de armazenamento, clique no pool de armazenamento do qual você deseja remover um volume de armazenamento.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre o pool de armazenamento selecionado.
Clique em Volumes de Armazenamento ao lado da guia Visão Geral na linha expandida.
A guia Volume de armazenamento aparece com informações básicas sobre os volumes de armazenamento existentes, se houver.
Selecione o volume de armazenamento que você deseja remover.
- Clique em Excluir 1 Volume
Recursos adicionais
- Para mais informações sobre volumes de armazenamento, consulte Entendendo volumes de armazenamento.
11.3.7. Gerenciamento de discos de máquinas virtuais usando o console web
Usando o console web RHEL 8, você pode gerenciar os discos configurados para as máquinas virtuais às quais o console web está conectado.
Você pode:
11.3.7.1. Visualização das informações do disco da máquina virtual no console web
O procedimento a seguir descreve como visualizar as informações em disco de uma máquina virtual (VM) à qual a sessão do console web está conectada.
Pré-requisitos
Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Clique na fila do VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Discos.
O painel de discos aparece com informações sobre os discos designados para a VM.

As informações incluem o seguinte:
- Device - O tipo de dispositivo do disco.
- Used - A quantidade do disco que é utilizada.
- Capacity - O tamanho do disco.
- Bus - O tipo de ônibus do disco.
- Access - Se o disco é gravável ou somente leitura.
- Source - O dispositivo ou arquivo em disco.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações de interface de rede virtual sobre uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.6, “Visualização e edição de informações da interface de rede virtual no console web”.
11.3.7.2. Adicionando novos discos a máquinas virtuais usando o console web
Você pode adicionar novos discos às máquinas virtuais (VMs) criando um novo volume de armazenamento e anexando-o a uma VM usando o console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM para a qual você deseja criar e anexe um novo disco.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Discos.
O painel de discos aparece com informações sobre os discos configurados para a VM.
Clique em Adicionar disco.
Aparece o diálogo Adicionar disco.
- Selecione a opção Create New.
Configurar o novo disco.
- Pool - Selecione o pool de armazenamento a partir do qual o disco virtual será criado.
- Name - Digite um nome para o disco virtual que será criado.
- Size - Digite o tamanho e selecione a unidade (MiB ou GiB) do disco virtual que será criado.
-
Format - Selecione o formato para o disco virtual que será criado. Os tipos suportados são
qcow2
eraw
. Persistence - Se verificado, o disco virtual é persistente. Se não verificado, o disco virtual é transitório.
NotaOs discos transitórios só podem ser adicionados aos VMs que estão em funcionamento.
Additional Options - Definir configurações adicionais para o disco virtual.
- Cache - Selecione o tipo de cache para o disco virtual.
- Bus - Selecione o tipo de ônibus para o disco virtual.
Clique em Adicionar.
O disco virtual é criado e conectado ao VM.
Recursos adicionais
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 11.3.7.1, “Visualização das informações do disco da máquina virtual no console web”.
- Para informações sobre como anexar os discos existentes às VMs, veja Seção 11.3.7.3, “Fixação de discos existentes em máquinas virtuais usando o console web”.
- Para informações sobre como destacar discos dos VMs, veja Seção 11.3.7.4, “Desacoplamento de discos de máquinas virtuais”.
11.3.7.3. Fixação de discos existentes em máquinas virtuais usando o console web
O procedimento a seguir descreve como fixar volumes de armazenamento existentes como discos em uma máquina virtual (VM) usando o console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM à qual você deseja anexar um disco existente.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Discos.
O painel de discos aparece com informações sobre os discos configurados para a VM.
Clique em Adicionar disco.
Aparece o diálogo Adicionar disco.
Clique no botão de rádio Use Existing.
Os campos de configuração apropriados aparecem no diálogo Adicionar disco.
Configure o disco para a VM.
- Pool - Selecione o pool de armazenamento a partir do qual o disco virtual será anexado.
- Volume - Selecione o volume de armazenamento que será anexado.
- Persistence - Verifique para que o disco virtual seja persistente. Limpar para que o disco virtual seja transitório.
Additional Options - Definir configurações adicionais para o disco virtual.
- Cache - Selecione o tipo de cache para o disco virtual.
- Bus - Selecione o tipo de ônibus para o disco virtual.
Clique em Adicionar
O disco virtual selecionado é anexado ao VM.
Recursos adicionais
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 11.3.7.1, “Visualização das informações do disco da máquina virtual no console web”.
- Para informações sobre como criar novos discos e anexá-los aos VMs, ver Seção 11.3.7.2, “Adicionando novos discos a máquinas virtuais usando o console web”.
- Para informações sobre como destacar discos dos VMs, veja Seção 11.3.7.4, “Desacoplamento de discos de máquinas virtuais”.
11.3.7.4. Desacoplamento de discos de máquinas virtuais
O seguinte descreve como destacar discos de máquinas virtuais (VMs) usando o console web RHEL 8.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM da qual você deseja destacar um disco existente.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Discos.
O painel de discos aparece com informações sobre os discos configurados para a VM.
-
Clique no botão Remover ao lado do disco que você deseja separar da VM. Um diálogo de confirmação
Remove Disk
aparece. No diálogo de confirmação, clique em Remover.
O disco virtual é destacado do VM.
Recursos adicionais
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 11.3.7.1, “Visualização das informações do disco da máquina virtual no console web”.
- Para informações sobre como criar novos discos e anexá-los aos VMs, ver Seção 11.3.7.2, “Adicionando novos discos a máquinas virtuais usando o console web”.
- Para informações sobre como anexar os discos existentes às VMs, veja Seção 11.3.7.3, “Fixação de discos existentes em máquinas virtuais usando o console web”.
Capítulo 12. Gerenciando os dispositivos NVIDIA vGPU
O recurso vGPU torna possível dividir um dispositivo GPU NVIDIA físico em múltiplos dispositivos virtuais, referidos como mediated devices
. Estes dispositivos mediados podem então ser atribuídos a múltiplas máquinas virtuais (VMs) como GPUs virtuais. Como resultado, estas VMs podem compartilhar a performance de uma única GPU física.
A atribuição de uma GPU física a VMs, com ou sem o uso de dispositivos mediados, torna impossível para o host utilizar a GPU.
12.1. Configurando os dispositivos NVIDIA vGPU
Para configurar o recurso NVIDIA vGPU, você precisa baixar os drivers NVIDIA vGPU para seu dispositivo GPU, criar dispositivos mediados e atribuí-los às máquinas virtuais previstas. Para instruções detalhadas, veja abaixo.
Pré-requisitos
O pacote mdevctl está instalado.
# yum install mdevctl
Sua GPU suporta dispositivos mediados por vGPU. Para uma lista atualizada das GPUs NVIDIA que suportam a criação de vGPUs, consulte a Documentação de Software de GPU NVIDIA.
Se você não souber qual GPU seu host está usando, instale o pacote lshw e use o comando
lshw -C display
. O exemplo a seguir mostra que o sistema está usando uma GPU NVIDIA Tesla P4, compatível com a vGPU.# lshw -C display *-display description: 3D controller product: GP104GL [Tesla P4] vendor: NVIDIA Corporation physical id: 0 bus info: pci@0000:01:00.0 version: a1 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress cap_list configuration: driver=vfio-pci latency=0 resources: irq:16 memory:f6000000-f6ffffff memory:e0000000-efffffff memory:f0000000-f1ffffff
Procedimento
- Faça o download dos drivers NVIDIA vGPU e instale-os em seu sistema. Para instruções, consulte a documentação da NVIDIA.
Se o instalador do software NVIDIA não criou o arquivo /etc/modprobe.d/nvidia-installer-disable-nouveau.conf, crie um arquivo
conf
com qualquer nome em /etc/modprobe.d/, e acrescente as seguintes linhas no arquivo:blacklist nouveau options nouveau modeset=0
Regenerar o ramdisco inicial para o kernel atual, depois reiniciar.
# dracut --force # reboot
Verifique se o kernel carregou o módulo
nvidia_vgpu_vfio
e se o serviçonvidia-vgpu-mgr.service
está funcionando.# lsmod | grep nvidia_vgpu_vfio nvidia_vgpu_vfio 45011 0 nvidia 14333621 10 nvidia_vgpu_vfio mdev 20414 2 vfio_mdev,nvidia_vgpu_vfio vfio 32695 3 vfio_mdev,nvidia_vgpu_vfio,vfio_iommu_type1 # systemctl status nvidia-vgpu-mgr.service nvidia-vgpu-mgr.service - NVIDIA vGPU Manager Daemon Loaded: loaded (/usr/lib/systemd/system/nvidia-vgpu-mgr.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2018-03-16 10:17:36 CET; 5h 8min ago Main PID: 1553 (nvidia-vgpu-mgr) [...]
Gerar um dispositivo UUID.
# uuidgen 30820a6f-b1a5-4503-91ca-0c10ba58692a
Crie um dispositivo mediado a partir do hardware da GPU que você detectou nos pré-requisitos, e atribua a UUID gerada ao dispositivo.
O exemplo a seguir mostra como criar um dispositivo mediado do tipo
nvidia-63
vGPU em uma placa NVIDIA Tesla P4 que roda no barramento PCI 0000:01:00.0:# mdevctl start -u 30820a6f-b1a5-4503-91ca-0c10ba58692a -p 0000:01:00.0 --type nvidia-63
NotaPara os valores do tipo vGPU para dispositivos específicos de GPU, consulte a documentação do software Virtual GPU.
Tornar o dispositivo mediado persistente:
# mdevctl define --auto --uuid 30820a6f-b1a5-4503-91ca-0c10ba58692a
Anexe o dispositivo mediado a uma VM que você deseja compartilhar os recursos do vGPU. Para isso, adicione as seguintes linhas, juntamente com a UUID previamente gerada, às seções <devices/> na configuração XML da VM.
<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'> <source> <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/> </source> </hostdev>
Note que cada UUID só pode ser atribuída a uma VM de cada vez.
- Para que a funcionalidade completa dos dispositivos mediados pelo vGPU esteja disponível nas VMs designadas, configure o licenciamento do software convidado NVIDIA vGPU nas VMs. Para maiores informações e instruções, consulte o Guia do Usuário do Servidor de Licença do Software NVIDIA Virtual GPU.
Verificação
Liste os dispositivos mediados ativos em seu host. Se a saída exibir um dispositivo definido com o UUID usado no procedimento, o NVIDIA vGPU foi configurado corretamente. Por exemplo:
# mdevctl list 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 30820a6f-b1a5-4503-91ca-0c10ba58692a 0000:01:00.0 nvidia-63 (defined)
Recursos adicionais
-
Para mais informações sobre o uso do utilitário
mdevctl
, useman mdevctl
.
12.2. Remoção dos dispositivos NVIDIA vGPU
Para alterar a configuração dos dispositivos mediados por vGPU designados, é necessário remover os dispositivos existentes das VMs designadas. Para instruções, veja abaixo:
Pré-requisitos
O pacote mdevctl está instalado.
# yum install mdevctl
- A VM da qual se deseja remover o dispositivo é desligada.
Procedimento
Obtenha a UUID do dispositivo mediado que você deseja remover. Para fazer isso, use o comando
mdevctl list
:# mdevctl list 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 (defined) 30820a6f-b1a5-4503-91ca-0c10ba58692a 0000:01:00.0 nvidia-63 (defined)
Pare a instância de funcionamento do dispositivo vGPU mediado. Para isso, use o comando
mdevctl stop
com a UUID do dispositivo. Por exemplo, para parar o dispositivo30820a6f-b1a5-4503-91ca-0c10ba58692a
:# mdevctl stop -u 30820a6f-b1a5-4503-91ca-0c10ba58692a
Remova o dispositivo da configuração XML da VM. Para isso, use o utilitário
virsh edit
para editar a configuração XML da VM, e remova o segmento de configuração do mdev. O segmento será semelhante ao seguinte:<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-pci'> <source> <address uuid='30820a6f-b1a5-4503-91ca-0c10ba58692a'/> </source> </hostdev>
Note que parar e destacar o dispositivo mediado não o apaga, mas sim o mantém como defined. Como tal, você pode reiniciar e anexar o dispositivo a uma VM diferente.
Optional: Para apagar o dispositivo mediado parado, remova sua definição:
# mdevctl undefine -u 30820a6f-b1a5-4503-91ca-0c10ba58692a
Verificação
Se você apenas parou e desativou o dispositivo, liste os dispositivos mediados ativos e os dispositivos mediados definidos.
# mdevctl list 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 (defined) # mdevctl list --defined 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 auto (active) 30820a6f-b1a5-4503-91ca-0c10ba58692a 0000:01:00.0 nvidia-63 manual
Se o primeiro comando não exibe o dispositivo, mas o segundo comando exibe, o procedimento foi bem sucedido.
Se você também apagou o dispositivo, o segundo comando não deve exibir o dispositivo.
# mdevctl list 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 (defined) # mdevctl list --defined 85006552-1b4b-45ef-ad62-de05be9171df 0000:01:00.0 nvidia-63 auto (active)
Recursos adicionais
-
Para mais informações sobre o uso do utilitário
mdevctl
, useman mdevctl
.
12.3. Obtenção de informações NVIDIA vGPU sobre seu sistema
Para avaliar as capacidades dos recursos vGPU disponíveis para você, você pode obter informações adicionais sobre os dispositivos mediados em seu sistema, como por exemplo:
- Quantos dispositivos mediados de um determinado tipo podem ser criados
- Que dispositivos mediados já estão configurados em seu sistema.
Pré-requisitos
O pacote mdevctl está instalado.
# yum install mdevctl
Procedimento
Para ver os tipos de vGPU disponíveis em seu host, use o comando
mdevctl types
.Por exemplo, o seguinte mostra as informações para um sistema que usa uma placa Tesla T4 física sob o barramento PCI 0000:41:00.0:
# mdevctl types 0000:41:00.0 nvidia-222 Available instances: 0 Device API: vfio-pci Name: GRID T4-1B Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=16 nvidia-223 Available instances: 0 Device API: vfio-pci Name: GRID T4-2B Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=8 nvidia-224 Available instances: 0 Device API: vfio-pci Name: GRID T4-2B4 Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=8 nvidia-225 Available instances: 0 Device API: vfio-pci Name: GRID T4-1A Description: num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=16 [...]
Para ver os dispositivos vGPU ativos em seu host, incluindo seus tipos, UUIDs, e barramentos PCI dos dispositivos pai, use o comando
mdevctl list
:# mdevctl list 85006552-1b4b-45ef-ad62-de05be9171df 0000:41:00.0 nvidia-223 83c32df7-d52e-4ec1-9668-1f3c7e4df107 0000:41:00.0 nvidia-223 (defined)
Este exemplo mostra que o dispositivo
85006552-1b4b-45ef-ad62-de05be9171df
está funcionando, mas não definido, e o83c32df7-d52e-4ec1-9668-1f3c7e4df107
está definido e em funcionamento.
Recursos adicionais
-
Para mais informações sobre o uso do utilitário
mdevctl
, useman mdevctl
.
12.4. Serviços de streaming remoto de desktop para NVIDIA vGPU
Os seguintes serviços de streaming de desktop remoto foram testados com sucesso para uso com o recurso NVIDIA vGPU nos hosts RHEL 8:
- HP-RGS - Note que atualmente não é possível utilizar HP-RGS com RHEL 8 VMs.
- Mechdyne TGX - Note que atualmente não é possível utilizar o Mechdyne TGX com o Windows Server 2016 VMs.
- NICE DCV - Ao utilizar este serviço de streaming, a Red Hat recomenda o uso de configurações de resolução fixa, pois o uso de resolução dinâmica em alguns casos resulta em uma tela preta. Além disso, atualmente não é possível utilizar NICE DCV com RHEL 8 VMs.
12.5. Informações relacionadas
- Para maiores informações sobre o uso do NVIDIA vGPU na RHEL com a KVM, consulte a Documentação do Software GPU NVIDIA.
Capítulo 13. Configuração de conexões de rede de máquinas virtuais
Para que suas máquinas virtuais (VMs) se conectem através de uma rede ao seu host, a outras VMs em seu host, e a locais em uma rede externa, a rede de VMs deve ser configurada de acordo. Para fornecer rede VM, o hipervisor RHEL 8 e as VMs recém criadas têm uma configuração de rede padrão, que também pode ser modificada posteriormente. Por exemplo, a rede RHEL 8
- Você pode permitir que as VMs em seu host sejam descobertas e conectadas por locais fora do host, como se as VMs estivessem na mesma rede que o host.
- Você pode isolar parcial ou completamente uma VM do tráfego de entrada da rede para aumentar sua segurança e minimizar o risco de qualquer problema com a VM impactando o host.
As seções seguintes explicam os vários tipos de configuração de rede de VMs e fornecem instruções para a configuração de redes de VMs selecionadas.
13.1. Entendendo o trabalho em rede virtual
A conexão de máquinas virtuais (VMs) a outros dispositivos e locais em uma rede tem que ser facilitada pelo hardware do host. As seções seguintes explicam os mecanismos das conexões de rede de VMs e descrevem a configuração padrão da rede de VMs.
13.1.1. Como funcionam as redes virtuais
A rede virtual utiliza o conceito de um switch de rede virtual. Um comutador de rede virtual é uma construção de software que opera em uma máquina host. As VMs se conectam à rede através do comutador de rede virtual. Com base na configuração do switch virtual, uma VM pode usar uma rede virtual existente gerenciada pelo hypervisor, ou um método diferente de conexão de rede.
A figura a seguir mostra um switch de rede virtual conectando duas VMs à rede:

Da perspectiva de um sistema operacional convidado, uma conexão de rede virtual é o mesmo que uma conexão de rede física. Máquinas host vêem os switches de rede virtuais como interfaces de rede. Quando o serviço libvirtd
é instalado e iniciado pela primeira vez, ele cria virbr0, a interface de rede padrão para VMs.
Para visualizar informações sobre esta interface, use o utilitário ip
no host.
$ ip addr show virbr0
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state
UNKNOWN link/ether 1b:c4:94:cf:fd:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
Por padrão, todas as VMs em um único host estão conectadas à mesma rede virtual do tipo NAT, chamada default, que utiliza a interface virbr0. Para detalhes, veja Seção 13.1.2, “Configuração padrão de rede virtual”.
Para o acesso básico à rede de saída somente de VMs, geralmente não é necessária nenhuma configuração de rede adicional, pois a rede padrão é instalada junto com o pacote libvirt
, e é automaticamente iniciada quando o serviço libvirtd
é iniciado.
Se for necessária uma funcionalidade de rede VM diferente, você pode criar redes virtuais e interfaces de rede adicionais e configurar suas VMs para usá-las. Além do NAT padrão, estas redes e interfaces podem ser configuradas para usar um dos seguintes modos:
13.1.2. Configuração padrão de rede virtual
Quando o serviço libvirtd
é instalado pela primeira vez em um host de virtualização, ele contém uma configuração de rede virtual inicial no modo de tradução de endereços de rede (NAT). Por padrão, todas as VMs no host estão conectadas à mesma rede virtual libvirt
, chamada default. As VMs nesta rede podem conectar-se a locais tanto no host quanto na rede além do host, mas com as seguintes limitações:
-
As VMs na rede são visíveis para o host e outras VMs no host, mas o tráfego da rede é afetado pelas firewalls na pilha de rede do sistema operacional convidado e pelas regras de filtragem de rede
libvirt
anexadas à interface do convidado. - As VMs na rede podem se conectar não são visíveis a locais fora do host. O tráfego de saída é afetado pelas regras NAT, bem como pelo firewall do sistema host.
O diagrama a seguir ilustra a configuração padrão da rede VM:

13.2. Utilização do console web para o gerenciamento de interfaces de rede de máquinas virtuais
Usando o console web RHEL 8, você pode gerenciar as interfaces de rede virtuais para as máquinas virtuais às quais o console web está conectado. Você pode:
13.2.1. Visualização e edição de informações da interface de rede virtual no console web
Usando o console web RHEL 8, você pode visualizar e modificar as interfaces de rede virtual em uma máquina virtual selecionada (VM):
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique na linha da VM cujas informações você deseja ver.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Interfaces de rede.
O painel Interfaces de Redes aparece com informações sobre a interface de rede virtual configurada para a VM.
As informações incluem o seguinte:
Type - O tipo de interface de rede para a VM. Os tipos incluem rede virtual, ponte para LAN, e conexão direta.
NotaConexão Ethernet genérica não é suportada no RHEL 8.2.
- Model type - O modelo da interface da rede virtual.
- MAC Address - O endereço MAC da interface da rede virtual.
- IP Address - O endereço IP da interface da rede virtual.
- Source - A fonte da interface da rede. Isto depende do tipo de rede.
- State - O estado da interface da rede virtual.
Para editar as configurações da interface de rede virtual, clique em Editar. O diálogo Configurações da interface de rede virtual é aberto.
- Alterar o tipo de interface, fonte ou modelo.
Clique em Salvar. A interface da rede é modificada.
NotaAs mudanças nas configurações da interface de rede virtual entram em vigor somente após o reinício da VM.
Recursos adicionais
- Para instruções sobre como visualizar informações sobre todas as VMs às quais a sessão do console web está conectada, veja Seção 6.2.1, “Visualizando uma visão geral da virtualização no console web”.
- Para obter instruções sobre como visualizar informações sobre os pools de armazenamento aos quais a sessão do console web está conectada, consulte Seção 6.2.2, “Visualização das informações do pool de armazenamento usando o console web”.
- Para instruções sobre como visualizar informações básicas sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.3, “Visualização de informações básicas da máquina virtual no console web”.
- Para instruções sobre como visualizar o uso de recursos para uma VM selecionada à qual a sessão do console web está conectada, veja Seção 6.2.4, “Visualização do uso de recursos da máquina virtual no console web”.
- Para instruções sobre como visualizar informações em disco sobre um VM selecionado ao qual a sessão do console web está conectada, veja Seção 6.2.5, “Visualização das informações do disco da máquina virtual no console web”.
13.2.2. Conexão de interfaces de rede virtual no console web
Usando o console web RHEL 8, você pode reconectar a interface de rede virtual desconectada configurada para uma máquina virtual selecionada (VM).
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das máquinas virtuais, clique na linha da VM cuja interface de rede virtual você deseja conectar.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre o VM selecionado e controles para desligar o VM.
Clique em Interfaces de rede.
O painel Interfaces de rede aparece com informações sobre as interfaces de rede virtuais configuradas para a VM.
Clique em Plug na linha da interface da rede virtual que você deseja conectar.
A interface de rede virtual selecionada se conecta com a VM.
13.2.3. Desconexão de interfaces de rede virtual no console web
Usando o console web RHEL 8, você pode desconectar as interfaces de rede virtuais conectadas a uma máquina virtual selecionada (VM).
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das máquinas virtuais, clique na linha da VM cuja interface de rede virtual você deseja desconectar.
A linha se expande para revelar o painel Overview com informações básicas sobre o VM selecionado e controles para desligar e excluir o VM.
Clique em Interfaces de rede.
O painel Interfaces de rede aparece com informações sobre as interfaces de rede virtuais configuradas para a VM.
Clique em Desconectar na linha da interface de rede virtual que você deseja desconectar.
A interface de rede virtual selecionada se desconecta da VM.
13.3. Configurações recomendadas de rede de máquinas virtuais usando a interface de linha de comando
Em muitos cenários, a configuração padrão da rede VM é suficiente. Entretanto, se for necessário ajustar a configuração, você pode usar a interface de linha de comando (CLI) para fazer isso. As seções seguintes descrevem as configurações de rede de VMs selecionadas para tais situações.
13.3.1. Configuração de máquinas virtuais visíveis externamente usando a interface de linha de comando
Por padrão, uma VM recém-criada conecta-se a uma rede do tipo NAT que usa virbr0
, a ponte virtual padrão no host. Isto assegura que a VM possa usar o controlador de interface de rede (NIC) do host para se conectar a redes externas, mas a VM não é alcançável a partir de sistemas externos.
Se você precisar que um VM apareça na mesma rede externa que o hipervisor, você deve usar o modo bridged em seu lugar. Para fazer isso, conecte a VM a um dispositivo bridge conectado ao dispositivo de rede física do hypervisor. Para usar a interface de linha de comando para isto, siga as instruções abaixo.
Pré-requisitos
- Uma VM já existente que foi desativada.
A configuração IP do hipervisor. Isto varia de acordo com a conexão de rede do host. Como exemplo, este procedimento utiliza um cenário onde o host é conectado à rede usando um cabo ethernet, e o endereço MAC NIC físico do host é atribuído a um IP estático em um servidor DHCP. Portanto, a interface ethernet é tratada como o IP hypervisor.
Para obter a configuração IP da interface ethernet, use o utilitário
ip addr
:# ip addr [...] enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 54:ee:75:49:dc:46 brd ff:ff:ff:ff:ff:ff inet 10.0.0.148/24 brd 10.0.0.255 scope global dynamic noprefixroute enp0s25
Procedimento
Criar e estabelecer uma conexão de ponte para a interface física no host. Para instruções, consulte a seção Configuração de uma ponte de rede.
Observe que em um cenário onde a atribuição de IP estática é usada, você deve mover a configuração IPv4 da interface física ethernet para a interface bridge.
Modificar a rede da VM para usar a interface bridged criada. Por exemplo, os seguintes conjuntos testguest para usar bridge0.
# virt-xml testguest --edit --network bridge=bridge0 Domain 'testguest' defined successfully.
Inicie o VM.
# virsh start testguest
No sistema operacional convidado, ajuste as configurações de IP e DHCP da interface de rede do sistema como se a VM fosse outro sistema físico na mesma rede que o hipervisor.
Os passos específicos para isso serão diferentes dependendo do sistema operacional convidado utilizado pela VM. Por exemplo, se o sistema operacional convidado for RHEL 8, veja Configurando uma conexão Ethernet.
Verificação
Certifique-se de que a ponte recém-criada esteja funcionando e contenha tanto a interface física do host quanto a interface da VM.
# ip link show master bridge0 2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UP mode DEFAULT group default qlen 1000 link/ether 54:ee:75:49:dc:46 brd ff:ff:ff:ff:ff:ff 10: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bridge0 state UNKNOWN mode DEFAULT group default qlen 1000 link/ether fe:54:00:89:15:40 brd ff:ff:ff:ff:ff:ff
Garantir que a VM apareça na mesma rede externa que o hipervisor:
No sistema operacional convidado, obter o ID da rede do sistema. Por exemplo, se for um convidado Linux:
# ip addr [...] enp0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:09:15:46 brd ff:ff:ff:ff:ff:ff inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute enp0s0
A partir de um sistema externo conectado à rede local, conectar à VM usando o ID obtido.
# ssh root@10.0.0.150 root@10.0.0.150's password: Last login: Mon Sep 24 12:05:36 2019 root~#*
Se a conexão funcionar, a rede foi configurada com sucesso.
Recursos adicionais
- Para instruções sobre como criar uma VM visível externamente usando o console web, veja Seção 13.4.1, “Configuração de máquinas virtuais visíveis externamente usando o console web”.
- Para informações adicionais sobre o modo ponte, ver Seção 13.5.3, “Rede virtual em modo ponte”.
Em certas situações, como quando uma VPN cliente-para-local é utilizada enquanto a VM está hospedada no cliente, não é possível utilizar o modo bridged para tornar suas VMs disponíveis para locais externos.
Para contornar este problema, você pode definir um NAT de destino para a VM. Para obter detalhes, consulte o documento Configurando e gerenciando a rede.
13.3.2. Isolar as máquinas virtuais umas das outras usando a interface de linha de comando
Para evitar que uma máquina virtual (VM) se comunique com outras VMs em seu host, por exemplo, para evitar o compartilhamento de dados ou para aumentar a segurança do sistema, você pode isolar completamente a VM do tráfego da rede do lado do host.
Por padrão, uma VM recém-criada se conecta a uma rede do tipo NAT que usa virbr0
, a ponte virtual padrão no host. Isto garante que a VM possa usar o NIC do host para se conectar a redes externas, bem como a outras VMs no host. Esta é uma conexão geralmente segura, mas em alguns casos, a conectividade com outras VMs pode ser um risco à segurança ou à privacidade dos dados. Em tais situações, você pode isolar a VM usando a conexão direta macvtap
em modo privado ao invés da rede padrão.
No modo privado, a VM é visível para sistemas externos e pode receber um IP público na sub-rede do host, mas a VM e o host não podem acessar um ao outro, e a VM também não é visível para outras VMs no host.
Para instruções para configurar o modo privado macvtap
em sua VM usando o CLI, veja abaixo.
Pré-requisitos
- Uma VM existente com a configuração padrão NAT.
O nome da interface do host que você deseja usar para a conexão
macvtap
. A interface que você deve selecionar variará de acordo com o seu caso de uso e a configuração da rede em seu host. Como exemplo, este procedimento utiliza a interface ethernet física do host.Para obter o nome da interface visada:
$ ip addr [...] 2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 54:e1:ad:42:70:45 brd ff:ff:ff:ff:ff:ff [...]
Procedimento
Use a interface selecionada para configurar o
macvtap
privado no VM selecionado. O exemplo a seguir configuramacvtap
em modo privado na interfaceenp0s31f6
para a VM chamada panic-room.# virt-xml panic-room --edit --network type=direct,source=enp0s31f6,source.mode=private Domain panic-room XML defined successfully
Verificação
Inicie o VM atualizado.
# virsh start panic-room Domain panic-room started
Liste as estatísticas da interface para a VM.
# virsh domstats panic-room --interface Domain: 'panic-room' net.count=1 net.0.name=macvtap0 net.0.rx.bytes=0 net.0.rx.pkts=0 net.0.rx.errs=0 net.0.rx.drop=0 net.0.tx.bytes=0 net.0.tx.pkts=0 net.0.tx.errs=0 net.0.tx.drop=0
Se o comando exibir saída semelhante, a VM foi isolada com sucesso.
Recursos adicionais
- Para instruções sobre como isolar uma VM usando o console web, veja Seção 13.4.2, “Isolar as máquinas virtuais umas das outras usando o console web”.
-
Para informações adicionais sobre o modo privado
macvtap
, ver Seção 13.5.6, “Fixação direta do dispositivo de rede virtual”. - Para medidas de segurança adicionais que você pode estabelecer em uma VM, veja Capítulo 15, Segurança de máquinas virtuais.
13.4. Configurações recomendadas de rede de máquinas virtuais usando o console web
Em muitos cenários, a configuração padrão da rede VM é suficiente. Entretanto, se for necessário ajustar a configuração, você pode usar o console web RHEL 8 para fazê-lo. As seções seguintes descrevem as configurações de rede de VMs selecionadas para tais situações.
13.4.1. Configuração de máquinas virtuais visíveis externamente usando o console web
Por padrão, uma VM recém-criada conecta-se a uma rede do tipo NAT que usa virbr0
, a ponte virtual padrão no host. Isto assegura que a VM possa usar o controlador de interface de rede (NIC) do host para se conectar a redes externas, mas a VM não é alcançável a partir de sistemas externos.
Se você precisar que uma VM apareça na mesma rede externa que o hipervisor, você deve usar o modo bridged em seu lugar. Para fazer isso, conecte a VM a um dispositivo bridge conectado ao dispositivo de rede física do hypervisor. Para usar o console web RHEL 8 para isso, siga as instruções abaixo.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Uma VM já existente que foi desativada.
A configuração IP do hipervisor. Isto varia de acordo com a conexão de rede do host. Como exemplo, este procedimento utiliza um cenário onde o host é conectado à rede usando um cabo ethernet, e o endereço MAC NIC físico do host é atribuído a um IP estático em um servidor DHCP. Portanto, a interface ethernet é tratada como o IP hypervisor.
Para obter a configuração IP da interface ethernet, vá para a guia
Networking
no console web, e veja a seçãoInterfaces
.
Procedimento
Criar e estabelecer uma conexão de ponte para a interface física no host. Para instruções, consulte Configuração de pontes de rede no console web.
Observe que em um cenário onde a atribuição de IP estática é usada, você deve mover a configuração IPv4 da interface física ethernet para a interface bridge.
Modificar a rede da VM para usar a interface ponte. Na aba Interfaces de rede da VM:
- Clique em Adicionar interface de rede
No diálogo
Add Virtual Network Interface
, definir:-
Interface Type para
Bridge to LAN
-
Fonte para a ponte recém-criada, por exemplo
bridge0
-
Interface Type para
- Clique em Adicionar
- Optional: Clique em Desconectar para todas as outras interfaces conectadas à VM.
- Clique em Run para iniciar a VM.
No sistema operacional convidado, ajuste as configurações de IP e DHCP da interface de rede do sistema como se a VM fosse outro sistema físico na mesma rede que o hipervisor.
Os passos específicos para isso serão diferentes dependendo do sistema operacional convidado utilizado pela VM. Por exemplo, se o sistema operacional convidado for RHEL 8, veja Configurando uma conexão Ethernet.
Verificação
Na aba Networking do console web do host, clique na linha com a ponte recém-criada para garantir que ela esteja funcionando e contenha tanto a interface física do host quanto a interface da VM.
Garantir que a VM apareça na mesma rede externa que o hipervisor.
No sistema operacional convidado, obter o ID da rede do sistema. Por exemplo, se for um convidado Linux:
# ip addr [...] enp0s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 52:54:00:09:15:46 brd ff:ff:ff:ff:ff:ff inet 10.0.0.150/24 brd 10.0.0.255 scope global dynamic noprefixroute enp0s0
A partir de um sistema externo conectado à rede local, conectar à VM usando o ID obtido.
# ssh root@10.0.0.150 root@110.34.5.18's password: Last login: Mon Sep 24 12:05:36 2019 root~#*
Se a conexão funcionar, a rede foi configurada com sucesso.
Recursos adicionais
- Para instruções sobre como criar uma VM visível externamente usando a CLI, veja Seção 13.3.1, “Configuração de máquinas virtuais visíveis externamente usando a interface de linha de comando”.
- Para informações adicionais sobre o modo ponte, ver Seção 13.5.3, “Rede virtual em modo ponte”.
Em certas situações, como quando uma VPN cliente-para-local é utilizada enquanto a VM está hospedada no cliente, não é possível utilizar o modo bridged para tornar suas VMs disponíveis para locais externos.
Para contornar este problema, você pode definir um NAT de destino para a VM. Para obter detalhes, consulte o documento Configurando e gerenciando a rede.
13.4.2. Isolar as máquinas virtuais umas das outras usando o console web
Para evitar que uma máquina virtual (VM) se comunique com outras VMs em seu host, por exemplo, para evitar o compartilhamento de dados ou para aumentar a segurança do sistema, você pode isolar completamente a VM do tráfego da rede do lado do host.
Por padrão, uma VM recém-criada se conecta a uma rede do tipo NAT que usa virbr0
, a ponte virtual padrão no host. Isto garante que a VM possa usar o NIC do host para se conectar a redes externas, bem como a outras VMs no host. Esta é uma conexão geralmente segura, mas em alguns casos, a conectividade com outras VMs pode ser um risco à segurança ou à privacidade dos dados. Em tais situações, você pode isolar a VM usando a conexão direta macvtap
em modo privado ao invés da rede padrão.
No modo privado, a VM é visível para sistemas externos e pode receber um IP público na sub-rede do host, mas a VM e o host não podem acessar um ao outro, e a VM também não é visível para outras VMs no host.
Para instruções para configurar o modo privado macvtap
em sua VM usando o console web, veja abaixo.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
- Uma VM existente com a configuração padrão NAT.
Procedimento
No painel Virtual Machines, clique na linha com a máquina virtual que você deseja isolar.
Abre-se um painel com as informações básicas sobre a VM.
- Clique na guia Network Interfaces.
Clique em Editar.
O diálogo
Virtual Machine Interface Settings
é aberto.- Definir Interface Type para Direct Attachment
Defina Source para a interface do host de sua escolha.
Observe que a interface que você selecionar variará dependendo de seu caso de uso e da configuração da rede em seu host.
Verificação
- Comece a VM clicando em Run.
No painel Terminal do console web, liste as estatísticas da interface para a VM. Por exemplo, para ver o tráfego da interface de rede para a VM panic-room:
# virsh domstats panic-room --interface Domain: 'panic-room' net.count=1 net.0.name=macvtap0 net.0.rx.bytes=0 net.0.rx.pkts=0 net.0.rx.errs=0 net.0.rx.drop=0 net.0.tx.bytes=0 net.0.tx.pkts=0 net.0.tx.errs=0 net.0.tx.drop=0
Se o comando exibir saída semelhante, a VM foi isolada com sucesso.
Recursos adicionais
- Para instruções sobre como isolar uma VM usando a linha de comando, veja Seção 13.3.2, “Isolar as máquinas virtuais umas das outras usando a interface de linha de comando”.
-
Para informações adicionais sobre o modo privado
macvtap
, ver Seção 13.5.6, “Fixação direta do dispositivo de rede virtual”. - Para medidas de segurança adicionais que você pode estabelecer em uma VM, veja Capítulo 15, Segurança de máquinas virtuais.
13.5. Tipos de conexões de rede de máquinas virtuais
Para modificar as propriedades de rede e o comportamento de suas VMs, altere o tipo de rede virtual ou a interface que as VMs utilizam. As seções seguintes descrevem os tipos de conexão disponíveis para as VMs no RHEL 8.
13.5.1. Rede virtual com tradução de endereços de rede
Por padrão, os switches de rede virtuais operam em modo de tradução de endereços de rede (NAT). Eles usam mascaramento IP em vez de Source-NAT (SNAT) ou Destination-NAT (DNAT). O mascaramento IP permite que os VMs conectados utilizem o endereço IP da máquina host para a comunicação com qualquer rede externa. Quando o switch de rede virtual está operando em modo NAT, os computadores externos ao host não podem se comunicar com as VMs dentro do host.

Os switches de rede virtual utilizam NAT configurado por regras iptables. A edição destas regras enquanto o switch está em funcionamento não é recomendada, pois regras incorretas podem resultar na impossibilidade de comunicação do switch.
13.5.2. Rede virtual em modo roteado
Ao utilizar o modo Routed, o switch virtual se conecta à LAN física conectada à máquina host, passando o tráfego para frente e para trás sem o uso de NAT. O switch virtual pode examinar todo o tráfego e usar as informações contidas nos pacotes da rede para tomar decisões de roteamento. Ao utilizar este modo, as máquinas virtuais (VMs) estão todas em uma única sub-rede, separadas da máquina host. A sub-rede VM é roteada através de um switch virtual, que existe na máquina hospedeira. Isto permite conexões de entrada, mas requer entradas extras na tabela de roteamento para sistemas na rede externa.
O modo roteado utiliza o roteamento baseado no endereço IP:

Topologias comuns que utilizam modo roteado incluem DMZs e hospedagem de servidores virtuais.
- DMZ
Você pode criar uma rede onde um ou mais nós são colocados em uma subrede controlada por razões de segurança. Tal sub-rede é conhecida como zona desmilitarizada (DMZ).
Máquinas host em uma DMZ normalmente fornecem serviços para máquinas host WAN (externas), bem como máquinas host LAN (internas). Como isto exige que elas sejam acessíveis a partir de múltiplos locais, e considerando que estes locais são controlados e operados de diferentes maneiras com base em seu nível de segurança e confiança, o modo roteado é a melhor configuração para este ambiente.
- Hospedagem de servidores virtuais
Um provedor de hospedagem de servidor virtual pode ter várias máquinas host, cada uma com duas conexões físicas de rede. Uma interface é usada para gerenciamento e contabilidade, a outra para as VMs se conectarem. Cada VM tem seu próprio endereço IP público, mas as máquinas host utilizam endereços IP privados para que somente administradores internos possam gerenciar as VMs.
13.5.3. Rede virtual em modo ponte
Na maioria dos modos de rede de VMs, as VMs criam e conectam-se automaticamente à ponte virtual virbr0
. Em contraste, no modo bridged, a VM se conecta a uma ponte Linux existente no host. Como resultado, a VM é diretamente visível na rede física. Isto permite conexões de entrada, mas não requer nenhuma entrada extra na tabela de roteamento.
O modo Bridged usa comutação de conexão com base no endereço MAC:

No modo ponte, a VM aparece dentro da mesma sub-rede que a máquina host. Todas as outras máquinas físicas na mesma rede física podem detectar a VM e acessá-la.
Ligação em rede
É possível utilizar múltiplas interfaces físicas de ponte no hipervisor, unindo-as com um vínculo. A ligação pode então ser adicionada a uma ponte, após o que as VMs também podem ser adicionadas à ponte. No entanto, o acionador de ligação tem vários modos de operação, e nem todos estes modos funcionam com uma ponte onde as VMs estão em uso.
Os seguintes modos de colagem são utilizáveis:
- modo 1
- modo 2
- modo 4
Em contraste, a utilização dos modos 0, 3, 5 ou 6 é susceptível de causar falha na conexão. Observe também que o monitoramento da interface independente de mídia (MII) deve ser usado para monitorar os modos de ligação, pois o monitoramento do Protocolo de Resolução de Endereços (ARP) não funciona corretamente.
Para mais informações sobre os modos de ligação, consulte a Base de Conhecimento da Red Hat.
Cenários comuns
Os casos mais comuns de uso para o modo ponte incluem:
- Implantação de VMs em uma rede existente ao lado de máquinas host, fazendo a diferença entre máquinas virtuais e físicas invisíveis para o usuário final.
- Implantação de VMs sem fazer nenhuma alteração nas configurações físicas de rede existentes.
- Implantação de VMs que devem ser facilmente acessíveis a uma rede física existente. Colocar as VMs em uma rede física onde elas devem acessar os serviços DHCP.
- Conexão de VMs a uma rede existente onde são utilizadas LANs virtuais (VLANs).
Recursos adicionais
- Para instruções sobre a configuração de suas VMs para usar o modo bridged, veja Seção 13.3.1, “Configuração de máquinas virtuais visíveis externamente usando a interface de linha de comando” ou Seção 13.4.1, “Configuração de máquinas virtuais visíveis externamente usando o console web”.
-
Para uma explicação detalhada dos parâmetros
bridge_opts
, usados para configurar o modo de rede em ponte, consulte o Guia de Administração da Virtualização da Red Hat.
13.5.4. Rede virtual em modo isolado
Ao utilizar o modo isolated, as máquinas virtuais conectadas ao switch virtual podem se comunicar entre si e com a máquina host, mas seu tráfego não passará fora da máquina host, e elas não podem receber tráfego de fora da máquina host. O uso de dnsmasq
neste modo é necessário para funcionalidades básicas, como DHCP.

13.5.5. Rede virtual em modo aberto
Ao utilizar o modo open para a rede, libvirt
não gera nenhuma regra iptables
para a rede. Como resultado, libvirt
não sobregrava as regras iptables
fornecidas pelo host, e o usuário pode, portanto, gerenciar manualmente as regras da VM iptables
.
13.5.6. Fixação direta do dispositivo de rede virtual
Você pode usar o driver macvtap
para anexar o NIC de uma máquina virtual diretamente a uma interface física especificada da máquina host. A conexão macvtap
tem uma série de modos, incluindo private mode.
Neste modo, todos os pacotes são enviados para o switch externo e só serão entregues a uma VM alvo na mesma máquina host se forem enviados através de um roteador ou gateway externo e estes os enviarão de volta para o host. O modo privado pode ser usado para impedir que as VMs individuais em um único host se comuniquem entre si.

Recursos adicionais
-
Para instruções sobre a configuração de suas VMs para usar
macvtap
em modo privado, veja Seção 13.3.2, “Isolar as máquinas virtuais umas das outras usando a interface de linha de comando” ou Seção 13.4.2, “Isolar as máquinas virtuais umas das outras usando o console web”.
13.5.7. Comparação dos tipos de conexão de máquinas virtuais
A tabela a seguir fornece informações sobre os locais aos quais os tipos selecionados de configurações de rede de máquinas virtuais (VM) podem se conectar, e aos quais eles são visíveis.
Tabela 13.1. Tipos de conexão de máquinas virtuais
Conexão com o anfitrião | Conexão com outras VMs no host | Conexão com locais externos | Visível para locais externos | |
---|---|---|---|---|
Bridged mode | SIM | SIM | SIM | SIM |
NAT | SIM | SIM | SIM | no |
Routed mode | SIM | SIM | SIM | SIM |
Isolated mode | SIM | SIM | no | no |
Private mode | no | no | SIM | SIM |
Open mode |
Depends on the host’s |
13.6. Recursos adicionais
- Para informações adicionais sobre configurações de rede no RHEL 8, consulte o documento Configurando e gerenciando a rede.
- Placas de interface de rede específicas podem ser anexadas às VMs como dispositivos SR-IOV, o que aumenta seu desempenho. Para obter detalhes, consulte Seção 10.8, “Gerenciamento de dispositivos SR-IOV”.
Capítulo 14. Compartilhamento de arquivos entre o host e suas máquinas virtuais
Você pode freqüentemente precisar compartilhar dados entre seu sistema host e as máquinas virtuais (VMs) que ele executa. Para fazer isso de forma rápida e eficiente, você pode configurar compartilhamentos de arquivos NFS ou Samba em seu sistema.
14.1. Compartilhamento de arquivos entre o host e as máquinas virtuais Linux
Para um compartilhamento eficiente de arquivos entre seu sistema host e as VMs Linux às quais ele está conectado, você pode exportar um compartilhamento NFS que suas VMs podem montar e acessar.
Pré-requisitos
-
O pacote
nfs-utils
está instalado no host. Um diretório que você deseja compartilhar com seus VMs. Se você não quiser compartilhar nenhum de seus diretórios existentes, crie um novo, por exemplo, chamado shared-files.
# mkdir shared-files
O host é visível e alcançável através de uma rede para o VM. Este é geralmente o caso se a VM estiver conectada usando o tipo de rede virtual NAT e bridge. Entretanto, para a conexão macvtap, é necessário primeiro configurar o recurso macvlan no host. Para fazer isso:
Criar um arquivo de dispositivo de rede, por exemplo, chamado
vm-macvlan.netdev
no diretório/etc/systemd/network/
do host.# touch /etc/systemd/network/vm-macvlan.netdev
Edite o arquivo do dispositivo de rede para ter o seguinte conteúdo. Você pode substituir
vm-macvlan
pelo nome que você escolheu para seu dispositivo de rede.[NetDev] Name=vm-macvlan Kind=macvlan [MACVLAN] Mode=bridge
Crie um arquivo de configuração de rede para seu dispositivo de rede macvlan, por exemplo
vm-macvlan.network
.# touch /etc/systemd/network/vm-macvlan.network
Edite o arquivo de configuração da rede para ter o seguinte conteúdo. Você pode substituir
vm-macvlan
pelo nome que você escolheu para seu dispositivo de rede.[Match] Name=_vm-macvlan_ [Network] IPForward=yes Address=192.168.250.33/24 Gateway=192.168.250.1 DNS=192.168.250.1
Crie um arquivo de configuração de rede para sua interface física de rede. Por exemplo, se sua interface é
enp4s0
:# touch /etc/systemd/network/enp4s0.network
Se você não tiver certeza de qual nome de interface usar, você pode usar o comando
ifconfig
em seu host para obter a lista de interfaces de rede ativas.Edite o arquivo de configuração física da rede para tornar a rede física uma parte da interface macvlan, neste caso vm-macvlan:
[Match] Name=enp4s0 [Network] MACVLAN=vm-macvlan
- Reinicie seu anfitrião.
- Optional: Para maior segurança, garanta que suas VMs sejam compatíveis com o NFS versão 4 ou posterior.
Procedimento
No host, exporte um diretório com os arquivos que você deseja compartilhar como um sistema de arquivos em rede (NFS).
Obter o endereço IP de cada máquina virtual com a qual você deseja compartilhar arquivos. O exemplo a seguir obtém os IPs de testguest1 e testguest2.
# virsh domifaddr testguest1 Name MAC address Protocol Address ---------------------------------------------------------------- vnet0 52:53:00:84:57:90 ipv4 192.168.124.220/24 # virsh domifaddr testguest2 Name MAC address Protocol Address ---------------------------------------------------------------- vnet1 52:53:00:65:29:21 ipv4 192.168.124.17/24
Edite o arquivo
/etc/exports
no host e adicione uma linha que inclua o diretório que você deseja compartilhar, IPs de VMs com as quais você deseja compartilhar, e opções de compartilhamento.Shared directory VM1-IP(options) VM2-IP(options) [...]
Por exemplo, o seguinte compartilha o diretório
/usr/local/shared-files
no host com testguest1 e testguest2, e permite que as VMs editem o conteúdo do diretório:/usr/local/shared-files/ 192.168.124.220(rw,sync) 192.168.124.17(rw,sync)
Exportar o sistema de arquivo atualizado.
# exportfs -a
Assegurar que o processo NFS seja iniciado:
# systemctl start nfs-server
Obter o endereço IP do sistema hospedeiro. Isto será usado para montagem posterior do diretório compartilhado nas VMs.
# ip addr [...] 5: virbr0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:32:ff:a5 brd ff:ff:ff:ff:ff:ff inet 192.168.124.1/24 brd 192.168.124.255 scope global virbr0 valid_lft forever preferred_lft forever [...]
Observe que a rede relevante é aquela que está sendo usada para conexão com o host pelas VMs com as quais você deseja compartilhar arquivos. Normalmente, isto é
virbr0
.
No SO convidado de uma VM especificada no arquivo
/etc/exports
, monte o sistema de arquivo exportado.Crie um diretório que você deseja usar como ponto de montagem para o sistema de arquivos compartilhados, por exemplo
/mnt/host-share
:# mkdir /mnt/host-share
Montar o diretório exportado pelo anfitrião no ponto de montagem. Este exemplo monta o diretório
/usr/local/shared-files
exportado pelo anfitrião192.168.124.1
no site/mnt/host-share
no convidado:# mount 192.168.124.1:/usr/local/shared-files /mnt/host-share
Para verificar o sucesso da montagem, acessar e explorar o diretório compartilhado no ponto de montagem:
# cd /mnt/host-share # ls shared-file1 shared-file2 shared-file3
14.2. Compartilhamento de arquivos entre o host e as máquinas virtuais Windows
Para um compartilhamento eficiente de arquivos entre seu sistema host e as VMs Windows às quais ele está conectado, você pode preparar um servidor Samba que suas VMs podem acessar.
Pré-requisitos
Os pacotes
samba
são instalados em seu host. Caso não estejam:# yum install samba
O host é visível e alcançável através de uma rede para o VM. Este é geralmente o caso se a VM estiver conectada usando o tipo de rede virtual NAT e bridge. Entretanto, para a conexão macvtap, é necessário primeiro configurar o recurso macvlan no host. Para fazer isso:
Criar um arquivo de dispositivo de rede, por exemplo, chamado
vm-macvlan.netdev
no diretório/etc/systemd/network/
do host.# touch /etc/systemd/network/vm-macvlan.netdev
Edite o arquivo do dispositivo de rede para ter o seguinte conteúdo. Você pode substituir
vm-macvlan
pelo nome que você escolheu para seu dispositivo de rede.[NetDev] Name=vm-macvlan Kind=macvlan [MACVLAN] Mode=bridge
Crie um arquivo de configuração de rede para seu dispositivo de rede macvlan, por exemplo
vm-macvlan.network
.# touch /etc/systemd/network/vm-macvlan.network
Edite o arquivo de configuração da rede para ter o seguinte conteúdo. Você pode substituir
vm-macvlan
pelo nome que você escolheu para seu dispositivo de rede.[Match] Name=_vm-macvlan_ [Network] IPForward=yes Address=192.168.250.33/24 Gateway=192.168.250.1 DNS=192.168.250.1
Crie um arquivo de configuração de rede para sua interface física de rede. Por exemplo, se sua interface é
enp4s0
:# touch /etc/systemd/network/enp4s0.network
Se você não tiver certeza de qual interface usar, você pode usar o comando
ifconfig
em seu host para obter a lista de interfaces de rede ativas.Edite o arquivo de configuração física da rede para tornar a rede física uma parte da interface macvlan, neste caso vm-macvlan:
[Match] Name=enp4s0 [Network] MACVLAN=vm-macvlan
- Reinicie seu anfitrião.
Procedimento
No host, criar um Samba share e torná-lo acessível para sistemas externos.
Adicionar permissões de firewall para o Samba.
# firewall-cmd --permanent --zone=public --add-service=samba success # firewall-cmd --reload success
Edite o arquivo
/etc/samba/smb.conf
:Adicione o seguinte na seção
[global]
:mapa para convidado = Mau Usuário
Adicione o seguinte no final do arquivo:
#=== Share Definitions === [VM-share] path = /samba/VM-share browsable = yes guest ok = yes read only = no hosts allow = 192.168.122.0/24
Note que a linha
hosts allow
restringe a acessibilidade do compartilhamento apenas aos hosts da rede VM. Se você quiser que o compartilhamento seja acessível por qualquer pessoa, remova a linha.
Criar o diretório
/samba/VM-share
.# mkdir -p /samba/VM-share
Habilitar o serviço de Samba.
# systemctl enable smb.service Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
Reinicie o serviço de Samba.
# systemctl restart smb.service
Permitir que o diretório
VM-share
seja acessível e modificável para as VMs.# chmod -R 0755 /samba/VM-share/ # chown -R nobody:nobody /samba/VM-share/
Adicionar o selo SELinux Samba sharing ao
/etc/samba/VM-share/
# chcon -t samba_share_t /samba/VM-share/
No sistema operacional Windows guest, anexe o Samba share como um local de rede.
- Abra o File Explorer e clique com o botão direito do mouse em "Este PC".
No menu de contexto, clique em
Add a network location
.- No assistente Add Network Location que se abre, selecione "Choose a custom network location" e clique em Next.
No campo "Internet ou endereço de rede", digite host-IP/VM-share, onde host-IP é o endereço IP do host. Normalmente, o IP do host é o gateway padrão da VM. Em seguida, clique em Next.
- Quando o assistente perguntar se você deseja renomear o diretório compartilhado, mantenha o nome padrão. Isto assegura a consistência da configuração do compartilhamento de arquivos entre a VM e o convidado. Clique em Próximo.
- Se o acesso à localização da rede foi bem sucedido, você pode agora clicar em Finish e abrir o diretório compartilhado.
Capítulo 15. Segurança de máquinas virtuais
Como administrador de um sistema RHEL 8 com máquinas virtuais (VMs), garantir que suas VMs sejam tão seguras quanto possível reduz significativamente o risco de que seus sistemas operacionais hóspede e host sejam infectados por software malicioso.
Este documento descreve a mecânica de proteger as VMs em um host RHEL 8 e fornece uma lista de métodos para aumentar a segurança de suas VMs.
15.1. Como funciona a segurança em máquinas virtuais
Ao utilizar máquinas virtuais (VMs), vários sistemas operacionais podem ser alojados dentro de uma única máquina host. Estes sistemas são conectados ao host através do hypervisor, e geralmente também através de uma rede virtual. Como consequência, cada VM pode ser usado como um vetor para atacar o host com software malicioso, e o host pode ser usado como um vetor para atacar qualquer uma das VMs.
Figura 15.1. Um vetor potencial de ataque de malware em um host de virtualização

Como o hypervisor usa o kernel do host para gerenciar as VMs, os serviços executados no sistema operacional da VM são freqüentemente usados para injetar código malicioso no sistema host. Entretanto, você pode proteger seu sistema contra tais ameaças de segurança, usando uma série de recursos de segurança em seu host e em seus sistemas convidados.
Estas características, tais como SELinux ou QEMU sandboxing, fornecem várias medidas que tornam mais difícil para o código malicioso atacar o hypervisor e transferir entre seu host e suas VMs.
Figura 15.2. Evitou ataques de malware a um hospedeiro de virtualização

Muitas das características que a RHEL 8 fornece para a segurança de VM estão sempre ativas e não precisam ser habilitadas ou configuradas. Para maiores detalhes, veja Seção 15.4, “Recursos automáticos para segurança de máquinas virtuais”.
Além disso, você pode aderir a uma variedade de melhores práticas para minimizar a vulnerabilidade de seus VMs e seu hipervisor. Para mais informações, consulte Seção 15.2, “Melhores práticas para a fixação de máquinas virtuais”.
15.2. Melhores práticas para a fixação de máquinas virtuais
Seguir as instruções abaixo diminui significativamente o risco de suas máquinas virtuais serem infectadas por código malicioso e usadas como vetores de ataque para infectar seu sistema hospedeiro.
On the guest side:
Proteja a máquina virtual como se fosse uma máquina física. Os métodos específicos disponíveis para aumentar a segurança dependem do sistema operacional convidado.
Se seu VM estiver executando o RHEL 8, consulte Configuração e gerenciamento de segurança no RHEL 8 para instruções detalhadas sobre como melhorar a segurança de seu sistema de convidados.
On the host side:
- Ao gerenciar as VMs remotamente, use utilitários criptográficos como SSH e protocolos de rede como SSL para conectar-se às VMs.
Certifique-se de que a SELinux está em modo Enforcing:
# getenforce Enforcing
Se o SELinux estiver desativado ou no modo Permissive, consulte o documento Utilizando o SELinux para obter instruções sobre como ativar o modo de aplicação.
NotaO modo SELinux Enforcing também permite o recurso sVirt RHEL 8. Este é um conjunto de booleans SELinux especializados para virtualização, que podem ser ajustados manualmente para uma gestão de segurança de VM de granulometria fina.
Use as VMs com SecureBoot:
O SecureBoot é uma característica que garante que seu VM esteja rodando um SO criptograficamente assinado. Isto impede que as VMs cujo sistema operacional tenha sido alterado por um ataque de malware inicializem.
O SecureBoot só pode ser aplicado ao instalar uma VM Linux que utiliza firmware OVMF. Para instruções, veja Seção 15.3, “Criando uma máquina virtual SecureBoot”.
Não utilize os comandos
qemu-*
, tais comoqemu-img
.QEMU é um componente essencial da arquitetura de virtualização no RHEL 8, mas é difícil de gerenciar manualmente, e configurações impróprias de QEMU podem causar vulnerabilidades de segurança. Portanto, o uso dos comandos
qemu-*
não é suportado pela Red Hat. Ao invés disso, é altamente recomendado interagir com QEMU usando libvirt utilitários, tais comovirsh
,virt-install
evirt-xml
, pois estes orquestram QEMU de acordo com as melhores práticas.
Recursos adicionais
- Para informações detalhadas sobre a modificação de suas booleanas de virtualização, veja Seção 15.5, “Booleans de virtualização”.
15.3. Criando uma máquina virtual SecureBoot
A seguir, fornecemos instruções sobre a criação de uma máquina virtual Linux (VM) que utiliza o recurso SecureBoot, que garante que sua VM esteja rodando um SO criptograficamente assinado. Se o sistema operacional convidado de uma VM foi alterado por malware, o SecureBoot impede a inicialização da VM, o que impede a possível propagação do malware para sua máquina host.
Pré-requisitos
- A VM está usando o tipo de máquina Q35.
Os pacotes
edk2-OVMF
estão instalados:# yum install edk2-ovmf
Uma fonte de instalação de sistema operacional (SO) está disponível localmente ou em uma rede. Este pode ser um dos seguintes formatos:
- Uma imagem ISO de um meio de instalação
- Uma imagem em disco de uma instalação de VM existente
- Opcional: Um arquivo Kickstart pode ser fornecido para uma configuração mais rápida e fácil da instalação.
Procedimento
Use o comando
virt-install
para criar uma VM, conforme detalhado em Seção 2.2.1, “Criação de máquinas virtuais usando a interface de linha de comando”. Para a opção--boot
, utilize o valoruefi,nvram_template=/usr/share/OVMF/OVMF_VARS.secboot.fd
. Isto usa os arquivosOVMF_VARS.secboot.fd
eOVMF_CODE.secboot.fd
como modelos para as configurações não voláteis de RAM (NVRAM) da VM, o que permite o recurso SecureBoot.Por exemplo:
# virt-install --name rhel8sb --memory 4096 --vcpus 4 --os-variant rhel8.0 --boot uefi,nvram_template=/usr/share/OVMF/OVMF_VARS.secboot.fd --disk boot_order=2,size=10 --disk boot_order=1,device=cdrom,bus=scsi,path=/images/RHEL-8.0-installation.iso
- Siga o procedimento de instalação do sistema operacional de acordo com as instruções na tela.
- Após o SO convidado ser instalado, acesse a linha de comando da VM abrindo o terminal no console gráfico convidado ou conectando-se ao SO convidado usando SSH.
Verifique se o SecureBoot está habilitado usando o comando
mokutil --sb-state
:# mokutil --sb-state SecureBoot enabled
15.4. Recursos automáticos para segurança de máquinas virtuais
Além dos meios manuais para melhorar a segurança de suas máquinas virtuais listados em Seção 15.2, “Melhores práticas para a fixação de máquinas virtuais”, uma série de recursos de segurança são fornecidos pelo pacote de software libvirt e são automaticamente habilitados quando se utiliza a virtualização no RHEL 8. Estes incluem:
- Sessões do sistema e do usuário
Para acessar todas as utilidades disponíveis para o gerenciamento de máquinas virtuais no RHEL 8, você precisa usar o system session da libvirt. Para isso, você deve ter privilégios de root no sistema ou fazer parte do grupo de usuários libvirt.
Os usuários não-rotários que não fazem parte do grupo libvirt só podem acessar um user session de libvirt, que tem que respeitar os direitos de acesso do usuário local ao acessar os recursos. Por exemplo, na sessão do usuário, não é possível detectar ou acessar VMs criadas na sessão do sistema ou por outros usuários. Além disso, as opções de configuração de rede de VMs disponíveis são significativamente limitadas.
NotaA documentação RHEL 8 assume que você tem privilégios de sessão do sistema libvirt.
- Separação de máquinas virtuais
- As VMs individuais funcionam como processos isolados no host, e dependem da segurança imposta pelo kernel do host. Portanto, uma VM não pode ler ou acessar a memória ou o armazenamento de outras VMs no mesmo host.
- Caixa de areia QEMU
- Uma característica que impede que o código QEMU execute chamadas ao sistema que podem comprometer a segurança do host.
- Randomização do espaço de endereços do Kernel (KASLR)
- Permite a randomização dos endereços físicos e virtuais nos quais a imagem do núcleo é descompactada. Assim, o KASLR impede explorações de segurança de hóspedes com base na localização dos objetos do kernel.
15.5. Booleans de virtualização
Para uma configuração granulada fina da segurança das máquinas virtuais em um sistema RHEL 8, você pode configurar as booleanas SELinux no host para garantir que o hipervisor atue de uma forma específica.
Para listar todas as booleanas relacionadas à virtualização e seus status, use o comando getsebool -a | grep virt
:
$ getsebool -a | grep virt
[...]
virt_sandbox_use_netlink --> off
virt_sandbox_use_sys_admin --> off
virt_transition_userdomain --> off
virt_use_comm --> off
virt_use_execmem --> off
virt_use_fusefs --> off
[...]
Para habilitar um booleano específico, use o setsebool -P boolean_name on
comando como raiz. Para desativar um booleano, use setsebool -P boolean_name off
.
A tabela a seguir lista as booleanas relacionadas à virtualização disponíveis no RHEL 8 e o que elas fazem quando ativadas:
Tabela 15.1. Booleans de virtualização SELinux
SELinux Boolean | Descrição |
---|---|
staff_use_svirt | Permite que os usuários não-rootores criem e façam a transição de VMs para sVirt. |
unprivuser_use_svirt | Permite que usuários sem privilégios criem e façam a transição de VMs para sVirt. |
virt_sandbox_use_audit | Permite que os contentores de areia enviem mensagens de auditoria. |
virt_sandbox_use_netlink | Permite que os recipientes de areia utilizem chamadas de sistema netlink. |
virt_sandbox_use_sys_admin | Permite que recipientes de areia utilizem chamadas de sistema sys_admin, como, por exemplo, montagem. |
virt_transition_userdomain | Permite que os processos virtuais sejam executados como domínios de usuário. |
virt_use_comm | Permite que o virt utilize portas de comunicação serial/paralela. |
virt_use_execmem | Permite que convidados virtuais confinados utilizem memória executável e pilha executável. |
virt_use_fusefs | Permite que o virt leia arquivos montados em FUSE. |
virt_use_nfs | Permite a virt gerenciar arquivos montados em NFS. |
virt_use_rawip | Permite que o virt interaja com os soquetes em bruto. |
virt_use_samba | Permite que o virt gerencie arquivos montados CIFS. |
virt_use_sanlock | Permite que hóspedes virtuais confinados interajam com o sanlock. |
virt_use_usb | Permite que o virt utilize dispositivos USB. |
virt_use_xserver | Permite que a máquina virtual interaja com o Sistema X Window. |
15.6. Configurando o IBM Secure Execution no IBM Z
Ao utilizar o hardware IBM Z para executar um host RHEL 8, você pode melhorar a segurança de suas máquinas virtuais (VMs) configurando o IBM Secure Execution para as VMs.
A IBM Secure Execution, também conhecida como Virtualização Protegida, impede que o sistema host acesse o estado e o conteúdo da memória de uma VM. Como resultado, mesmo que o host esteja comprometido, ele não pode ser usado como um vetor para atacar o sistema operacional convidado. Além disso, o Secure Execution pode ser usado para evitar que hospedeiros não confiáveis obtenham informações sensíveis da VM.
O procedimento seguinte descreve como converter uma VM existente em um host IBM Z em uma VM segura.
Pré-requisitos
O hardware do sistema é um dos seguintes:
- IBM z15 ou posterior
- IBM LinuxONE III ou posterior
O recurso de Execução Segura está habilitado para seu sistema. Para verificar, use:
# grep facilities /proc/cpuinfo | grep 158
Se este comando exibir qualquer saída, sua CPU é compatível com o Secure Execution.
O núcleo inclui suporte para Execução Segura. Para confirmar, use:
# ls /sys/firmware | grep uv
Se o comando gerar alguma saída, seu kernel suporta Execução Segura.
O modelo de CPU host contém a facilidade
unpack
. Para confirmar, use:# virsh domcapabilities | grep unpack <feature policy='require' name='unpack'/>
Se o comando gerar a saída acima, seu modelo de host de CPU é compatível com o Secure Execution.
O modo CPU da VM está configurado para
host-model
. Para confirmar isso, use o seguinte e substituavm-name
pelo nome de sua VM.# virsh dumpxml vm-name | grep "<cpu mode='host-model'/>"
Se o comando gerar alguma saída, o modo CPU da VM é configurado corretamente.
- Você obteve e verificou o documento chave do host IBM Z. Para instruções para isso, consulte Verificação do documento chave do host na documentação da IBM.
Procedimento
Adicione o parâmetro do kernel
prot_virt=1
à configuração de inicialização do host.# # grubby --update-kernel=ALL --args="prot_virt=1"
Crie um arquivo de parâmetros para a VM que você deseja proteger. Por exemplo:
# touch ~/secure-parameters
No diretório
/boot/loader/entries
do host, identifique a entrada do carregador de inicialização com a versão mais recente:# ls /boot/loader/entries -l [...] -rw-r--r--. 1 root root 281 Oct 9 15:51 3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf
Recuperar a linha de opções do kernel da entrada do carregador de inicialização:
# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf | grep options options root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap
Adicione o conteúdo da linha de opções e
swiotlb=262144
ao arquivo de parâmetros criado.# echo "root=/dev/mapper/rhel-root crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap swiotlb=262144" > ~/secure-parameters
Gerar uma imagem IBM Secure Execution para a VM selecionada.
Por exemplo, o seguinte cria uma imagem protegida
/boot/secure-image
baseada na imagem/boot/vmlinuz-4.18.0-240.el8.s390x
, usando o arquivosecure-parameters
, o arquivo de disco RAM inicial/boot/initramfs-4.18.0-240.el8.s390x.img
, e o documento chave do hostHKD-8651-000201C048.crt
.# genprotimg -i /boot/vmlinuz-4.18.0-240.el8.s390x -r /boot/initramfs-4.18.0-240.el8.s390x.img -p ~/secure-parameters -k HKD-8651-00020089A8.crt -o /boot/secure-image
Usando o utilitário
genprotimg
, cria-se a imagem segura, que contém os parâmetros do kernel, o disco RAM inicial e a imagem de inicialização.No sistema operacional convidado da VM, atualize o menu de inicialização da VM para inicializar a partir da imagem segura. Além disso, remova as linhas começando com
initrd
eoptions
, pois elas não são necessárias.Por exemplo, em um RHEL 8.3 VM, o menu de inicialização pode ser editado no diretório
/boot/loader/entries/
:# cat /boot/loader/entries/3ab27a195c2849429927b00679db15c1-4.18.0-240.el8.s390x.conf title Red Hat Enterprise Linux 8.3 version 4.18.0-240.el8.s390x linux /boot/secure-image [...]
Habilitar dispositivos de virtio para usar buffers compartilhados. Para isso, use
virsh edit
para modificar a configuração XML da VM, e adicioneiommu='on'
à linha<driver>
de todos os dispositivos que possuem um. Por exemplo:<interface type='network'> <source network='default'/> <model type='virtio'/> <driver name='vhost' iommu='on'/> </interface>
Se uma configuração de dispositivo não contiver nenhuma linha
<driver>
, adicione<driver iommu='on'\>
em seu lugar.Desativar o balonamento de memória na VM, pois o recurso não é compatível com o Secure Execution. Para fazer isso, adicione a seguinte linha à configuração XML da VM.
<memballoon model='none'/>
Criar a imagem de disco inicializável
# zipl -V
Remover com segurança os arquivos originais desprotegidos. Por exemplo, os arquivos originais desprotegidos:
# shred /boot/vmlinuz-4.18.0-240.el8.s390x # shred /boot/initramfs-4.18.0-240.el8.s390x.img # shred secure-parameters
A imagem de inicialização original, a imagem RAM inicial e o arquivo de parâmetros do kernel estão desprotegidos e, se não forem removidos, as VMs com Execução Segura ativadas ainda podem ser vulneráveis a tentativas de hacking ou mineração de dados sensíveis.
Verificação
No host, use o utilitário
virsh dumpxml
para confirmar a configuração XML da VM protegida. A configuração deve incluir os elementos<driver iommu='on'/>
e<memballoon model='none'/>
.# virsh dumpxml vm-name [...] <cpu mode='host-model'/> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none' io='native' iommu='on'> <source file='/var/lib/libvirt/images/secure-guest.qcow2'/> <target dev='vda' bus='virtio'/> </disk> <interface type='network'> <driver iommu='on'/> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'/> <memballoon model='none'/> </devices> </domain>
Recursos adicionais
- Para instruções adicionais sobre como modificar a configuração da inicialização do host, consulte Configuração dos parâmetros de linha de comando do kernel.
-
Para mais informações sobre o utilitário
genprotimg
, consulte a documentação da IBM.
15.7. Anexar coprocessadores criptográficos a máquinas virtuais no IBM Z
Para usar criptografia de hardware em sua máquina virtual (VM) em um host IBM Z, crie dispositivos mediados a partir de um dispositivo coprocessador criptográfico e os atribua às VMs pretendidas. Para instruções detalhadas, veja abaixo.
Pré-requisitos
- Seu host está rodando em hardware IBM Z.
O coprocessador criptográfico é compatível com a atribuição de dispositivos. Para confirmar isso, certifique-se de que o endereço
type
de seu coprocessador esteja listado comoCEX4
ou posterior.# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue 05.00ab CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue
- O pacote mdevctl está instalado.
O módulo do kernel
vfio_ap
é carregado. Para verificar, use:# lsmod | grep vfio_ap vfio_ap 24576 0 [...]
Para carregar o módulo, use:
# modprobe vfio_ap
Procedimento
No host, re-designar seu dispositivo criptográfico para os drivers
vfio-ap
. O exemplo seguinte atribui dois dispositivos criptográficos com bitmask IDs(0x05, 0x0004)
e(0x05, 0x00ab)
avfio-ap
.# echo -0x05 > /sys/bus/ap/apmask # echo -0x0004, -0x00ab > /sys/bus/ap/aqmask
Para informações sobre a identificação dos valores de identificação da máscara de bits, consulte Preparando dispositivos de passagem para recursos de adaptador criptográfico no documento KVM Virtual Server Management da IBM.
Verificar se os dispositivos criptográficos foram reatribuídos corretamente.
# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- vfio_ap 05.00ab CEX5C CCA-Coproc - 1 0 11 08 S--D--N-- vfio_ap
Se os valores de DRIVER das filas de domínio mudassem para
vfio_ap
, a reatribuição seria bem sucedida.Gerar um dispositivo UUID.
# uuidgen 669d9b23-fe1b-4ecb-be08-a2fabca99b71
Nas seguintes etapas deste procedimento, substitua
669d9b23-fe1b-4ecb-be08-a2fabca99b71
por sua UUID gerada.Usando a UUID, crie um novo dispositivo
vfio_ap
.O exemplo a seguir mostra a criação de um dispositivo mediado persistente e a atribuição de filas a ele. Por exemplo, os seguintes comandos atribuem o adaptador de domínio
0x05
e as filas de domínio0x0004
e0x00ab
ao dispositivo669d9b23-fe1b-4ecb-be08-a2fabca99b71
.# mdevctl define --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --parent matrix --type vfio_ap-passthrough # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_adapter --value=0x05 # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x0004 # mdevctl modify --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71 --addattr=assign_domain --value=0x00ab
Iniciar o dispositivo mediado.
# mdevctl start --uuid 669d9b23-fe1b-4ecb-be08-a2fabca99b71
Verificar se a configuração foi aplicada corretamente
# cat /sys/devices/vfio_ap/matrix/mdev_supported_types/vfio_ap-passthrough/devices/669d9b23-fe1b-4ecb-be08-a2fabca99b71 05.0004 05.00ab
Se a saída contém os valores numéricos das filas que você designou anteriormente para
vfio-ap
, o processo foi bem sucedido.Use o comando
virsh edit
para abrir a configuração XML da VM onde você deseja usar os dispositivos criptográficos.# virsh edit vm-name
Adicione as seguintes linhas à seção
<devices>
na configuração XML, e salve-a.<hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ap'> <source> <address uuid='669d9b23-fe1b-4ecb-be08-a2fabca99b71'/> </source> </hostdev>
Note que cada UUID só pode ser atribuída a uma VM de cada vez.
Verificação
- Inicie a VM para a qual você designou o dispositivo mediado.
Após a inicialização do sistema operacional (OS) convidado, certifique-se de que ele detecta os dispositivos criptográficos designados.
# lszcrypt -V CARD.DOMAIN TYPE MODE STATUS REQUESTS PENDING HWTYPE QDEPTH FUNCTIONS DRIVER -------------------------------------------------------------------------------------------- 05 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4card 05.0004 CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue 05.00ab CEX5C CCA-Coproc online 1 0 11 08 S--D--N-- cex4queue
A saída deste comando no sistema operacional convidado será idêntica à de uma partição lógica host com os mesmos dispositivos coprocessadores criptográficos disponíveis.
15.8. Possibilitando a segurança de hardware padrão em máquinas virtuais Windows
Para proteger as máquinas virtuais Windows (VMs), você pode habilitar o nível básico de segurança usando as capacidades de hardware padrão do dispositivo Windows.
Pré-requisitos
- Certifique-se de ter instalado os últimos drivers VirtIO certificados WHQL.
- Certifique-se de que o firmware da VM suporte a inicialização UEFI.
Instale o pacote
edk2-OVMF
em sua máquina host.# yum install edk2-ovmf
Instale os pacotes
vTPM
em sua máquina host.# yum install swtpm libtpms
- Certifique-se de que a VM está usando a arquitetura da máquina Q35.
- Certifique-se de que você tenha a mídia de instalação do Windows.
Procedimento
Habilite o TPM 2.0 adicionando os seguintes parâmetros à seção
<devices>
na configuração XML da VM.<devices> [...] <tpm model='tpm-crb'> <backend type='emulator' version='2.0'/> </tpm> [...] </devices>
- Instalar o Windows no modo UEFI. Para mais informações sobre como fazer isso, consulte Criando uma máquina virtual SecureBoot.
- Instale os drivers VirtIO no Windows VM. Para mais informações sobre como fazê-lo, consulte Instalando os drivers VirtIO em um convidado do Windows.
- Na UEFI, habilite o Boot Seguro. Para mais informações sobre como fazer isso, consulte o Secure Boot.
Verificação
Assegure-se de que a página Device Security em sua máquina Windows exiba a seguinte mensagem:
Your device meets the requirements for standard hardware security.
Capítulo 16. Otimizando o desempenho da máquina virtual
As máquinas virtuais (VMs) sempre experimentam algum grau de deterioração de desempenho em comparação com o host. As seções seguintes explicam as razões para esta deterioração e fornecem instruções sobre como minimizar o impacto de desempenho da virtualização no RHEL 8, para que seus recursos de infra-estrutura de hardware possam ser usados da forma mais eficiente possível.
16.1. O que influencia o desempenho da máquina virtual
Os VMs são executados como processos de espaço do usuário no host. O hipervisor, portanto, precisa converter os recursos do sistema host para que as VMs possam utilizá-los. Como consequência, uma parte dos recursos é consumida pela conversão, e a VM, portanto, não pode alcançar a mesma eficiência de desempenho que o host.
O impacto da virtualização no desempenho do sistema
Razões mais específicas para a perda de desempenho da VM incluem:
- As CPUs virtuais (vCPUs) são implementadas como threads no host, gerenciadas pelo agendador Linux.
- As VMs não herdam automaticamente recursos de otimização, tais como NUMA ou páginas enormes, do núcleo do host.
- As configurações de E/S do disco e da rede do host podem ter um impacto significativo no desempenho da VM.
- O tráfego de rede normalmente viaja para uma VM através de uma ponte baseada em software.
- Dependendo dos dispositivos host e de seus modelos, pode haver uma sobrecarga significativa devido à emulação de hardware específico.
A severidade do impacto da virtualização no desempenho da VM é influenciada por uma variedade de fatores, que incluem
- O número de VMs em funcionamento concomitante.
- A quantidade de dispositivos virtuais utilizados por cada VM.
- Os tipos de dispositivos utilizados pelas VMs.
Reduzindo a perda de desempenho da VM
O RHEL 8 oferece uma série de recursos que você pode usar para reduzir os efeitos negativos da virtualização. Destacadamente:
-
O serviço
tuned
pode otimizar automaticamente a distribuição de recursos e o desempenho de suas VMs. - Oajuste de E/S do bloco pode melhorar o desempenho dos dispositivos de bloco da VM, tais como discos.
- A sintonia NUMA pode aumentar o desempenho da vCPU.
- Asredes virtuais podem ser otimizadas de várias maneiras.
O ajuste do desempenho da VM pode ter efeitos adversos sobre outras funções de virtualização. Por exemplo, pode tornar mais difícil a migração da VM modificada.
16.2. Otimizando o desempenho da máquina virtual usando o tuned
O utilitário tuned
é um mecanismo de ajuste de perfil de entrega que adapta a RHEL para certas características de carga de trabalho, tais como requisitos para tarefas de CPU-intensiva ou de armazenamento-rede de resposta em termos de produtividade. Ele fornece uma série de perfis de ajuste que são pré-configurados para melhorar o desempenho e reduzir o consumo de energia em uma série de casos específicos de uso. Você pode editar esses perfis ou criar novos perfis para criar soluções de desempenho adaptadas ao seu ambiente, incluindo ambientes virtualizados.
A Red Hat recomenda o uso dos seguintes perfis ao usar a virtualização no RHEL 8:
-
Para as máquinas virtuais RHEL 8, utilize o perfil virtual-guest. Ele se baseia no perfil de aplicação geral
throughput-performance
mas também diminui a permuta da memória virtual. - Para os anfitriões de virtualização RHEL 8, use o perfil virtual-host. Isto permite a gravação mais agressiva de páginas de memória suja, o que beneficia o desempenho do host.
Pré-requisitos
-
O serviço
tuned
está instalado e habilitado.
Procedimento
Para permitir um perfil específico em tuned
:
Liste os perfis disponíveis em
tuned
.# tuned-adm list Available profiles: - balanced - General non-specialized tuned profile - desktop - Optimize for the desktop use-case [...] - virtual-guest - Optimize for running inside a virtual guest - virtual-host - Optimize for running KVM guests Current active profile: balanced
Optional: Criar um novo perfil
tuned
ou editar um perfiltuned
já existente.Para mais informações, consulte Perfis ajustados de customização.
Ativar um perfil em
tuned
.# tuned-adm profile selected-profile
Para otimizar um host de virtualização, utilize o perfil virtual-host.
# tuned-adm profile virtual-host
Em um sistema operacional convidado da RHEL, use o perfil virtual-guest.
# tuned-adm profile virtual-guest
Recursos adicionais
-
Para mais informações sobre os perfis
tuned
etuned
, consulte Monitoramento e gerenciamento do status e desempenho do sistema.
16.3. Configuração da memória da máquina virtual
Para melhorar o desempenho de uma máquina virtual (VM), você pode atribuir RAM de host adicional para a VM. Da mesma forma, você pode diminuir a quantidade de memória alocada a uma VM para que a memória do host possa ser alocada a outras VMs ou tarefas.
Para realizar estas ações, você pode usar o console web ou a interface de linha de comando.
16.3.1. Adicionar e remover memória de máquina virtual usando o console web
Para melhorar o desempenho de uma máquina virtual (VM) ou para liberar os recursos do host que ela está usando, você pode usar o console web para ajustar a quantidade de memória alocada para a VM.
Pré-requisitos
O sistema operacional convidado está executando os drivers do balão de memória. Para verificar este é o caso:
Garantir que a configuração da VM inclua o dispositivo
memballoon
:# virsh dumpxml testguest | grep memballoon <memballoon model='virtio'> </memballoon>
Se este comando exibir qualquer saída e o modelo não estiver configurado para
none
, o dispositivomemballoon
está presente.Certifique-se de que os condutores de balões estejam funcionando no sistema operacional convidado.
- No Windows, os drivers são instalados como parte do pacote de drivers virtio-win. Para instruções, veja Seção 17.2.1, “Instalação de drivers paravirtualizados KVM para máquinas virtuais Windows”.
-
Nos convidados Linux, os drivers são geralmente incluídos por padrão e ativados quando o dispositivo
memballoon
está presente.
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Optional: Obter as informações sobre a memória máxima e a memória atualmente utilizada para uma VM. Isto servirá como uma base para suas mudanças, e também para verificação.
# virsh dominfo testguest Max memory: 2097152 KiB Used memory: 2097152 KiB
Na interface das Máquinas Virtuais, clique em uma linha com o nome das VMs para as quais você deseja visualizar e ajuste a memória alocada.
A linha se expande para revelar o painel de Visão Geral com informações básicas sobre os VMs selecionados.
Clique no valor da linha
Memory
no painel de Visão Geral.Aparece o diálogo
Memory Adjustment
.Configurar as CPUs virtuais para o VM selecionado.
Maximum allocation - Define a quantidade máxima de memória do host que a VM pode usar para seus processos. Aumentar este valor melhora o potencial de desempenho da VM, e reduzir o valor diminui a pegada de desempenho que a VM tem em seu host.
O ajuste da alocação máxima de memória só é possível em uma VM desligada.
- Current allocation - Define a quantidade real de memória alocada para o VM. Você pode ajustar o valor para regular a memória disponível para a VM para seus processos. Este valor não pode exceder o valor máximo de alocação.
Clique em Salvar.
A alocação da memória da VM é ajustada.
Recursos adicionais
- Para instruções de ajuste de memória VM usando a interface de linha de comando, veja Seção 16.3.2, “Adicionar e remover memória de máquina virtual usando a interface de linha de comando”.
- Para otimizar como a VM utiliza a memória alocada, você pode modificar sua configuração de vCPU. Para mais informações, veja Seção 16.5, “Otimizando o desempenho da CPU da máquina virtual”.
16.3.2. Adicionar e remover memória de máquina virtual usando a interface de linha de comando
Para melhorar o desempenho de uma máquina virtual (VM) ou para liberar os recursos do host que ela está usando, você pode usar a CLI para ajustar a quantidade de memória alocada para a VM.
Pré-requisitos
O sistema operacional convidado está executando os drivers do balão de memória. Para verificar este é o caso:
Garantir que a configuração da VM inclua o dispositivo
memballoon
:# virsh dumpxml testguest | grep memballoon <memballoon model='virtio'> </memballoon>
Se este comando exibir qualquer saída e o modelo não estiver configurado para
none
, o dispositivomemballoon
está presente.Certifique-se de que os condutores de balões estejam funcionando no sistema operacional convidado.
- No Windows, os drivers são instalados como parte do pacote de drivers virtio-win. Para instruções, veja Seção 17.2.1, “Instalação de drivers paravirtualizados KVM para máquinas virtuais Windows”.
-
Nos convidados Linux, os drivers são geralmente incluídos por padrão e ativados quando o dispositivo
memballoon
está presente.
Procedimento
Optional: Obter as informações sobre a memória máxima e a memória atualmente utilizada para uma VM. Isto servirá como uma base para suas mudanças, e também para verificação.
# virsh dominfo testguest Max memory: 2097152 KiB Used memory: 2097152 KiB
Ajuste a memória máxima alocada a uma VM. Aumentar este valor melhora o potencial de desempenho da VM, e reduzir o valor diminui a pegada de desempenho que a VM tem em seu host. Note que esta mudança só pode ser realizada em uma VM desligada, portanto, o ajuste de uma VM em funcionamento requer uma reinicialização para ter efeito.
Por exemplo, para mudar a memória máxima que o testguest VM pode usar para 4096 MiB:
# virt-xml testguest --edit --memory memory=4096,currentMemory=4096 Domain 'testguest' defined successfully. Changes will take effect after the domain is fully powered off.
Optional: Você também pode ajustar a memória atualmente utilizada pela VM, até a alocação máxima. Isto regula a carga de memória que a VM tem no host até a próxima reinicialização, sem alterar a alocação máxima da VM.
# virsh setmem testguest --current 2048
Verificação
Confirmar que a memória utilizada pela VM foi atualizada:
# virsh dominfo testguest Max memory: 4194304 KiB Used memory: 2097152 KiB
Optional: Se você ajustar a memória atual da VM, você pode obter as estatísticas do balão de memória da VM para avaliar o quão efetivamente ela regula seu uso de memória.
# virsh domstats --balloon testguest Domain: 'testguest' balloon.current=365624 balloon.maximum=4194304 balloon.swap_in=0 balloon.swap_out=0 balloon.major_fault=306 balloon.minor_fault=156117 balloon.unused=3834448 balloon.available=4035008 balloon.usable=3746340 balloon.last-update=1587971682 balloon.disk_caches=75444 balloon.hugetlb_pgalloc=0 balloon.hugetlb_pgfail=0 balloon.rss=1005456
Recursos adicionais
- Para instruções de ajuste de memória VM usando o console web, veja Seção 16.3.1, “Adicionar e remover memória de máquina virtual usando o console web”.
- Para otimizar como a VM utiliza a memória alocada, você pode modificar sua configuração de vCPU. Para mais informações, veja Seção 16.5, “Otimizando o desempenho da CPU da máquina virtual”.
16.3.3. Recursos adicionais
Para aumentar a memória máxima de uma VM em funcionamento, você pode anexar um dispositivo de memória à VM. Isto também é referido como memory hot plug. Para maiores detalhes, veja Seção 10.2, “Fixação de dispositivos em máquinas virtuais”.
Note que remover um dispositivo de memória de um VM, também conhecido como memory hot unplug, não é suportado no RHEL 8, e a Red Hat desencoraja muito seu uso.
16.4. Otimização do desempenho de E/S da máquina virtual
As capacidades de entrada e saída (E/S) de uma máquina virtual (VM) podem limitar significativamente a eficiência geral da VM. Para resolver isso, você pode otimizar a E/S de uma VM configurando os parâmetros de E/S de bloco.
16.4.1. E/S do bloco de sintonia em máquinas virtuais
Quando múltiplos dispositivos de bloco estão sendo usados por uma ou mais VMs, pode ser importante ajustar a prioridade de E/S de dispositivos virtuais específicos, modificando seu I/O weights.
Aumentar o peso de E/S de um dispositivo aumenta sua prioridade para a largura de banda de E/S e, portanto, proporciona mais recursos para o host. Da mesma forma, a redução do peso de um dispositivo faz com que ele consuma menos recursos do host.
O valor de cada dispositivo weight
deve estar dentro da faixa 100
a 1000
. Alternativamente, o valor pode ser 0
, o que retira esse dispositivo das listas por dispositivo.
Procedimento
Para exibir e definir os parâmetros de E/S de um bloco VM:
Exibir os parâmetros atuais
<blkio>
para uma VM:# virsh dumpxml VM-name
<domain> [...] <blkiotune> <weight>800</weight> <device> <path>/dev/sda</path> <weight>1000</weight> </device> <device> <path>/dev/sdb</path> <weight>500</weight> </device> </blkiotune> [...] </domain>
Edite o peso de E/S de um dispositivo especificado:
# virsh blkiotune VM-name --device-weights device, I/O-weight
Por exemplo, o seguinte muda o peso do dispositivo /dev/sda no site liftrul VM para 500.
# virsh blkiotune liftbrul --device-weights /dev/sda, 500
16.4.2. Estrangulamento de E/S de disco em máquinas virtuais
Quando várias VMs estão funcionando simultaneamente, elas podem interferir com o desempenho do sistema, utilizando uma E/S em disco excessiva. A aceleração da E/S do disco na virtualização KVM proporciona a capacidade de definir um limite nas solicitações de E/S do disco enviadas pelas VMs para a máquina host. Isto pode evitar que uma VM utilize excessivamente recursos compartilhados e tenha impacto sobre o desempenho de outras VMs.
Para ativar a aceleração de E/S de disco, defina um limite para as solicitações de E/S de disco enviadas de cada dispositivo de bloco anexado às VMs para a máquina host.
Procedimento
Use o comando
virsh domblklist
para listar os nomes de todos os dispositivos de disco em uma VM especificada.# virsh domblklist rollin-coal Target Source ------------------------------------------------ vda /var/lib/libvirt/images/rollin-coal.qcow2 sda - sdb /home/horridly-demanding-processes.iso
Encontre o dispositivo de bloco hospedeiro onde o disco virtual que você deseja acionar o acelerador está montado.
Por exemplo, se você quiser acionar o disco virtual
sdb
da etapa anterior, a saída a seguir mostra que o disco está montado na partição/dev/nvme0n1p3
.$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT zram0 252:0 0 4G 0 disk [SWAP] nvme0n1 259:0 0 238.5G 0 disk ├─nvme0n1p1 259:1 0 600M 0 part /boot/efi ├─nvme0n1p2 259:2 0 1G 0 part /boot └─nvme0n1p3 259:3 0 236.9G 0 part └─luks-a1123911-6f37-463c-b4eb-fxzy1ac12fea 253:0 0 236.9G 0 crypt /home
Estabelecer limites de E/S para o dispositivo de bloco usando o comando
virsh blkiotune
.# virsh blkiotune VM-name --parameter device,limit
O seguinte exemplo aciona o disco
sdb
norollin-coal
VM para 1000 operações de leitura e gravação de E/S por segundo e para 50 MB por segundo de leitura e gravação de rendimento.# virsh blkiotune rollin-coal --device-read-iops-sec /dev/nvme0n1p3,1000 --device-write-iops-sec /dev/nvme0n1p3,1000 --device-write-bytes-sec /dev/nvme0n1p3,52428800 --device-read-bytes-sec /dev/nvme0n1p3,52428800
Informações adicionais
- O estrangulamento de E/S em disco pode ser útil em várias situações, por exemplo, quando VMs pertencentes a diferentes clientes estão funcionando no mesmo host, ou quando são dadas garantias de qualidade de serviço para diferentes VMs. O estrangulamento de E/S de disco também pode ser usado para simular discos mais lentos.
- O estrangulamento de E/S pode ser aplicado independentemente a cada dispositivo de bloco acoplado a uma VM e suporta limites de rendimento e operações de E/S.
-
A Red Hat não suporta o uso do comando
virsh blkdeviotune
para configurar a estrangulamento de E/S em VMs. Para mais informações sobre recursos não suportados ao usar o RHEL 8 como um host de VMs, veja Seção 20.3, “Características não suportadas na virtualização RHEL 8”.
16.4.3. Possibilitando o virtio-scsi de múltiplas filas
Ao utilizar virtio-scsi
dispositivos de armazenamento em suas máquinas virtuais (VMs), o recurso multi-queue virtio-scsi oferece melhor desempenho de armazenamento e escalabilidade. Ele permite que cada CPU virtual (vCPU) tenha uma fila separada e interrompa a utilização sem afetar outras vCPUs.
Procedimento
Para habilitar o suporte de virtio-scsi de várias filas para uma VM específica, adicione o seguinte à configuração XML da VM, onde N é o número total de filas de vCPU:
<controller type='scsi' index='0' model='virtio-scsi'> <driver queues='N' /> </controller>
16.5. Otimizando o desempenho da CPU da máquina virtual
Assim como as CPUs físicas em máquinas host, as vCPUs são fundamentais para o desempenho da máquina virtual (VM). Como resultado, a otimização das vCPUs pode ter um impacto significativo na eficiência de recursos de suas VMs. Para otimizar sua vCPU:
- Ajuste quantos CPUs de host são designados para o VM. Você pode fazer isso usando o CLI ou o console web.
Certifique-se de que o modelo vCPU esteja alinhado com o modelo de CPU do host. Por exemplo, configurar o VM testguest1 para usar o modelo de CPU do host:
# virt-xml testguest1 --edit --cpu host-model
- Desativar a fusão da mesma página do núcleo (KSM).
Se sua máquina host utiliza Acesso de Memória Não-Uniforme (NUMA), você também pode configure NUMA para suas VMs. Isto mapeia a CPU do host e os processos de memória na CPU e processos de memória da VM o mais próximo possível. Com efeito, o NUMA tuning fornece à vCPU um acesso mais simplificado à memória do sistema alocada à VM, o que pode melhorar a eficácia do processamento da vCPU.
Para maiores detalhes, ver Seção 16.5.3, “Configuração do NUMA em uma máquina virtual” e Seção 16.5.4, “Exemplo de cenário de ajuste de desempenho da vCPU”.
16.5.1. Adicionar e remover CPUs virtuais usando a interface de linha de comando
Para aumentar ou otimizar o desempenho da CPU de uma máquina virtual (VM), você pode adicionar ou remover as CPUs virtuais (vCPUs) atribuídas à VM.
Quando realizado em uma VM em funcionamento, isto também é chamado de vCPU hot plugging e hot unplugging. Entretanto, observe que o hot unplug vCPU não é suportado no RHEL 8, e a Red Hat desencoraja muito seu uso.
Pré-requisitos
Optional: Veja o estado atual das vCPUs na VM visada. Por exemplo, para exibir o número de vCPUs no site testguest VM:
# virsh vcpucount testguest maximum config 4 maximum live 2 current config 2 current live 1
Esta saída indica que testguest está usando atualmente 1 vCPU, e mais 1 vCPu pode ser conectado a ele para aumentar o desempenho da VM. Entretanto, após a reinicialização, o número de vCPUs testguest usadas mudará para 2, e será possível fazer hot plug em mais 2 vCPUs.
Procedimento
Ajuste o número máximo de vCPUs que podem ser anexadas a uma VM, o que entra em vigor na próxima inicialização da VM.
Por exemplo, para aumentar a contagem máxima de vCPU para a VM testguest para 8:
# virsh setvcpus testguest 8 --maximum --config
Observe que o máximo pode ser limitado pela topologia da CPU, hardware do host, o hipervisor e outros fatores.
Ajuste o número atual de vCPUs acopladas a uma VM, até o máximo configurado na etapa anterior. Por exemplo, o número de vCPUs:
Para aumentar o número de vCPUs anexadas à VM em execução testguest para 4:
# virsh setvcpus testguest 4 --live
Isto aumenta o desempenho da VM e a pegada de carga do host do testguest até a próxima inicialização da VM.
Diminuir permanentemente o número de vCPUs anexadas à testguest VM para 1:
# virsh setvcpus testguest 1 --config
Isto diminui o desempenho da VM e a pegada de carga do host do testguest após a próxima inicialização da VM. Entretanto, se necessário, vCPUs adicionais podem ser conectados a quente à VM para aumentar temporariamente seu desempenho.
Verificação
Confirme que o estado atual da vCPU para a VM reflete suas mudanças.
# virsh vcpucount testguest maximum config 8 maximum live 4 current config 1 current live 4
Recursos adicionais
- Para informações sobre como adicionar e remover vCPUs usando o console web, veja Seção 16.5.2, “Gerenciamento de CPUs virtuais usando o console web”.
16.5.2. Gerenciamento de CPUs virtuais usando o console web
Usando o console web RHEL 8, você pode rever e configurar CPUs virtuais usadas pelas máquinas virtuais (VMs) às quais o console web está conectado.
Pré-requisitos
- Para usar o console web para gerenciar as VMs, instale o plug-in de VM do console web.
Procedimento
Na interface das Máquinas Virtuais, clique em uma linha com o nome das VMs para as quais você deseja visualizar e configurar os parâmetros da CPU virtual.
A linha se expande para revelar o painel Visão Geral com informações básicas sobre as VMs selecionadas, incluindo o número de CPUs virtuais, e controles para desligar e excluir a VM.
Clique no número de vCPUs no painel de Visão Geral.
Aparece o diálogo de detalhes da vCPU.
NotaO aviso no diálogo de detalhes do vCPU só aparece após as configurações da CPU virtual serem alteradas.
Configurar as CPUs virtuais para o VM selecionado.
vCPU Count - O número de vCPUs atualmente em uso.
NotaA contagem da vCPU não pode ser maior do que a vCPU Máxima.
- vCPU Maximum - O número máximo de CPUs virtuais que podem ser configuradas para a VM. Se este valor for maior que o vCPU Count, vCPUs adicionais podem ser anexadas à VM.
- Sockets - O número de tomadas a serem expostas ao VM.
- Cores per socket - O número de núcleos para cada soquete a ser exposto ao VM.
Threads per core - O número de fios para cada núcleo a ser exposto ao VM.
Note que as opções Sockets, Cores per socket, e Threads per core ajustam a topologia da CPU da VM. Isto pode ser benéfico para o desempenho da vCPU e pode impactar a funcionalidade de certos softwares no sistema operacional convidado. Se uma configuração diferente não for exigida por sua implementação, a Red Hat recomenda manter os valores padrão.
Clique em Aplicar.
As CPUs virtuais para a VM são configuradas.
NotaAs alterações nas configurações da CPU virtual só entram em vigor após o reinício da VM.
Recursos adicionais:
- Para informações sobre como gerenciar suas vCPUs usando a interface de linha de comando, veja Seção 16.5.1, “Adicionar e remover CPUs virtuais usando a interface de linha de comando”.
16.5.3. Configuração do NUMA em uma máquina virtual
Os seguintes métodos podem ser usados para configurar as configurações de Acesso Não-Uniforme de Memória (NUMA) de uma máquina virtual (VM) em um host RHEL 8.
Pré-requisitos
O host é uma máquina compatível com NUMA. Para detectar se este é o caso, use o comando
virsh nodeinfo
e veja a linhaNUMA cell(s)
:# virsh nodeinfo CPU model: x86_64 CPU(s): 48 CPU frequency: 1200 MHz CPU socket(s): 1 Core(s) per socket: 12 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 67012964 KiB
Se o valor da linha for 2 ou maior, o host é compatível com NUMA.
Procedimento
Para facilidade de uso, você pode configurar uma configuração NUMA da VM usando utilidades e serviços automatizados. Entretanto, é mais provável que a configuração manual do NUMA produza uma melhoria significativa no desempenho.
Automatic methods
Defina a política NUMA da VM para
Preferred
. Por exemplo, para fazer isso para o testguest5 VM:# virt-xml testguest5 --edit --vcpus placement=auto # virt-xml testguest5 --edit --numatune mode=preferred
Habilitar o balanceamento automático NUMA no host:
# echo 1 > /proc/sys/kernel/numa_balancing
Use o comando
numad
para alinhar automaticamente a CPU da VM com os recursos de memória.# numad
Manual methods
Roscas de vCPU específicas de pinos para uma CPU hospedeira específica ou uma gama de CPUs. Isto também é possível em hosts e VMs não-NUMA, e é recomendado como um método seguro de melhoria do desempenho da vCPU.
Por exemplo, os seguintes comandos pino vCPU fios 0 a 5 do testguest6 VM para hospedar CPUs 1, 3, 5, 7, 9, e 11, respectivamente:
# virsh vcpupin testguest6 0 1 # virsh vcpupin testguest6 1 3 # virsh vcpupin testguest6 2 5 # virsh vcpupin testguest6 3 7 # virsh vcpupin testguest6 4 9 # virsh vcpupin testguest6 5 11
Em seguida, você pode verificar se isto foi bem sucedido:
# virsh vcpupin testguest6 VCPU CPU Affinity ---------------------- 0 1 1 3 2 5 3 7 4 9 5 11
Depois de afixar os fios do vCPU, você também pode afixar os fios do processo QEMU associados a uma VM específica para uma CPU host específica ou uma gama de CPUs. Por exemplo, os seguintes comandos fixam a rosca de processo QEMU de testguest6 para CPUs 13 e 15, e verificam se isto foi bem sucedido:
# virsh emulatorpin testguest6 13,15 # virsh emulatorpin testguest6 emulator: CPU Affinity ---------------------------------- *: 13,15
Finalmente, você também pode especificar quais nós do NUMA hospedeiro serão atribuídos especificamente a um determinado VM. Isto pode melhorar o uso da memória do host pelo vCPU da VM. Por exemplo, os comandos a seguir definem testguest6 para usar os nós de host NUMA 3 a 5, e verificar se isto foi bem sucedido:
# virsh numatune testguest6 --nodeset 3-5 # virsh numatune testguest6
Recursos adicionais
- Observe que para melhores resultados de desempenho, é recomendado o uso de todos os métodos de sintonia manual listados acima. Para um exemplo de tal configuração, veja Seção 16.5.4, “Exemplo de cenário de ajuste de desempenho da vCPU”.
-
Para ver a configuração atual do NUMA de seu sistema, você pode usar o utilitário
numastat
. Para detalhes sobre o uso denumastat
, veja Seção 16.7, “Ferramentas de monitoramento de desempenho de máquinas virtuais”. - Atualmente não é possível realizar a sintonia NUMA em hosts IBM Z. Para maiores informações, veja Seção 4.2, “Como a virtualização na IBM Z difere da AMD64 e Intel 64”.
16.5.4. Exemplo de cenário de ajuste de desempenho da vCPU
Para obter o melhor desempenho possível da vCPU, a Red Hat recomenda o uso do manual vcpupin
, emulatorpin
e numatune
, por exemplo, como no cenário a seguir.
Cenário inicial
Seu anfitrião tem as seguintes especificações de hardware:
- 2 nós NUMA
- 3 núcleos de CPU em cada nó
- 2 roscas em cada núcleo
A saída de
virsh nodeinfo
de uma máquina desse tipo seria semelhante:# virsh nodeinfo CPU model: x86_64 CPU(s): 12 CPU frequency: 3661 MHz CPU socket(s): 2 Core(s) per socket: 3 Thread(s) per core: 2 NUMA cell(s): 2 Memory size: 31248692 KiB
Você pretende modificar uma VM existente para ter 8 vCPUs, o que significa que ela não caberá em um único nó NUMA.
Portanto, você deve distribuir 4 vCPUs em cada nó NUMA e fazer com que a topologia da vCPU se pareça o mais próximo possível da topologia do hospedeiro. Isto significa que as vCPUs que funcionam como filamentos irmãos de uma determinada CPU física devem ser fixadas para hospedar filamentos no mesmo núcleo. Para obter detalhes, veja o site Solution abaixo:
Solução
Obter as informações sobre a topologia do hospedeiro:
# virsh capabilities
A saída deve incluir uma seção que se pareça com a seguinte:
<topology> <cells num="2"> <cell id="0"> <memory unit="KiB">15624346</memory> <pages unit="KiB" size="4">3906086</pages> <pages unit="KiB" size="2048">0</pages> <pages unit="KiB" size="1048576">0</pages> <distances> <sibling id="0" value="10" /> <sibling id="1" value="21" /> </distances> <cpus num="6"> <cpu id="0" socket_id="0" core_id="0" siblings="0,3" /> <cpu id="1" socket_id="0" core_id="1" siblings="1,4" /> <cpu id="2" socket_id="0" core_id="2" siblings="2,5" /> <cpu id="3" socket_id="0" core_id="0" siblings="0,3" /> <cpu id="4" socket_id="0" core_id="1" siblings="1,4" /> <cpu id="5" socket_id="0" core_id="2" siblings="2,5" /> </cpus> </cell> <cell id="1"> <memory unit="KiB">15624346</memory> <pages unit="KiB" size="4">3906086</pages> <pages unit="KiB" size="2048">0</pages> <pages unit="KiB" size="1048576">0</pages> <distances> <sibling id="0" value="21" /> <sibling id="1" value="10" /> </distances> <cpus num="6"> <cpu id="6" socket_id="1" core_id="3" siblings="6,9" /> <cpu id="7" socket_id="1" core_id="4" siblings="7,10" /> <cpu id="8" socket_id="1" core_id="5" siblings="8,11" /> <cpu id="9" socket_id="1" core_id="3" siblings="6,9" /> <cpu id="10" socket_id="1" core_id="4" siblings="7,10" /> <cpu id="11" socket_id="1" core_id="5" siblings="8,11" /> </cpus> </cell> </cells> </topology>
- Optional: Teste o desempenho da VM usando as ferramentas e utilitários aplicáveis.
Montar e montar 1 GiB páginas enormes no host:
Adicione a seguinte linha à linha de comando do kernel do host:
padrão_hugepagesz=1G hugepagesz=1G
Crie o arquivo
/etc/systemd/system/hugetlb-gigantic-pages.service
com o seguinte conteúdo:[Unit] Description=HugeTLB Gigantic Pages Reservation DefaultDependencies=no Before=dev-hugepages.mount ConditionPathExists=/sys/devices/system/node ConditionKernelCommandLine=hugepagesz=1G [Service] Type=oneshot RemainAfterExit=yes ExecStart=/etc/systemd/hugetlb-reserve-pages.sh [Install] WantedBy=sysinit.target
Crie o arquivo
/etc/systemd/hugetlb-reserve-pages.sh
com o seguinte conteúdo:#!/bin/sh nodes_path=/sys/devices/system/node/ if [ ! -d $nodes_path ]; then echo "ERROR: $nodes_path does not exist" exit 1 fi reserve_pages() { echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages } reserve_pages 4 node1 reserve_pages 4 node2
Isto reserva quatro páginas enormes da 1GiB de node1 e quatro páginas enormes da 1GiB de node2.
Tornar executável o roteiro criado na etapa anterior:
# chmod x /etc/systemd/hugetlb-reserve-pages.sh
Permitir a reserva de páginas enormes na inicialização:
# systemctl enable hugetlb-gigantic-pages
Use o comando
virsh edit
para editar a configuração XML da VM que você deseja otimizar, neste exemplo super-VM:# virsh edit super-vm
Ajuste a configuração XML da VM da seguinte maneira:
-
Configure a VM para usar 8 vCPUs estáticas. Use o elemento
<vcpu/>
para fazer isso. Fixe cada uma das roscas da vCPU nas roscas correspondentes da CPU hospedeira que ela espelha na topologia. Para fazer isso, use os elementos
<vcpupin/>
na seção<cputune>
.Observe que, como mostrado pelo utilitário
virsh capabilities
acima, os fios da CPU do host não são ordenados seqüencialmente em seus respectivos núcleos. Além disso, as roscas vCPU devem ser fixadas ao conjunto mais alto disponível de núcleos hospedeiros no mesmo nó NUMA. Para uma ilustração da tabela, veja a seção Additional Resources abaixo.A configuração XML para as etapas a. e b. pode parecer semelhante a:
<cputune> <vcpupin vcpu='0' cpuset='1'/> <vcpupin vcpu='1' cpuset='4'/> <vcpupin vcpu='2' cpuset='2'/> <vcpupin vcpu='3' cpuset='5'/> <vcpupin vcpu='4' cpuset='7'/> <vcpupin vcpu='5' cpuset='10'/> <vcpupin vcpu='6' cpuset='8'/> <vcpupin vcpu='7' cpuset='11'/> <emulatorpin cpuset='6,9'/> </cputune>
Configure o VM para usar 1 página gigantesca GiB:
<memoryBacking> <hugepages> <page size='1' unit='GiB'/> </hugepages> </memoryBacking>
Configurar os nós NUMA da VM para usar a memória dos nós NUMA correspondentes no host. Para fazer isso, use os elementos
<memnode/>
na seção<numatune/>
:<numatune> <memory mode="preferred" nodeset="1"/> <memnode cellid="0" mode="strict" nodeset="0"/> <memnode cellid="1" mode="strict" nodeset="1"/> </numatune>
Certifique-se de que o modo CPU esteja configurado para
host-passthrough
, e que a CPU utilize o cache no modopassthrough
:<cpu mode="host-passthrough"> <topology sockets="2" cores="2" threads="2"/> <cache mode="passthrough"/>
-
Configure a VM para usar 8 vCPUs estáticas. Use o elemento
A configuração XML resultante da VM deve incluir uma seção similar à seguinte:
[...] <memoryBacking> <hugepages> <page size='1' unit='GiB'/> </hugepages> </memoryBacking> <vcpu placement='static'>8</vcpu> <cputune> <vcpupin vcpu='0' cpuset='1'/> <vcpupin vcpu='1' cpuset='4'/> <vcpupin vcpu='2' cpuset='2'/> <vcpupin vcpu='3' cpuset='5'/> <vcpupin vcpu='4' cpuset='7'/> <vcpupin vcpu='5' cpuset='10'/> <vcpupin vcpu='6' cpuset='8'/> <vcpupin vcpu='7' cpuset='11'/> <emulatorpin cpuset='6,9'/> </cputune> <numatune> <memory mode="preferred" nodeset="1"/> <memnode cellid="0" mode="strict" nodeset="0"/> <memnode cellid="1" mode="strict" nodeset="1"/> </numatune> <cpu mode="host-passthrough"> <topology sockets="2" cores="2" threads="2"/> <cache mode="passthrough"/> <numa> <cell id="0" cpus="0-3" memory="2" unit="GiB"> <distances> <sibling id="0" value="10"/> <sibling id="1" value="21"/> </distances> </cell> <cell id="1" cpus="4-7" memory="2" unit="GiB"> <distances> <sibling id="0" value="21"/> <sibling id="1" value="10"/> </distances> </cell> </numa> </cpu> </domain>
- Optional: Teste o desempenho da VM usando as ferramentas e utilitários aplicáveis para avaliar o impacto da otimização da VM.
Recursos adicionais
As tabelas a seguir ilustram as conexões entre as vCPUs e as CPUs anfitriãs às quais elas devem ser fixadas:
Tabela 16.1. Topologia do hospedeiro
CPU threads
0
3
1
4
2
5
6
9
7
10
8
11
Cores
0
1
2
3
4
5
Sockets
0
1
NUMA nodes
0
1
Tabela 16.2. Topologia VM
vCPU threads
0
1
2
3
4
5
6
7
Cores
0
1
2
3
Sockets
0
1
NUMA nodes
0
1
Tabela 16.3. Topologia combinada de host e VM
vCPU threads
0
1
2
3
4
5
6
7
Host CPU threads
0
3
1
4
2
5
6
9
7
10
8
11
Cores
0
1
2
3
4
5
Sockets
0
1
NUMA nodes
0
1
Neste cenário, existem 2 nós NUMA e 8 vCPUs. Portanto, 4 fios de vCPU devem ser fixados a cada nó.
Além disso, a Red Hat recomenda deixar pelo menos uma única linha de CPU disponível em cada nó para as operações do sistema hospedeiro.
Como neste exemplo, cada nó NUMA abriga 3 núcleos, cada um com 2 fios de CPU hospedeira, o conjunto para o nó 0 se traduz como segue:
<vcpupin vcpu='0' cpuset='1'/> <vcpupin vcpu='1' cpuset='4'/> <vcpupin vcpu='2' cpuset='2'/> <vcpupin vcpu='3' cpuset='5'/>
16.5.5. Desativação da fusão do kernel na mesma página
Embora a fusão da mesma página do kernel (KSM) melhore a densidade da memória, ela aumenta a utilização da CPU e pode afetar adversamente o desempenho geral, dependendo da carga de trabalho. Nestes casos, você pode melhorar o desempenho da máquina virtual (VM) desativando o KSM.
Dependendo de suas necessidades, você pode tanto desativar o KSM para uma única sessão ou persistentemente.
Procedimento
Para desativar o KSM para uma única sessão, use o utilitário
systemctl
para pararksm
eksmtuned
serviços.# systemctl stop ksm # systemctl stop ksmtuned
Para desativar o KSM persistentemente, use o utilitário
systemctl
para desativarksm
eksmtuned
serviços.# systemctl disable ksm Removed /etc/systemd/system/multi-user.target.wants/ksm.service. # systemctl disable ksmtuned Removed /etc/systemd/system/multi-user.target.wants/ksmtuned.service.
As páginas de memória compartilhadas entre os VMs antes de desativar o KSM permanecerão compartilhadas. Para parar de compartilhar, exclua todas as páginas de PageKSM
no sistema usando