Melhores práticas para executar o Linux no Hyper-V
Aplica-se a: Windows Server 2022, Azure Stack HCI, versão 20H2; Windows Server 2019, Windows Server 2016, Hyper-V Server 2016, Windows Server 2012 R2, Hyper-V Server 2012 R2, Windows Server 2012, Hyper-V Server 2012, Windows Server 2008 R2, Windows 10, Windows 8.1, Windows 8, Windows 7.1, Windows 7
Este tópico contém uma lista de recomendações para executar a máquina virtual do Linux no Hyper-V.
Ajustar sistemas de arquivos Linux em arquivos VHDX dinâmicos
Alguns sistemas de arquivos do Linux podem consumir quantidades significativas de espaço em disco real, mesmo quando o sistema de arquivos está praticamente vazio. Para reduzir a quantidade de uso do espaço em disco real de arquivos VHDX dinâmicos, considere as seguintes recomendações:
- Ao criar o VHDX, use BlockSizeBytes de 1MB (do padrão de 32 MB) no PowerShell, por exemplo:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
O formato ext4 é preferencial para ext3 porque ext4 é mais eficiente em termos de espaço do que ext3 quando usado com arquivos VHDX dinâmicos.
Ao criar o sistema de arquivos, especifique o número de grupos para 4096, por exemplo:
# mkfs.ext4 -G 4096 /dev/sdX1
Tempo limite do menu grub em Máquinas Virtuais de 2ª geração
Devido a remoção do hardware herdado da emulação em máquinas virtuais de 2ª geração, o temporizador de contagem regressiva do menu grub faz a contagem muito rapidamente para que o menu grub seja exibido, carregando imediatamente a entrada padrão. Até que o grub seja corrigido para usar o temporizador compatível com EFI, modifique /boot/grub/grub.conf, /etc/default/grub ou equivalente para ter "timeout=100000" em vez do padrão "timeout=5".
Inicialização PxE em Máquinas Virtuais de 2ª geração
Como o temporizador PIT não está presente em Máquinas Virtuais de 2ª geração, as conexões de rede com o servidor TFTP PxE podem ser encerradas prematuramente e impedir que o carregador de inicialização leia a configuração do Grub e carregue um kernel do servidor.
No RHEL 6.x, o carregador de inicialização EFI do grub v0.97 herdado pode ser usado em vez do grub2, conforme descrito aqui: https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html
Em distribuições do Linux diferentes do RHEL 6.x, etapas semelhantes podem ser seguidas para configurar o grub v0.97 para carregar kernels do Linux de um servidor PxE.
Além disso, a entrada de teclado e mouse no RHEL/CentOS 6.6 não funcionará com o kernel de pré-instalação, o que impede a especificação de opções de instalação no menu. Um console serial deve ser configurado para permitir a escolha de opções de instalação.
No arquivo efidefault no servidor PxE, adicione o seguinte parâmetro kernel "console=ttyS1"
Na VM no Hyper-V, configure uma porta COM usando este cmdlet do PowerShell:
Set-VMComPort -VMName <Name> -Number 2 -Path \\.\pipe\dbg1
Especificar um arquivo de início rápido para o kernel de pré-instalação também evitaria a necessidade de entrada de teclado e mouse durante a instalação.
Usar endereços MAC estáticos com clustering de failover
As máquinas virtuais do Linux que serão implantadas usando o clustering de failover devem ser configuradas com um endereço MAC (controle de acesso de mídia estático) para cada adaptador de rede virtual. Em algumas versões do Linux, a configuração de rede pode ser perdida após o failover porque um novo endereço MAC é atribuído ao adaptador de rede virtual. Para evitar perder a configuração de rede, verifique se cada adaptador de rede virtual tem um endereço MAC estático. Você pode configurar o endereço MAC editando as configurações da máquina virtual no Gerenciador do Hyper-V ou no Gerenciador de Cluster de Failover.
Usar adaptadores de rede específicos do Hyper-V, não o adaptador de rede herdado
Configure e use o adaptador de Ethernet virtual, que é uma placa de rede específico do Hyper-V com desempenho aprimorado. Se os adaptadores de rede herdados e específicos do Hyper-V estiverem anexados a uma máquina virtual, os nomes de rede na saída de ifconfig -a podem mostrar valores aleatórios, como _tmp12000801310. Para evitar esse problema, remova todos os adaptadores de rede herdados ao usar adaptadores de rede específicos do Hyper-V em uma máquina virtual do Linux.
Usar noop/none do agendador de E/S para melhorar o desempenho de E/S do disco
O kernel do Linux oferece dois conjuntos de agendadores de E/S de disco para reordenar solicitações. Um conjunto é para o subsistema ''blk'' mais antigo e um conjunto é para o subsistema ''blk-mq'' mais recente. Em ambos os casos, com os discos de estado sólido atuais, é recomendável usar um agendador que passa as decisões de agendamento para o hipervisor do Hyper-V subjacente. Para kernels do Linux que usam o subsistema ''blk'', esse é o agendador "noop". Para kernels do Linux que usam o subsistema ''blk-mq'', esse é o agendador "none".
Para um disco específico, os agendadores disponíveis podem ser vistos neste local do sistema de arquivos: /sys/class/block/<diskname>
/queue/scheduler, com o agendador atualmente selecionado entre colchetes. Você pode alterar o agendador gravando neste local do sistema de arquivos. A alteração deve ser adicionada a um script de inicialização para que ela persista entre reinicializações. Consulte a documentação da sua distribuição Linux para obter detalhes.
NUMA
As versões do kernel do Linux anteriores à 2.6.37 não são suporte para NUMA no Hyper-V com tamanhos de VM maiores. Esse problema afeta principalmente distribuições mais antigas usando o kernel do Red Hat 2.6.32, e foi corrigido no RHEL (Red Hat Enterprise Linux) 6.6 (kernel-2.6.32-504). Sistemas que executam kernels personalizados anteriores a 2.6.37 ou com base em RHEL anteriores a 2.6.32-504 devem definir o parâmetro de inicialização numa=off
na linha de comando do kernel em grub.conf. Para obter mais informações, consulte o KB 436883 do Red Hat.
Reservar mais memória para kdump
Caso o kernel de captura de despejo acabe com uma pane na inicialização, reserve mais memória para o kernel. Por exemplo, altere o parâmetro crashkernel=384M-:128M para crashkernel=384M-:256M no arquivo de configuração do grub do Ubuntu.
Reduzir o VHDX ou expandir arquivos VHD e VHDX pode resultar em tabelas de partição GPT errôneas
O Hyper-V permite a redução de arquivos VHDX (disco virtual) sem considerar nenhuma estrutura de dados de partição, volume ou sistema de arquivos que possa existir no disco. Se o VHDX for reduzido até o final do VHDX antes do final de uma partição, os dados podem ser perdidos, essa partição pode ser corrompida ou dados inválidos podem ser retornados quando a partição for lida.
Depois de redimensionar um VHD ou VHDX, os administradores devem usar um utilitário como fdisk ou se separar para atualizar a partição, o volume e as estruturas do sistema de arquivos para refletir a alteração no tamanho do disco. Reduzir ou expandir o tamanho de um VHD ou VHDX que tenha uma GPT (tabela de partição de GUID) causará um aviso quando uma ferramenta de gerenciamento de partição for usada para verificar o layout da partição, e o administrador será avisado para corrigir os cabeçalhos GPT primário e secundário. Essa etapa manual pode ser executada de forma segura sem perda de dados.