KVM IP via QEMU

KVM IP via QEMU

Solucionar problemas de inicialização do sistema operacional em servidores sem KVM não é uma tarefa fácil. Criamos um KVM sobre IP para nós mesmos por meio de uma imagem de recuperação e uma máquina virtual.

Em caso de problemas com o sistema operacional em um servidor remoto, o administrador baixa a imagem de recuperação e realiza o trabalho necessário. Este método funciona muito bem quando a causa da falha é conhecida e a imagem de recuperação e o sistema operacional instalado no servidor são da mesma família. Se a causa da falha ainda não for conhecida, será necessário monitorar o andamento do carregamento do sistema operacional.

KVM remoto

Você pode acessar o console do servidor usando ferramentas integradas, como IPMI ou Intel® vPro™, ou por meio de dispositivos externos chamados IP-KVM. Existem situações em que todas as tecnologias listadas não estão disponíveis. No entanto, este não é o fim. Se o servidor puder ser reinicializado remotamente em uma imagem de recuperação baseada em um sistema operacional Linux, o KVM sobre IP poderá ser organizado rapidamente.

A imagem de recuperação é um sistema operacional completo localizado na RAM. Assim, podemos rodar qualquer software, inclusive máquinas virtuais (VMs). Ou seja, você pode iniciar uma VM na qual o sistema operacional do servidor será executado. O acesso ao console VM pode ser organizado, por exemplo, via VNC.

Para executar o sistema operacional do servidor dentro de uma VM, você deve especificar os discos do servidor como discos da VM. Nos sistemas operacionais da família Linux, os discos físicos são representados por dispositivos de bloco no formato / dev / sdX, que pode ser trabalhado com arquivos normais.

Alguns hipervisores, como QEMU e VirtualBox, permitem armazenar dados da VM em formato “bruto”, ou seja, armazenar apenas dados sem metadados do hipervisor. Assim, a VM pode ser iniciada utilizando os discos físicos do servidor.

Este método requer recursos para iniciar a imagem de recuperação e a VM dentro dela. Porém, se você tiver quatro ou mais gigabytes de RAM, isso não será um problema.

Preparando o Ambiente

Você pode usar um programa leve e simples como uma máquina virtual QEMU, que na maioria das vezes não faz parte da imagem de recuperação e, portanto, deve ser instalado separadamente. A imagem de recuperação que oferecemos aos clientes é baseada em Arch Linux, que usa um gerenciador de pacotes pacman.

A primeira coisa que você precisa fazer é certificar-se de que a imagem de recuperação esteja usando o software mais recente. Você pode verificar e atualizar todos os componentes do sistema operacional com o seguinte comando:

pacman -Suy

Após a atualização, você precisa instalar o QEMU. O comando de instalação via pacman ficará assim:

pacman -S qemu

Vamos verificar se o qemu está instalado corretamente:

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

Se tudo estiver assim, a imagem de recuperação está pronta para uso.

Iniciando uma máquina virtual

Primeiro você precisa decidir sobre a quantidade de recursos alocados para a VM e descobrir os caminhos para os discos físicos. No nosso caso, alocaremos dois núcleos e dois gigabytes de RAM para a máquina virtual, e os discos serão localizados ao longo do caminho / Dev / sda и / dev / sdb. Vamos iniciar a VM:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio

Um pouco mais de detalhes sobre o que significa cada um dos parâmetros:

  • -m 2048M — alocar 2 GB de RAM para a VM;
  • -net nic -usuário da rede — adicionar uma conexão simples à rede através de um hipervisor usando NAT (Network Address Translation);
  • -ativar-kvm — habilitar a virtualização completa de KVM (Kernel Virtual Machine);
  • -host da CPU — dizemos ao processador virtual para obter todas as funcionalidades do processador do servidor;
  • -MPC — tipo de equipamento de PC;
  • -smp2 — o processador virtual deve ser dual-core;
  • -vga padrão — escolha uma placa de vídeo padrão que não suporte resoluções de tela grandes;
  • -drive file=/dev/sda,format=raw,index=0,media=disk
    • arquivo=/dev/sdX — caminho para o dispositivo de bloco que representa o disco do servidor;
    • format = raw — notamos que no arquivo especificado todos os dados estão na forma “bruta”, ou seja, como em um disco;
    • index = 0 — número do disco, deve aumentar em um para cada disco subsequente;
    • mídia=disco — a máquina virtual deve reconhecer esse armazenamento como um disco;
  • -vnc:0, senha — inicie o servidor VNC por padrão em 0.0.0.0:5900, use uma senha como autorização;
  • -monitorar stdio — a comunicação entre o administrador e o qemu ocorrerá através de fluxos de entrada/saída padrão.

Se tudo estiver em ordem, o monitor QEMU será iniciado:

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)

Indicamos que a autorização ocorre por meio de senha, mas não indicamos a senha em si. Isso pode ser feito enviando o comando change vnc password para o monitor QEMU. Nota importante: A senha não pode ter mais de oito caracteres.

(qemu) change vnc password
Password: ******

Depois disso, podemos nos conectar com qualquer cliente VNC, por exemplo, Remmina, utilizando o endereço IP do nosso servidor com a senha que especificamos.

KVM IP via QEMU

KVM IP via QEMU

Agora não vemos apenas possíveis erros na fase de carregamento, mas também podemos lidar com eles.

Quando terminar, você deverá desligar a máquina virtual. Isso pode ser feito dentro do sistema operacional, enviando um sinal para desligar ou dando o comando sistema_powerdown no monitor QEMU. Isso será equivalente a pressionar o botão de desligamento uma vez: o sistema operacional dentro da máquina virtual será desligado sem problemas.

Instalação do sistema operacional

A máquina virtual tem acesso total aos discos do servidor e, portanto, pode ser usada para instalar manualmente o sistema operacional. A única limitação é a quantidade de RAM: a imagem ISO nem sempre pode ser colocada na RAM. Vamos alocar quatro gigabytes de RAM para armazenar a imagem / mnt:

mount -t tmpfs -o size=4G tmpfs /mnt

Também baixaremos a imagem de instalação do sistema operacional FreeBSD 12.0:

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

Agora você pode iniciar a VM:

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
-boot d

Bandeira -inicialização d instala a inicialização a partir da unidade de CD. Nós nos conectamos com um cliente VNC e vemos o bootloader do FreeBSD.

KVM IP via QEMU

Como foi utilizada a obtenção de um endereço via DHCP para acessar a Internet, após a configuração pode ser necessário inicializar o sistema recém-instalado e corrigir as configurações de rede. Em alguns casos pode ser necessária a instalação de drivers de adaptadores de rede, pois a placa de rede instalada no servidor e a emulada na VM são diferentes.

Conclusão

Este método de organização do acesso remoto ao console do servidor consome alguns recursos do servidor, porém, não impõe nenhum requisito especial ao hardware do servidor e, portanto, pode ser implementado em quase todas as condições. O uso desta solução torna muito mais fácil diagnosticar falhas de software e restaurar a funcionalidade de um servidor remoto.

Fonte: habr.com

Adicionar um comentário