virt-comandos no Debian - Redes de computadores para SMBs

Índice geral da série: Redes de computadores para PMEs: introdução

O título desta postagem se refere a uma série de comandos de console começando com «virt- « E isso pode ser útil em certas circunstâncias. Daremos apenas uma breve descrição de cada um e alguns exemplos de uso. Repetimos: Não podemos substituir os manuais que acompanham cada comando. Nós fortemente sugerimos verifique essas páginas executando homem virt-Comando.

  • O objetivo principal deste artigo é continuar mostrando o amplo universo que a Virtualização no Linux está usando atualmente no Hypervisor Qemu-KVM. Embora no título escrevamos o nome da distribuição «Debian«, Os princípios gerais aplicam-se a qualquer outra distribuição mediante os comandos específicos de cada uma delas. Principalmente aqueles relacionados à busca, descrição e instalação de pacotes, entre outros.

Antes de continuar a leitura, nós recomendamos visitar o artigo anterior: Qemu-KVM + Virt-Manager no Debian - Rede de Computadores para PMEs.

Quando usar os comandos?

Em muitas ocasiões, estamos gerenciando remotamente um servidor de suporte de virtualização com o Qemu-KVMName instalado, e por algum motivo não temos a interface gráfica do Virtual Machine Manager - Gerenciador de Virts:

  • Caso típico, quando acessamos o servidor remoto de uma estação Windows via PuTTy, ou qualquer outro dos muitos alternativas que existem para se conectar via SSH com um servidor Debian GNU / Linux, e o último não tem nenhum suporte instalado para o «X«, Ou suporte gráfico.
  • Queremos simplesmente gerenciar as máquinas virtuais no servidor local ou remoto usando comandos de console.

Instalado com clientes libvirt

No artigo anterior nós instalamos o pacote libvirt-bin, e como parte do processo foi instalado clientes libvirt. Se executarmos em um console:

buzz @ sysadmin: ~ $ sudo dpkg -L libvirt-clients | grep / bin
/ usr / bin
/ usr / bin / virsh
/ usr / bin / virt-host-validate
/ usr / bin / virt-login-shell
/ usr / bin / virt-xml-validate
/ usr / bin / virt-pki-validate
  • Virsh: o programa virsh é a principal interface de usuário para o gerenciamento completo de Domínios Convidados - Hóspedes. É usado para listar, criar, pausar e encerrar domínios. Este comando deve ser invocado com permissões de raiz. Possui duas formas de execução: no modo de comando e no modo interativo. Vamos dedicar um próximo artigo ao virsh.
  • virt-host-validar: ferramenta que permite validar a configuração do Host - Proprietário, para que seja capaz de oferecer suporte a todos os drivers do hipervisor - Hipervisor. Para obter resultados corretos, o comando deve ser executado com permissões de raiz.
  • virt-login-shell: comando para executar um concha personalizado para um usuário normal em um recipiente LXC, cujo nome é igual ao do usuário que o invoca. Se o contêiner não estiver em execução, o comando virt-login-shell tentará iniciá-lo. Este comando não pode ser invocado com permissões de usuário raiz. O arquivo de configuração muito explícito para este programa é /etc/libvirt/virt-login-shell.conf.
  • virt-xml-validar: validar arquivos XML de libvirt comparando-os a um esquema - esquema válido. Recebemos uma lista de nomes de esquema válidos se executarmos man virt-xml-validar.
  • virt-pki-validar: usado para validar se os arquivos PKI de libvirt Eles estão configurados corretamente, tanto no lado do servidor seguro quanto no cliente que usará o protocolo de criptografia TLS para acessar remotamente o servidor. Sua execução será necessária se tivermos habilitado a administração remota por TLS e SSL. Capítulo 22.2 do documento Guia de implantação e administração de virtualização, é dedicado a esta solução. Nós sugerimos que nossas redes de negócios usam o administração remota via SSH, método mais simples e seguro para uma LAN de negócios, à qual iremos dedicar um artigo posterior.

Instalado com virtisnt

No artigo anterior, também instalamos o pacote gerenciador de virt. Como parte desse processo, o pacote foi instalado virtuoso. Se quisermos saber quais comandos o último contém, executamos:

byzz @ sysadmin: ~ $ sudo dpkg -L virtinst | grep / bin
/ usr / bin
/ usr / bin / virt-convert
/ usr / bin / virt-image
/ usr / bin / virt-xml
/ usr / bin / virt-install
/ usr / bin / virt-clone
  • virt-convert- comando que converte definições de máquina virtual em formatos VMX y Ovf para o formato libvirt nativo XML. O formato VMX é normalmente usado pelo VMware, enquanto o OVF «Formato de virtualização aberto»Pode ser usado por qualquer Hipervisor apoie isso.
  • imagem-virt- Cria uma máquina virtual a partir de um arquivo descritor de imagem em formato XML. Esta ferramenta específica será removida de versões futuras do virtuosoPortanto Não sugerimos seu uso.
  • virt-xml: Permite a edição de arquivos XML nativos usados ​​por libvirt, usando opções de linha de comando.
  • virt-instalar: ferramenta de linha de comando que permite a criação de novas máquinas virtuais em Hypervisors como KVM, Xen ou Linux Containers que usam a biblioteca de gerenciamento de hypervisor "Libvirt". Esta ferramenta suporta a instalação gráfica se usarmos, por exemplo, o VNC Virtual Network Computing, Ou SPICE. Ele também oferece suporte total ao modo de console ou texto. Por meio de seu uso, podemos criar uma máquina virtual com um ou mais discos rígidos, uma ou mais placas de rede, dispositivos de som, dispositivos físicos USB ou PCI, e assim por diante. A mídia de instalação pode ser local, remota, publicada usando o protocolo nativo UNIX NFS Network File System, HTTP, FTP. etc.
  • clone virt- ferramenta de linha de comando para clonar máquinas virtuais existentes usando a biblioteca de gerenciamento de hipervisor "Libvirt". Basicamente, copia a imagem de uma máquina virtual e cria um novo convidado - Locatário com configuração de hardware idêntica. Os itens de hardware que precisam ser exclusivos, por exemplo, o endereço de hardware de uma placa de rede, serão atualizados para evitar colisões ou ruído entre o antigo e o novo Locatário.

Virt-viewer

Esta ferramenta também é instalada quando você faz o gerenciador de virt. Virt-viewer é um pacote separado.

  • Virt-viewer: permite mostrar uma consola gráfica, via VNC ou SPICE, de uma máquina virtual específica, quer esteja localizada localmente ou remotamente. Podemos nos referir a Locatário que desejamos exibir por meio de seu nome, ID ou UUID. Se a máquina virtual não estiver rodando, virt-viewer irá esperar que ela inicie.

Outros comandos "virt-" que podem ser instalados de pacotes separados

  • guloseimas virtuais- Uma coleção de ferramentas relacionadas à virtualização. Inclui um plugin para «Munin«, E um script para converter máquinas virtuais criadas com VMware Workstation ou VMware Server, para o formato usado em Qemu-KVM.
  • virt-top: Mostra as estatísticas de domínios virtualizados. Um tipo de topo o htop para máquinas virtuais

Instalado com qemu-utils

Embora o nome dessas ferramentas não comece com vir-Certamente teremos que usar alguns deles em um determinado momento, principalmente aquele relacionado às imagens dos discos das máquinas virtuais.

Podemos invocá-los depois de instalar o Plataforma de virtualização Qemu-Kvm, conforme indicado no artigo anterior. Se quisermos saber quais comandos o pacote deixou à nossa disposição qemu-utils, só precisamos executar:

buzz @ sysadmin: ~ $ sudo dpkg -L qemu-utils | grep / bin
/ usr / bin
/ usr / bin / qemu-img
/ usr / bin / qemu-nbd / usr / bin / qemu-io

Se ao invés de discriminar por / bin nós teríamos feito isso por / sbin, obteríamos outro resultado que deixamos à sua consideração.

  • qemu-img: permite-nos criar, converter e / ou modificar imagens de discos que não funcionam ou que estão Fora de linha.
    Nós sugerimos execute o comando homem qemu-img. Vamos apenas enfatizar que NUNCA devemos usar este comando para modificar qualquer imagem que esteja em uso por qualquer máquina virtual ou qualquer outro processo, pois pode destruir a imagem. Também não devemos consultar os dados de uma imagem em processo de modificação, pois podemos encontrar inconsistências em seu estado..

Exemplos de uso de alguns dos comandos

virt-host-validar

buzz @ sysadmin: ~ $ virt-host-validate 
  QEMU: Verificando a virtualização de hardware: PASS QEMU: Verificando o dispositivo / dev / kvm: PASS QEMU: Verificando o dispositivo / dev / vhost-net: WARN (Carregar o módulo 'vhost_net' para melhorar o desempenho da rede virtio) QEMU: Verificando dispositivo / dev / net / tun: PASS LXC: Checking for Linux> = 2.6.26: PASS

buzz @ sysadmin: ~ $ sudo virt-host-validate 
[sudo] senha para buzz: QEMU: Verificando virtualização de hardware: PASS QEMU: Verificando dispositivo / dev / kvm: PASS QEMU: Verificando dispositivo / dev / vhost-net: PASS QEMU: Verificando dispositivo / dev / net / tun : PASS LXC: Checking for Linux> = 2.6.26: PASS

virt-xml-validar

buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/dns.xml 
/etc/libvirt/qemu/dns.xml valida

buzz @ sysadmin: ~ $ sudo virt-xml-validate /etc/libvirt/qemu/networks/default.xml
/etc/libvirt/qemu/networks/default.xml valida

qemu-img

buzz @ sysadmin: ~ $ qemu-img check /tera/vmware/omicron/omicron.vmdk
Nenhum erro foi encontrado na imagem.

buzz @ sysadmin: ~ $ qemu-img info /tera/vmware/omicron/omicron.vmdk
imagem: /tera/vmware/omicron/omicron.vmdk
formato do arquivo: vmdk tamanho virtual: 20G (21474836480 bytes) tamanho do disco: 3.6G cluster_size: 65536 Informações específicas do formato: cid: 1473577509 cid pai: 4294967295 tipo de criação: monolítico Extensões esparsas: [0]: tamanho virtual: 21474836480 nome do arquivo: / tera / tamanho do cluster vmware / omicron / omicron.vmdk: formato 65536:

buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.raw 
imagem: /tera/vms/omicron.raw
formato do arquivo: tamanho virtual bruto: 20G (21474836480 bytes) tamanho do disco: 3.4G

buzz @ sysadmin: ~ $ qemu-img info /tera/vms/miweb.qcow2
imagem: /tera/vms/miweb.qcow2
formato do arquivo: qcow2 tamanho virtual: 10G (10737418240 bytes) tamanho do disco: 4.5G cluster_size: 65536 Informações específicas do formato: compat: 1.1 lazy refcounts: false

buzz @ sysadmin: ~ $ sudo qemu-img convert -p /tera/vms/omicron.raw -O qcow2 /tera/vms/omicron.qcow2
    (27.56 / 100%)

buzz @ sysadmin: ~ $ qemu-img info /tera/vms/omicron.qcow2 
imagem: /tera/vms/omicron.qcow2
formato do arquivo: qcow2 tamanho virtual: 20G (21474836480 bytes) tamanho do disco: 3.5G cluster_size: 65536 Informações específicas do formato: compat: 1.1 lazy refcounts: false
buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/hyp2.qcow2 20G
Formatando '/tera/vms/hyp2.qcow2', fmt = qcow2 size = 21474836480 criptografia = off cluster_size = 65536 lazy_refcounts = off 

buzz @ sysadmin: ~ $ sudo qemu-img info /tera/vms/hyp2.qcow2
imagem: /tera/vms/hyp2.qcow2
formato de arquivo: qcow2 tamanho virtual: 20G (21474836480 bytes) tamanho do disco: 196K cluster_size: 65536 Informações específicas do formato: compat: 1.1 lazy refcounts: false

virt-xml

Primeiro, criamos um novo álbum:

buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/dns2.qcow2 10G

Em seguida, o associamos ao domínio "dns" existente:

buzz @ sysadmin: ~ $ virt-xml --connect qemu: /// system dns --add-device --disk /tera/vms/dns2.qcow2 --confirm
--- XML ​​original +++ XML alterado @@ -128,5 +128,10 @@  + + + + +

Definir 'dns' com o XML alterado? (s / n): s
Domínio 'dns' definido com sucesso.

No final do artigo, fornecemos a estrutura completa do arquivo /etc/libvirt/qemu/dns.xml recém-modificado.

virt-convert

Vamos converter uma máquina virtual criada usando o VMware Workstation para o formato libvirt, mas não antes de especificar que o formato do disco rígido convertido é qcow2, e também que a nova imagem da máquina virtual é criada no repositório principal / tera / vms. Também queremos que a saída do comando seja o mais explícita possível, então usamos a opção -d.

buzz @ sysadmin: ~ $ sudo virt-convert -d / tera / vmware / miweb / --disk-format qcow2 --destination / tera / vms

Depois disso, o virt-viewer se conecta automaticamente ao Convidado recém-convertido, e podemos ver todo o seu processo de inicialização.virt

minhaweb02

clone virt

Vamos clonar a máquina virtual «dns":

buzz @ sysadmin: ~ $ virt-clone --connect qemu: /// system -o dns --auto-clone
Atribuindo 'dns-clone.qcow2' | 10 GB 00:20 Atribuindo 'dns2-clone.qcow2' | 10 GB 00:01     

O clone 'dns-clone' foi criado com sucesso.

Nós verificamos usando o comando Virsh, que é uma prévia do próximo artigo:

buzz @ sysadmin: ~ $ sudo virsh list
 Id Nome Estado ----------------------------------------------- -----

buzz @ sysadmin: ~ $ sudo virsh list --todos
 Id Nome Estado ----------------------------------------------- ----- - dns desligado - dns-clone desligado - miweb desligado

buzz @ sysadmin: ~ $ sudo virsh start dns-clone
Domínio dns-clone iniciado
buzz @ sysadmin: ~ $ virt-viewer --connect qemu: /// system dns-clone

clone de DNS

virt-instalar

Queremos criar uma máquina virtual chamada «WordPress»Para hospedar o site do Intranet empresarial. Não será publicado na Internet. Que tem cerca de 1024 megabytes de RAM, um disco rígido de 80 gigabytes de crescimento dinâmico, que é baseado no Debian Jessie, e está conectado à rede «omissão".

Para tornar nossa vida mais fácil, primeiro criamos a imagem de disco usando qemu-img:

buzz @ sysadmin: ~ $ sudo qemu-img create -f qcow2 /tera/vms/wordpress.qcow2 80G
Formatando '/tera/vms/wordpress.qcow2', fmt = qcow2 size = 85899345920 encryption = off cluster_size = 65536 lazy_refcounts = off

Em seguida, criamos a máquina e iniciamos o processo de instalação:

buzz @ sysadmin: ~ $ sudo virt-install --connect qemu: /// system --virt-type = kvm \
--name wordpress --ram 1024 --vcpus = 1 \
--disk /tera/vms/wordpress.qcow2\
--cdrom /home/buzz/isos/Linux/debian-8/debian-8.0.0-amd64-CD-1.iso \
--os-type linux --network network = default \
--descrição wordpress.desdelinux.ventilador

wordpress

virt-top

buzz @ sysadmin: ~ $ virt-top --connect qemu: /// system
virt-top 15:39:21 - x86_64 2 / 2CPU 1600 MHz 3863 MB 2 domínios, 2 ativos, 2 em execução, 0 hibernando, 0 pausado, 0 inativo D: 0 O: 0 X: 0 CPU: 0.7% Mem: 768 MB ( 768 MB por convidados) ID S RDRQ WRRQ RXBY TXBY% CPU% MEM TEMPO NOME 22 R 0 0 104 0 0.3 6.0 0: 11.49 dns 21 R 0 0 104 0 0.3 13.0 0: 13.42 miweb

Estrutura do arquivo dns.xml

À primeira vista pode parecer um pouco difícil entender a estrutura do arquivo de definição de uma máquina virtual ou Locatário, conforme entendido pelo hipervisor Qemu-KVM e bibliotecas relacionadas, como libvirt. O arquivo está no formato padrão.xml. É estruturado por blocos de definição, contidos no bloco principal «domínio".

....

Dentro desse bloco, encontraremos o definições de toda a máquina virtual:

  • nome da equipe
  • uuid do time
  • quantidade de RAM
  • número de processadores
  • tipo de sistema operacional e sua arquitetura. dispositivo de bota.
  • Recursos que ele suporta, como ACPI "Automatic Control Power Interface", APM "Automatic Power Management" e PAE.
  • Modelo (s) de CPU e suas características
  • configuração do relógio: se é UTC "United Time Cordinate" ou não.
  • resposta a eventos como desligamento, reinicialização ou falha do sistema
  • se o PM «Power Management» habilitou os eventos «suspender a escrita na memória» e «suspender a escrita no disco rígido»
  • tipo de emulador de diferentes dispositivos ou Dispositivos KVM
  • para todos os discos rígidos: driver, tipo de disco, caminho do arquivo de imagem, dispositivo de destino, tipo de barramento, slot «ranhura»Pci ao qual está conectado, etc., dependendo do disco virtual: IDE, SATA, SCSI, USB ou Virtio.
  • dispositivos ópticos como CDR
  • número e tipo de conectores USB
  • Slot PCI para disco IDE
  • conector serial para comunicações
  • conector paralelo para impressoras
  • placas de rede com um endereço MAC único, tipo de placa de rede, a qual slot pci ela está conectada e a qual rede virtual ela se conectará
  • consoles da série pty
  • dispositivos de entrada como pad «comprimido", Teclado do mouse"mouse", etc.
  • placa de vídeo e sua RAM, tipo, modelo, slot, barramento, etc.
  • e outro longo etc.

Em suma, La Mar Océana de definições e dispositivos que são necessários e suportados pelo hipervisor Qemu-KVM e bibliotecas relacionadas, para ter uma máquina virtual totalmente funcional como se fosse uma máquina real.

buzz @ sysadmin: ~ $ sudo cat /etc/libvirt/qemu/dns.xml 
<!--
AVISO: ESTE É UM ARQUIVO GERADO AUTOMATICAMENTE.  É PROVÁVEL QUE AS MUDANÇAS SEJAM SUBSCRITAS E PERDIDAS.  Mudanças nesta configuração xml devem ser feitas usando: virsh edit dns ou outro aplicativo usando a API libvirt.

próximas entregas

  • Comando Virsh
  • Gerenciamento remoto de hipervisores e suas máquinas virtuais usando SSH

Lembre-se de que esta será uma série de artigos de Redes de computadores para PMEs. Estaremos esperando por você!


15 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Diego dito

    Você me pediu um feedback e aqui vai ... 🙂

    A série é muito interessante, muito completa. Estou aprendendo muito com isso, embora ainda não tenha tentado "em produção".

    No momento estou finalizando um projeto que me deixa muito ocupado, mas com certeza usarei essa série como referência. Obrigado pelo enorme esforço.

    1.    federico dito

      Obrigado Diego pelo feedback. Pelo menos sei que o que publiquei é útil para você. E você está certo sobre o grande esforço que fazemos para DesdeLinux para entregar artigos de qualidade para você no idioma espanhol. Sabemos que esse tipo de postagem não é abundante e é por isso que os escrevemos.

  2.   Carburo do Zodíaco dito

    Artigo abrangente e didático amigo Fico, que reúne em um post os comandos virt- * usados ​​no KVM. É muito difícil encontrar materiais como este na língua espanhola. Acho que o comando virt-what estava faltando. Caso contrário, excelente

    1.    fico dito

      Obrigado por comentar, amigo Zodiac. É verdade que faltava o comando virt-what. O omiti conscientemente porque a recomendação de seu uso de acordo com seu manual me deixou com um gosto ruim. No final o que entendi é que não recomendam seu uso

  3.   Federico dito

    Muito verdadeiro amigo Zodíaco. Como diz Diego em seu comentário, é um grande esforço que fazemos para DesdeLinux para entregar artigos de qualidade para você em espanhol. Além dos clássicos posts de copiar e colar em CD que abundam na WWW Village. Que auxiliam na formação de Administradores de Sistemas. Quem acompanhou esta série terá percebido que pretendemos cobrir de forma abrangente e em ordem lógica a solução para uma rede de pequenas ou médias empresas. Obrigado novamente a todos por seus comentários.

  4.   crespo88 dito

    Tenho feito algo com smartphones Android, e não tive a chance de ler um artigo tão bom, desta vez eu só quero dizer algo. Vá com calma. Um bom entendimento ...

  5.   federico dito

    Crespo88, o artigo pode ser um pouco longo, mas não sou amigo de cortar um tópico específico como este em vários posts, se é o que quer dizer. A relativa complexidade do conteúdo, eu não digo, é a própria questão da virtualização. 😉

    1.    crespo88 dito

      Não estava me referindo a isso, artigo excelente como sempre. Quero dizer que você está tocando músicas muito boas, ou seja, com uma utilidade muito útil. O "Give it soft" significa que você está fugindo. Hehehe, um abraço irmão.

      1.    fico dito

        Obrigado irmão por comentar

  6.   Petercheco dito

    Postagem muito boa ... Didática, completa e simplesmente perfeita.

    Agora, para quem prefere usar este tipo de virtualização, é melhor usar oVirt (http://www.ovirt.org/), um projeto no qual o Red Hat Virtualization e Open Source são construídos. Desta forma é possível aceder a opções muito avançadas de uma forma muito fácil, que são bastante complexas na consola :).

    http://www.ovirt.org/download/
    http://www.ovirt.org/documentation/introduction/about-ovirt/

    Felicidades :).

  7.   Federico dito

    Muito obrigado, Petercheco, pelo seu comentário. No artigo anterior "Virtualization in Debian: Introduction", em um parágrafo dedicado à Open Virtualization Alliance, menciono o oVirt como um dos softwares promovidos pela OVA. Acho que oVirt é para grandes implantações. Por outro lado, ele pede uma estação de trabalho dedicada a ele com 4 GB de RAM como quantidade de memória recomendada. Meu amigo e colega Eduardo Noel "enoel.corebsd@gmail.com" instalou vários servidores de virtualização baseados no CentOS 7 e os gerencia maravilhosamente com oVirt.

  8.   Denis Cantillo dito

    excelente artigo meu parceiro, outro exemplo da qualidade que você tem

  9.   federico dito

    Obrigado amigo Denis pelo seu comentário e elogio imerecido para mim. Nós fazemos o que podemos.

  10.   Ismael Álvarez Wong dito

    Embora eu tenha pendente o teste dos comandos virt em meu home-lab, não posso deixar de reconhecer que o artigo é simplesmente ótimo, muito prático e extremamente útil, pois está focado no terminal que é realmente meu favorito para o meu perfil de sysadmin.
    Ótimo tudo relacionado à administração local ou remota de VMs sem usar a interface gráfica do «Virt-Manager».
    Mais uma vez, meu amigo Fico, você se engrandece ao compartilhar abnegadamente seu conhecimento do mundo Linux.
    Os efusivos SLDs de Wong e eu continuamos a estudar a série Virt Qemu-KVM mais diligentemente.

    1.    federico dito

      Amigo Wong: Comentários como os seus são os que me obrigam a continuar escrevendo sobre a SME Networks. Muitos podem se perguntar por que minha ênfase em Qemu-KVM, e a resposta está em meu artigo https://blog.desdelinux.net/virtualizacion-debian-introduccion-redes-computadoras-las-pymes/#Open_Virtualization_Alliance_OVA. Menos sobre ele o Virt, que considero apropriado para cenários maiores do que uma Rede de PME, tratei de outros programas promovidos pela OVA. Que simples

      Por que pesquisar fora dos repositórios de programa de cada distribuição que embarco, se o que preciso virtualizar no nível corporativo está lá?

      Meus sinceros agradecimentos por seus comentários, amigo Wong!