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
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
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.
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.
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