Compartilhar via


A memória máxima de uma máquina virtual Azure Linux é limitada a 64 GB

Aplica-se a: ✔️ VMs linux

Número original do KB: 4038684

Observação

O CentOS mencionado neste artigo é uma distribuição Linux e chegará ao fim da vida útil (EOL). Considere seu uso e planeje adequadamente. Para obter mais informações, consulte Diretrizes de fim da vida útil do CentOS.

Este artigo fornece uma solução para um problema no qual a memória máxima de uma máquina virtual Azure Linux é limitada a 64 GB no Linux com a versão do kernel anterior a 3.10.

Sintomas

Você cria uma máquina virtual Linux (VM) com mais de 64 GB de memória no Microsoft Azure. Você descobre que a memória real alocada na VM do Linux é de apenas 64 GB.

Observação

Você deve verificar a memória disponível na VM do Linux para determinar se a memória foi limitada a 64 GB. Por exemplo, use o comando free -m. O portal do Azure sempre mostra o tamanho total da memória atribuído à VM.

Motivo

Esse problema é causado por um bug no kernel do Linux em versões anteriores à 3.10. O bug foi corrigido no kernel Linux versão 3.10 e versões posteriores.

As VMs no Azure são hospedadas no Windows Server 2016 Hyper-V ou no Windows Server 2012 R2 Hyper-V. Quando a VM está em execução em um host Windows Server 2012 R2 Hyper-V, o bug não se manifesta porque o tamanho máximo do espaço de endereço físico que o Hyper-V fornece para VMs convidadas é de 4 TB. Mas quando a VM convidada está em execução no host Hyper-V do Windows Server 2016, o tamanho máximo do espaço de endereço físico é aumentado para 16 TB. Nesse cenário, o bug se manifesta e faz com que o convidado do Linux veja no máximo 64 GB de memória. O valor de 64 GB é controlado pelos valores MTRR (Memory Type Range Registers) que o Hyper-V fornece ao convidado.

A atribuição de uma VM a um host Windows Server 2012 R2 ou Windows Server 2016 é controlada pela infraestrutura do Azure e não pode ser selecionada pelo usuário. Portanto, algumas implantações podem encontrar esse problema, enquanto outras não.

Resolução

Esse bug ocorre na versão do kernel Linux no SUSE Linux Enterprise Server (SLES) 11 SP4, Red Hat Enterprise Linux (RHEL) 6.xe CentOS 6.x. Ele é corrigido em kernels Linux mais recentes e não ocorre no SLES 12, RHEL 7.xe CentOS 7.x.

Para kernels que possuem o bug, você pode contornar o problema adicionando disable_mtrr_trim como uma opção de linha de inicialização do kernel. A Microsoft está trabalhando com os fornecedores de nossas distribuições endossadas para atualizar as imagens no Azure para adicionar disable_mtrr_trim como uma opção de linha de inicialização do kernel. Esta opção desativa a interpretação MTRR e remove o limite de 64 GB. Se você criar uma nova VM a partir de uma imagem que foi atualizada para incluir essa opção de linha de inicialização do kernel, não experimentará o limite de 64 GB, independentemente da versão do host em que a VM está implantada.

Para VMs existentes, você pode adicionar manualmente a mesma opção de linha de inicialização do kernel usando as etapas a seguir.

  • Para RHEL/CentOS 6.x:ing:

    1. Abra o arquivo /boot/grub/grub.conf em um editor de texto.

    2. Adicione o parâmetro disable_mtrr_trim à linha de comando do kernel.

      No arquivo grub.conf, haverá uma linha parecida com a seguinte:

      kernel /vmlinuz-2.6.32-696.3.2.el6.x86_64 ro root=UUID=<ID>

      Adicione disable_mtrr_trim como um parâmetro separado ao final desta linha.

    3. Salve e feche o arquivo grub.conf.

    4. Reinicie a VM.

    Para obter mais informações, consulte Red Hat: arquivo de configuração do menu GRUB.

  • Para SLES, consulte SUSE: inicializando com GRUB.

  • Para Debian, consulte Debian: Parâmetros de Inicialização.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Aviso de isenção de responsabilidade para contatos de terceiros

A Microsoft fornece informações de contato de terceiros para ajudá-lo a encontrar informações adicionais sobre esse tópico. Essas informações de contato podem ser alteradas sem aviso prévio. A Microsoft não garante a precisão das informações de contato de terceiros.