Í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.
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
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
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ê!
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.
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.
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
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
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.
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 ...
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. 😉
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.
Obrigado irmão por comentar
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 :).
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.
excelente artigo meu parceiro, outro exemplo da qualidade que você tem
Obrigado amigo Denis pelo seu comentário e elogio imerecido para mim. Nós fazemos o que podemos.
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.
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!