IP-KVM via QEMU

IP-KVM via QEMU

A resolução de problemas durante a inicialização do sistema operacional em servidores sem KVM é uma tarefa desafiadora. Criamos um KVM-over-IP através de uma imagem de recuperação e uma máquina virtual.

No caso de problemas com o sistema operacional no servidor remoto, o administrador carrega a imagem de recuperação e realiza os trabalhos necessários. Esse método funciona bem quando a causa da falha é conhecida e a imagem de recuperação e o sistema operacional instalado no servidor pertencem à mesma família. Se a causa da falha ainda não for conhecida, é necessário monitorar o processo de inicialização do sistema operacional.

KVM remoto

O acesso ao console do servidor pode ser feito por meio de ferramentas integradas, como IPMI ou Intel® vPro™, ou através de dispositivos externos chamados IP-KVM. Existem situações em que todas essas tecnologias estão indisponíveis. Contudo, isso não é o fim. Se o servidor puder ser reiniciado remotamente em uma imagem de recuperação baseada em um sistema operacional da família Linux, é possível rapidamente organizar um KVM-over-IP.

A imagem de recuperação é um sistema operacional completo que é carregado na memória RAM. Dessa forma, podemos executar qualquer software, incluindo máquinas virtuais (VMs). Isso significa que podemos iniciar uma VM, dentro da qual o sistema operacional do servidor funcionará. O acesso ao console da VM pode ser organizado, por exemplo, através do VNC.

Para iniciar o sistema operacional do servidor dentro da VM, é necessário especificar os discos do servidor como discos da VM. Nos sistemas operacionais da família Linux, os discos físicos são representados como dispositivos de bloco do tipo /dev/sdX, que podem ser manipulados como arquivos normais.

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

Esse método requer recursos para inicializar a imagem de recuperação e a VM dentro dela. No entanto, com quatro gigabytes ou mais de memória RAM, isso não será um problema.

Preparação do ambiente

Uma programação leve e simples pode ser usada como máquina virtual. QEMU, que geralmente não faz parte da imagem de recuperação, portanto, deve ser instalada separadamente. A imagem de recuperação que oferecemos aos clientes é baseada em EPEL para RHEL/CentOS, que utiliza o gerenciador de pacotes pacman.

Primeiro, é necessário garantir que a imagem de recuperação utilize as versões mais recentes do software. Você pode verificar e atualizar todos os componentes do SO com o seguinte comando:

pacman -Suy

Após a atualização, é necessário instalar o QEMU. O comando para instalação via pacman será assim:

pacman -S qemu

Vamos verificar se o qemu foi instalado corretamente:

root@sel-rescue ~ # qemu-system-x86_64 --version
Versão do emulador QEMU 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard e os desenvolvedores do projeto QEMU

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

Iniciando a máquina virtual

Primeiro, é necessário determinar a quantidade de recursos alocados para a MV e descobrir os caminhos para os discos físicos. No nosso caso, alocaremos dois núcleos e dois gigabytes de memória RAM para a máquina virtual, e os discos estão localizados no caminho /dev/sda e /dev/sdb. Vamos iniciar a MV:

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 sobre o que cada um dos parâmetros significa:

  • -m 2048M — alocamos 2 GB de RAM para a MV;
  • -net nic -net user — adicionamos uma conexão simples à rede através do hipervisor usando NAT (Network Address Translation);
  • -enable-kvm — ativamos a virtualização completa KVM (Kernel Virtual Machine);
  • -cpu host — dizemos ao processador virtual para obter toda a funcionalidade do processador do servidor;
  • -M pc — tipo de equipamento PC;
  • -smp 2 — o processador virtual deve ser de dois núcleos;
  • -vga std — escolhemos uma placa gráfica padrão que não suporta altas resoluções de tela;
  • -drive file=\/dev\/sda,format=raw,index=0,media=disk
    • file=\/dev\/sdX — caminho para o dispositivo de bloco que representa o disco do servidor;
    • format=raw — indicamos que no arquivo especificado todos os dados estão em formato 'raw', ou seja, como no disco;
    • index=0 — número do disco, deve aumentar em uma unidade para cada disco subsequente;
    • media=disk — a máquina virtual deve reconhecer esse armazenamento como um disco;
  • -vnc :0, password — iniciamos o servidor VNC por padrão em 0.0.0.0:5900, usando uma senha como autorização;
  • -monitor stdio — a comunicação do administrador com o qemu ocorrerá através de streams padrão de entrada/saída.

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

Monitor QEMU 4.0.0 - digite 'help' para mais informações
(qemu)

Nós indicamos que a autorização ocorre por senha, mas não especificamos a própria senha. Isso pode ser feito enviando o comando change vnc password no monitor QEMU. Nota importante: a senha não pode ter mais de oito caracteres.

(qemu) alterar a senha do vnc
Senha: ******

Após isso, podemos nos conectar com qualquer cliente VNC, como o Remmina, pelo endereço IP do nosso servidor com a senha que especificamos.

IP-KVM via QEMU

IP-KVM via QEMU

Agora, não só conseguimos ver possíveis erros na fase de inicialização, mas também podemos combatê-los.

Após o término dos trabalhos, é necessário desligar a máquina virtual. Isso pode ser feito tanto dentro do SO, enviando um sinal para desligar, quanto dando o comando system_powerdown no monitor QEMU. Isso será equivalente a pressionar o botão de desligar uma vez: o sistema operacional dentro da máquina virtual será encerrado de forma adequada.

Instalação do sistema operacional

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

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

Além disso, vamos baixar 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 podemos 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

A bandeira -boot d define o carregamento a partir do CD-ROM. Nos conectamos ao cliente VNC e vemos o carregador do FreeBSD.

IP-KVM via QEMU

Como foi utilizado DHCP para obter o endereço de internet, pode ser necessário inicializar o sistema recém-instalado e corrigir as configurações de rede após a configuração. Em alguns casos, pode ser necessário instalar drivers do adaptador de rede, uma vez que a placa de rede instalada no servidor e emulada na VM são diferentes.

Conclusão

Esse método de organização de acesso remoto ao console do servidor consome parte dos recursos do servidor, entretanto, não apresenta requisitos especiais para o hardware do servidor, podendo ser realizado em praticamente qualquer condição. Usar essa solução facilita significativamente o diagnóstico de falhas de software e a recuperação da funcionalidade do servidor remoto.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster