Partilhar via


Solucionar problemas de boot de máquinas virtuais Linux no Azure devido ao disco do sistema operacional estar cheio.

Aplica-se a: ✔️ VMs Linux

Resumo

Em determinadas circunstâncias e configurações, um disco completo do sistema operacional (SO) pode levar a problemas de inicialização em máquinas virtuais (VM) Linux do Azure. Este artigo fornece algumas causas e soluções para os problemas de inicialização.

Sintomas

Durante as operações normais do sistema, se o disco do sistema operacional ou as partições críticas do sistema ficarem cheias, os seguintes problemas poderão ocorrer:

  • Uma VM é desligada inesperadamente.
  • Uma VM não é inicializada com êxito.

Pré-requisitos

Para solucionar os problemas de inicialização e concluir os reparos do sistema, os seguintes requisitos devem ser atendidos:

  • Permissões para criar um instantâneo de disco ou operar algumas ferramentas de backup e restauração.

    Neste artigo, os dados ou discos são alterados, portanto, ter a capacidade de reverter a VM para um estado anterior é um componente crítico da administração segura do sistema.

  • Diagnósticos de boot habilitados e configurados.

    Ter essa configuração em vigor permite a revisão futura do armazenamento do log do console e a interação com a interface do console serial da VM.

  • Permissões para criar uma VM caso uma VM de resgate seja necessária a qualquer momento.

  • Permissões para criar, desanexar e anexar discos caso seja necessária a troca de discos.

Observação

Nem todos os requisitos se aplicam aos cenários a seguir.

Cenário 1: a VM é desligada inesperadamente e falha ao inicializar

Muitas práticas de proteção de segurança podem levar a dificuldades na manutenção dos sistemas. Se ocorrer um erro ao gravar no log de auditoria, uma configuração comum exigirá que o sistema seja desligado imediatamente. Para verificar se esse cenário é o motivo de um desligamento do sistema, execute as seguintes ações:

  • Verifique as mensagens de desligamento do sistema no log do console serial.

    Se o sistema for iniciado, uma mensagem "Iniciando o serviço de auditoria de segurança..." é exibida. Essa mensagem não indica que o serviço foi iniciado. Em vez disso, a VM faz a transição imediatamente para desligar e uma mensagem "Desligar" é exibida. Se o sistema estiver em execução e desligar inesperadamente, o console serial poderá mostrar um desligamento ordenado que termina com uma mensagem "Power down". Veja as capturas de tela a seguir como exemplo:

    Captura de tela da mensagem 'Iniciando o serviço de auditoria de segurança' no console serial.

    Captura de tela da mensagem 'Desligar' no console serial.

  • Monte o disco do sistema operacional usando comandos az vm repair, uma VM de recuperação manual ou o modo de usuário único. Em seguida, examine a utilização do disco usando a df ferramenta de linha de comando e verifique se o disco que contém o diretório /var/log/audit está próximo de 100% de utilização.

  • Acesse o sistema de arquivos do sistema operacional usando comandos az vm repair, uma VM de recuperação manual ou modo de usuário único e verifique se o arquivo /etc/audit/auditd.conf contém as seguintes configurações:

    [root@linux /]# grep action /etc/audit/auditd.conf
    admin_space_left_action = HALT
    disk_full_action = HALT
    disk_error_action = HALT
    

Resolução: desative a configuração HALT temporariamente

Observação

Se essa resolução não funcionar ou não for apropriada para seu ambiente, vá para a seção Resolução .

Se a configuração auditd causar o desligamento do sistema em caso de falhas no log de auditoria, desabilitar temporariamente a configuração HALT permitirá que a VM inicialize no sistema operacional completo para remediação.

Para corrigir esse problema auditado comum e vários outros problemas comuns, execute a extensão az vm repair automaticamente no CLI do Azure usando a ação auditd na ferramenta Azure Linux Automatic Repair (ALAR). Para fazer o mesmo procedimento manualmente, siga estas etapas:

  1. Faça um instantâneo do disco do sistema operacional para fornecer um estado de recuperação.

  2. Obtenha acesso ao arquivo de configuração usando comandos az vm repair, uma VM de recuperação manual ou modo monousuário.

  3. Anote a configuração atual, pois pode não haver espaço disponível para fazer backup do arquivo na VM.

  4. Altere as configurações anteriores no arquivo /etc/audit/auditd.conf de HALT para qualquer outro valor válido, exceto SINGLE. Nesse cenário, os valores podem ser IGNORE, SUSPENDou quaisquer outros valores listados na página do Linux man para o arquivo auditd.conf , que fornece os parâmetros apropriados para as versões de software usadas na VM.

    [root@linux /]# grep action /etc/audit/auditd.conf
    admin_space_left_action = SUSPEND
    disk_full_action = SUSPEND
    disk_error_action = SUSPEND
    
  • Se você estiver usando uma VM de recuperação, siga as instruções em Desmontar e desanexar o disco rígido virtual original para trocar o disco do sistema operacional de volta para a VM problemática e tente inicializar a VM normalmente. Se você estiver usando o modo de usuário único, saia e a VM será reinicializada.

  • Depois que a VM estiver totalmente inicializada, navegue pelo sistema de arquivos e libere algum espaço usando ferramentas de linha de comando, como df e du. Cerca de 10% do sistema de arquivos contendo o diretório /var/log/audit deve ser um bom destino inicial.

Depois que o problema for resolvido, reverta o conteúdo do arquivo /etc/audit/auditd.conf para seus valores originais e reinicialize a VM.

Cenário 2: o disco da VM é redimensionado em Azure, mas o sistema operacional não pode ser redimensionado e a VM não inicializa totalmente

Depois que um disco completo é identificado e a VM é desligada para redimensionar o disco do sistema operacional, a VM pode não ser inicializada com êxito. Esse cenário pode ser confuso em algumas distribuições em que o sistema operacional tenta redimensionar automaticamente o sistema de arquivos raiz (/) na reinicialização. Se o disco estiver cheio, a operação de redimensionamento poderá falhar porque o processo requer algum espaço livre para expandir o sistema de arquivos. Não ter espaço livre pode fazer com que o cloud-init falhe e, em seguida, a VM não conclua a inicialização.

Para identificar esse problema, revise os logs de inicialização no console serial e verifique se as linhas que se assemelham ao seguinte texto estão presentes:

[   15.384699] cloud-init[1142]: OSError: [Errno 28] No space left on device
[   15.384742] cloud-init[1142]: Original exception was:
[   15.384784] cloud-init[1142]: OSError: [Errno 28] No space left on device

Como as mensagens específicas do cloud-init podem não ser as mais visíveis quando retornadas, procure por outras linhas contendo o texto "[Errno 28] No space left on device" ou mensagens semelhantes que indiquem "sem espaço disponível".

Para resolver esse problema, limpe os dados desnecessários para liberar uma pequena quantidade de espaço em disco e expanda o sistema de arquivos.

Cenário 3: a VM é inicializada, mas fica inacessível devido a falhas de serviço

Uma VM que parece inicializar completamente pode ter os seguintes problemas:

  • Problemas de serviço ocorrem durante a inicialização.
  • O agente de Azure pode não aparecer disponível.
  • As conexões com a VM podem falhar.
  • A VM pode parecer estar offline de acordo com os aplicativos.

Durante a inicialização, várias mensagens como "[Errno 28] Não há mais espaço no dispositivo" ou outros tipos de mensagens indicam que o sistema de arquivos raiz está cheio.

Se uma VM for inicializada, mas parecer indisponível, verifique o log serial no diagnóstico de inicialização para exibir as mensagens de inicialização ou use o console serial para interagir com a VM. Se o espaço for insuficiente, limpe os dados desnecessários para liberar espaço ou expandir os discos.

Se o log do console contiver muitas mensagens informando "ERROR ExtHandler /proc/net/route não contém rotas", um disco completo do sistema operacional também poderá ser a causa, pois os serviços de rede não podem ser iniciados completamente.

Resolução

As resoluções a seguir se aplicam a qualquer um dos cenários anteriores.

Resolução 1: Limpar dados desnecessários

  1. Obtenha acesso ao disco e às partições do sistema operacional usando comandos az vm repair, uma VM de recuperação manual ou o modo de usuário único, pois o sistema não inicializa normalmente.

  2. Identifique arquivos e diretórios grandes usando ferramentas e comandos padrão do Linux:

    • du -ks /* | sort -n - Localize os arquivos ou diretórios que consomem mais espaço em um local. Repita no maior diretório relatado até que alguns dados grandes sejam descobertos.

    • ls -altSr /var/log - Liste o conteúdo de um diretório, ordenado por tamanho, em ordem crescente.

    • find / -size +500M -exec ls -alFh {} \; - Encontre arquivos individuais grandes. Ajuste o valor de 500M para vários megabytes ou gigabytes conforme necessário para localizar os arquivos mais apropriados para remoção.

  3. Remova todos os arquivos que possam ser identificados como desnecessários, como logs antigos, backups esquecidos e arquivos semelhantes.

  4. Depois que uma quantidade adequada de espaço for liberada, tenha como objetivo manter cerca de 10% do disco livre e reinicie o sistema.

Resolução 2: expanda o sistema de arquivos do sistema operacional

Se nenhum dado puder ser limpo do sistema de arquivos do sistema operacional, recomendamos expandir o disco que contém os volumes críticos do sistema operacional. Para obter mais informações, consulte Expandir discos rígidos virtuais em uma VM do Linux.

Próximas etapas

Caso o erro de inicialização específico não seja um problema de inicialização do Linux devido a um disco do sistema operacional cheio, consulte Solução de problemas de erros de inicialização de máquina virtual do Azure Linux para obter mais soluções de problemas.