Compartilhar via


Solucionar problemas de inicialização de VM do Linux devido a erros de fstab

Aplica-se a: ✔️ VMs do Linux

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.

A tabela do sistema de arquivos Linux, fstab, é uma tabela de configuração projetada para configurar regras em que sistemas de arquivos específicos são detectados e montados de maneira ordenada durante o processo de inicialização do sistema. Este artigo discute várias condições em que uma configuração incorreta do fstab pode levar a um problema de inicialização e fornece diretrizes de solução de problemas.

Alguns motivos comuns que podem levar a problemas de inicialização da máquina virtual devido à configuração incorreta do fstab estão listados abaixo:

  • O nome do sistema de arquivos tradicional é usado em vez do UUID (Identificador Universal Exclusivo) do sistema de arquivos.
  • Um UUID incorreto é usado.
  • Existe uma entrada para um dispositivo não conectado sem nofail opção na configuração fstab.
  • Entrada incorreta na configuração do fstab.

Identificar problemas de fstab

Verifique o estado de inicialização atual da VM no log serial na folha [Diagnóstico de inicialização] (/azure/virtual-machines/boot-diagnostics#boot-diagnostics-view) no portal do Azure. A VM estará em modo de emergência. Você verá entradas de log semelhantes ao exemplo a seguir que levam ao estado do Modo de Emergência:

[K[[1;31m TIME [0m] Timed out waiting for device dev-incorrect.device.
[[1;33mDEPEND[0m] Dependency failed for /data.
[[1;33mDEPEND[0m] Dependency failed for Local File Systems.
…
Welcome to emergency mode! After logging in, type "journalctl -xb" to viewsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again to boot into default mode.
Give root password for maintenance
(or type Control-D to continue)

Observação

"/data" é um exemplo de ponto de montagem usado. A falha de dependência para o ponto de montagem do sistema de arquivos será diferente com base nos nomes usados.

Resolução

Existem 2 maneiras de resolver o problema:

Reparar a VM Online

Usar o console serial

  1. Conecte-se ao console serial da VM do portal do Azure.
  2. O acesso manual ao modo de usuário único é necessário para reconfigurar o fstab. As etapas podem variar de acordo com o tipo de sistema operacional Linux em uso e o acesso à conta root. Siga a documentação do modo de usuário único para acessar o modo de usuário único para cada imagem de parceiro Linux compatível.
Etapas de solução de problemas do Fstab
  1. Depois que a VM for inicializada no modo de usuário único. Use seu editor de texto favorito para abrir o arquivo fstab.

    vi /etc/fstab
    
  2. Revise os sistemas de arquivos listados no /etc/fstab. Cada linha no arquivo fstab indica um sistema de arquivos que é montado quando a VM é iniciada. Para obter mais informações sobre a sintaxe do arquivo fstab, execute o man fstab comando. Para solucionar problemas de uma falha de inicialização, revise a entrada do sistema de arquivos que falhou ao montar. É uma boa prática revisar cada linha para garantir que ela esteja correta tanto na estrutura quanto no conteúdo. Alguns pontos a serem considerados para administrar corretamente um arquivo fstab são os seguintes:

    • Os campos em cada linha são separados por tabulações ou espaços. Linhas em branco são ignoradas. As linhas que têm um sinal numérico (#) como primeiro caractere são comentários. As linhas comentadas podem permanecer no arquivo fstab, mas não serão processadas. Recomendamos que você comente as linhas do fstab sobre as quais não tem certeza, em vez de remover as linhas.

    • Monte os discos de dados em VMs do Azure usando o UUID da partição do sistema de arquivos. Para determinar o UUID do sistema de arquivos, execute o blkid comando. Para obter mais informações sobre a sintaxe, execute o man blkid comando. Exemplo de entrada UUID no arquivo fstab:

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • Use a nofail opção nas entradas do sistema de arquivos (discos de dados) para permitir que a inicialização continue mesmo após a ocorrência de erros nas partições para as entradas correspondentes. A nofail opção ajuda a garantir que a VM seja iniciada mesmo que o sistema de arquivos esteja corrompido ou se não existir na inicialização.

  3. Salve as alterações no arquivo fstab.

  4. Use mount -a como prática recomendada depois de fazer alterações nas entradas fstab. Isso executará novamente a configuração do fstab e notificará os usuários sobre qualquer sintaxe existente ou erros de entrada.

  5. Depois que a sintaxe e as entradas forem verificadas, reinicie a vm usando o comando abaixo.

    reboot -f
    
  6. Se o comentário ou correção de entradas for bem-sucedido, o sistema deverá acessar um prompt bash no portal. Verifique se você pode se conectar à VM.

Observação

Você também pode usar o comando "ctrl+x" que também reinicializaria a vm.

Repare a VM offline

Se o acesso ao console serial da VM não estiver disponível, uma solução alternativa será reparar a VM offline. Existem duas maneiras de adotar uma abordagem offline:

Usar o ALAR (Reparo Automático do Linux no Azure)

Os scripts do ALAR (Reparo Automático do Linux no Azure) fazem parte da extensão de reparo de VM descrita em Reparar uma VM do Linux usando os comandos de reparo da Máquina Virtual do Azure. O ALAR abrange a automação de vários cenários de reparo, incluindo /etc/fstab problemas.

Os scripts ALAR usam o comando repair extension run e sua --run-id opção. O script-id para a recuperação automatizada é: linux-alar2. Implemente as seguintes etapas para automatizar erros de fstab por meio da abordagem ALAR offline:

az vm repair create --verbose -g centos7 -n cent7 --repair-username rescue --repair-password 'password!234' --copy-disk-name  repairdiskcopy
az vm repair run --verbose -g centos7 -n cent7 --run-id linux-alar2 --parameters fstab --run-on-repair
az vm repair restore --verbose -g centos7 -n cent7

Observação

O nome do grupo de recursos "centos7", o nome da vm "cent7" e --copy-disk-name "repairdiskcopy" são exemplos e os valores precisam ser alterados de acordo.

O script de reparo do fstab fará um backup do arquivo original e removerá todas as linhas no arquivo /etc/fstab que não são necessárias para inicializar um sistema. Após a inicialização bem-sucedida do sistema operacional, edite o fstab novamente e corrija quaisquer erros que não permitissem a reinicialização do sistema antes.

Como alternativa, depois que uma vm de reparo é criada, as alterações também podem ser implementadas fazendo login manualmente na vm de reparo, montando a cópia anexada do disco do sistema operacional e fazendo alterações em seu arquivo fstab. Siga os passos aqui:

  • Crie uma VM de reparo usando o az vm repair create comando.
  • Para montar e fazer chroot nos sistemas de arquivos do disco do sistema operacional anexado em uma VM de recuperação, siga as instruções detalhadas do chroot.
  • Em seguida, siga as mesmas etapas de solução de problemas do fstab acima.
  • Depois que as alterações são aplicadas, az vm repair restore o comando pode ser usado para executar a troca automática de disco do sistema operacional com a VM original.

Use o método manual

Se o console serial e a abordagem ALAR não forem possíveis ou falharem, o reparo deverá ser executado manualmente. Siga as etapas aqui para anexar manualmente o disco do sistema operacional a uma VM de recuperação e trocar o disco do sistema operacional de volta para a VM original:

Depois que o disco do sistema operacional for anexado com êxito à VM de recuperação, siga as instruções detalhadas do chroot para montar e chroot nos sistemas de arquivos do disco do sistema operacional anexado. Em seguida, implemente as etapas de solução de problemas do fstab para fazer as alterações apropriadas no arquivo fstab do disco do sistema operacional problemático.

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.