
A solução de problemas ao carregar o sistema operacional em servidores sem KVM não é uma tarefa fácil. Criamos KVM sobre IP usando uma imagem de recuperação e uma máquina virtual.
Em caso de problemas com o sistema operacional
no servidor remoto , o administrador baixa a imagem de recuperação e executa o trabalho necessário. Esse método funciona 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 progresso do carregamento do sistema operacional.
KVM remoto
Você pode acessar o console do servidor usando ferramentas internas, como IPMI ou Intel® vPro ™, ou usando dispositivos externos chamados IP-KVMs. Há situações em que nem todas as tecnologias listadas estão disponíveis. No entanto, este não é o fim. Se o servidor puder ser reinicializado remotamente em uma imagem de recuperação com base no sistema operacional Linux, o KVM sobre IP poderá ser rapidamente organizado.
A imagem de recuperação é um sistema operacional completo que reside na RAM. Assim, podemos executar qualquer software, incluindo máquinas virtuais (VMs). Ou seja, você pode iniciar a 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, você deve especificar os discos do servidor como discos da VM. Na família de sistemas operacionais Linux, os discos físicos são representados como dispositivos de bloco no formato
/ dev / sdX , que podem ser
manipulados como arquivos regulares.
Alguns hipervisores, como QEMU e VirtualBox, permitem armazenar dados da VM em formato bruto, ou seja, apenas dados de armazenamento sem metadados do hipervisor. Assim, uma VM pode ser iniciada usando os discos físicos do servidor.
Este método requer recursos para executar a imagem de recuperação e a VM dentro dela. No entanto, com quatro ou mais gigabytes de RAM, isso não será um problema.
Preparação do ambiente
Como uma máquina virtual, você pode usar o programa
QEMU leve e simples, que na maioria das vezes não faz parte da imagem de recuperação, portanto, ele deve ser instalado separadamente. A imagem de recuperação que oferecemos aos clientes é baseada no
Arch Linux , que usa o gerenciador de pacotes
pacman .
Primeiro, verifique se a imagem de recuperação está 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ê deve instalar o QEMU. O comando de instalação através do pacman ficará assim:
pacman -S qemu
Verifique se o qemu foi 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
Nesse caso, a imagem de recuperação está pronta para ser usada.
Inicialização da máquina virtual
Primeiro, você precisa determinar a quantidade de recursos alocados à 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 estão localizados nos caminhos
/ dev / sda e
/ dev / sdb . Execute 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 sobre o significado de cada um dos parâmetros:
- -m 2048M - aloque 2 GB de RAM por VM;
- -net nic -net user - adicione uma conexão de rede simples através de um hypervisor usando NAT (Network Address Translation);
- -enable-kvm - ativa a virtualização completa do KVM (Kernel Virtual Machine);
- -cpu host - informa ao processador virtual para obter toda a funcionalidade do processador do servidor;
- -M pc - tipo de equipamento para PC;
- -smp 2 - o processador virtual deve ser de núcleo duplo;
- -vga std - selecione uma placa de vídeo padrão que não suporte resoluções de tela grandes;
- -drive arquivo = / dev / sda, formato = bruto, índice = 0, mídia = disco
- file = / dev / sdX - caminho para o dispositivo de bloco que representa o disco do servidor;
- format = raw - marca que no arquivo especificado todos os dados estão no formato "raw", ou seja, no disco;
- índice = 0 - número do disco, deve aumentar para cada próximo disco em um;
- mídia = disco - a máquina virtual deve reconhecer esse armazenamento como um disco;
- -vnc: 0, senha - execute o servidor VNC padrão em 0.0.0.0:5900, use a senha como autorização;
- -monitor stdio - o administrador se comunicará com o qemu 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 com uma senha, mas não especificamos a senha em si. Você pode fazer isso enviando o comando change vnc password para o monitor QEMU. Nota importante: a senha não pode ter mais que oito caracteres.
(qemu) change vnc password
Password: ******
Depois disso, podemos nos conectar a qualquer cliente VNC, por exemplo, Remmina, pelo endereço IP do nosso servidor com a senha que você especificou.


Agora, não apenas vemos possíveis erros no estágio de carregamento, mas podemos combatê-los.
No final do trabalho, você deve concluir a máquina virtual. Isso pode ser feito dentro do sistema operacional
enviando um sinal de desligamento ou você pode fornecer o comando
system_powerdown ao monitor QEMU. Isso será equivalente a um único toque no botão de desligamento: 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: nem sempre a imagem ISO pode ser colocada na RAM. Selecionamos quatro gigabytes de RAM para armazenar a imagem em
/ mnt :
mount -t tmpfs -o size=4G tmpfs /mnt
Também carregamos 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
O
sinalizador -boot d define a inicialização a partir da unidade de CD. Estamos conectados pelo cliente VNC e vemos o carregador do FreeBSD.

Como o DHCP foi usado para acessar a Internet, é possível que após a configuração seja necessário inicializar o sistema recém-instalado e corrigir as configurações de rede. Em alguns casos, pode ser necessário instalar os drivers do adaptador de rede, pois a placa de rede instalada no servidor e emulada na VM é diferente.
Conclusão
Esse método de organização do acesso remoto ao console do servidor consome parte dos recursos do servidor, no entanto, não impõe nenhum requisito especial ao componente de hardware do servidor e, portanto, pode ser executado em quase todas as condições. O uso desta solução pode facilitar significativamente o diagnóstico de falhas de software e restaurar a integridade de um servidor remoto.