Condividi tramite


Risolvere i problemi di avvio delle VM Linux causati da errori fstab

Si applica a: ✔️ macchine virtuali di Linux

Note

CentOS a cui si fa riferimento in questo articolo è una distribuzione Linux e raggiungerà End Of Life (EOL). Valutare le proprie esigenze e pianificare di conseguenza. Per altre informazioni, vedere Indicazioni sulla fine della vita di CentOS.

La tabella del filesystem di Linux, fstab, è una tabella di configurazione progettata per configurare le regole in cui vengono rilevati e montati file system specifici in modo ordinato durante il processo di avvio del sistema. Questo articolo descrive più condizioni in cui una configurazione fstab errata può comportare problemi di avvio e fornisce indicazioni per la risoluzione dei problemi.

Di seguito sono elencati alcuni motivi comuni che possono portare a problemi di avvio della macchina virtuale a causa di una configurazione errata di fstab:

  • Al posto dell'identificatore univoco universale (UUID) del file system, viene utilizzato il nome del file system tradizionale.
  • Viene utilizzato un UUID errato.
  • All'interno della configurazione fstab, esiste una voce per un dispositivo non collegato senza l'opzione nofail.
  • Voce errata all'interno della configurazione di fstab.

Identifica i problemi di fstab

Controllare lo stato di avvio corrente della macchina virtuale nel log seriale all'interno del pannello [Diagnostica di avvio] (/azure/virtual-machines/boot-diagnostics#boot-diagnostics-view) nel portale di Azure. La macchina virtuale sarà in modalità di emergenza. Vengono visualizzate voci di registro simili all'esempio seguente che porta allo stato della modalità di emergenza:

[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)

Note

"/data" è un esempio di punto di montaggio utilizzato. L'errore di dipendenza per il punto di montaggio del file system sarà diverso in base ai nomi utilizzati.

Risoluzione

Ci sono 2 modi per risolvere il problema:

Ripara la VM online

Usa la console seriale

  1. Connettersi alla console seriale della VM dal portale di Azure.
  2. Per riconfigurare fstab è necessario l'accesso manuale alla modalità utente singolo. I passaggi possono variare in base al tipo di sistema operativo Linux in uso e all'accesso all'account radice. Segui la documentazione relativa alla modalità utente singolo per accedere alla modalità utente singolo per ogni immagine partner Linux supportata.
Passaggi per la risoluzione dei problemi di Fstab
  1. Una volta che la macchina virtuale è stata avviata in modalità utente singolo. Usa il tuo editor di testo preferito per aprire il file fstab.

    vi /etc/fstab
    
  2. Verificare i file system elencati in /etc/fstab. Ogni riga nel file fstab indica un filesystem che viene montato all'avvio della VM. Per ulteriori informazioni sulla sintassi del file fstab, eseguire il comando man fstab. Per risolvere un errore di avvio, verificare la voce del file system che non è riuscito ad essere montato. È buona norma rivedere ogni riga per assicurarsi che sia corretta sia nella struttura che nel contenuto. Alcuni punti da considerare per amministrare correttamente un file fstab sono i seguenti:

    • I campi su ogni riga sono separati da tabulazioni o spazi. Le righe vuote vengono ignorate. Le righe che hanno un cancelletto (#) come primo carattere sono commenti. Le righe commentate possono rimanere nel file fstab, ma non verranno elaborate. Ti consigliamo di commentare le righe fstab di cui non sei sicuro invece di rimuovere le righe.

    • Montare i dischi dati nelle macchine virtuali di Azure utilizzando l'UUID della partizione del file system. Per determinare l'UUID del file system, eseguire il comando blkid. Per ulteriori informazioni sulla sintassi, eseguire il comando man blkid. Esempio di voce UUID nel file fstab:

      UUID=<UUID number here>  /data      xfs    defaults,nofail 0  0
      
    • Utilizzare l'opzione nofail nelle voci del file system (dischi dati) per consentire all'avvio di continuare anche dopo che si sono verificati errori nelle partizioni per le voci corrispondenti. L'opzione nofail aiuta a garantire che la macchina virtuale venga avviata anche se il file system è danneggiato o se non esiste all'avvio.

  3. Salva le modifiche nel file fstab.

  4. Utilizzare mount -a come best practice dopo aver apportato modifiche alle voci fstab. Ciò eseguirà nuovamente la configurazione di fstab e notificherà agli utenti eventuali errori di sintassi o di immissione esistenti.

  5. Una volta verificate la sintassi e le voci, riavviare la macchina virtuale utilizzando il comando seguente.

    reboot -f
    
  6. Se le voci del commento o della correzione hanno avuto esito positivo, il sistema dovrebbe raggiungere un prompt Bash nel portale. Controlla se puoi connetterti alla VM.

Note

Per riavviare la macchina virtuale, è possibile anche utilizzare il comando "Ctrl + x".

Ripara la VM offline

Se l'accesso alla console seriale della VM non è disponibile, una soluzione alternativa consiste nel riparare la VM offline. Esistono due modi per adottare un approccio offline:

Usare Azure Linux Auto Repair (ALAR)

Gli script di Azure Linux Auto Repair (ALAR) fanno parte dell'estensione per la riparazione di macchine virtuali descritta in Riparare una macchina virtuale Linux usando i comandi di riparazione di macchine virtuali di Azure. ALAR copre l'automazione di più scenari di riparazione, inclusi i problemi /etc/fstab.

Gli script ALAR utilizzano il comando Ripara estensione run e la relativa opzione --run-id. Lo script-id per il ripristino automatico è: linux-alar2. Implementa i seguenti passaggi per automatizzare gli errori fstab tramite l'approccio 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

Note

Il nome del gruppo di risorse "centos7, vm name "cent7" e --copy-disk-name "repairdiskcopy" sono esempi e i valori devono essere modificati di conseguenza.

Lo script di riparazione fstab eseguirà un backup del file originale e rimuoverà tutte le righe nel file /etc/fstab che non sono necessarie per avviare un sistema. Dopo aver avviato correttamente il sistema operativo, modificare nuovamente fstab e correggere eventuali errori che non hanno consentito il riavvio del sistema in precedenza.

In alternativa, una volta creata una riparazione della macchina virtuale, le modifiche possono essere implementate anche accedendo manualmente a tale riparazione, montando la copia allegata del disco del sistema operativo e apportando modifiche al relativo file fstab. Seguire i passaggi seguenti:

  • Creare una macchina virtuale di riparazione utilizzando il comando az vm repair create.
  • Per montare e eseguire il chroot sui file system del disco del sistema operativo collegato a una macchina virtuale di ripristino, seguire le istruzioni per eseguire chroot dettagliate
  • Successivamente, segui gli stessi passaggi per la risoluzione dei problemi relativi a fstab descritti sopra.
  • Una volta applicate le modifiche, è possibile utilizzare il comando az vm repair restore per eseguire lo swapping automatico del disco del sistema operativo con la macchina virtuale originale.

Usa il metodo manuale

Se sia la console seriale che l'approccio ALAR non sono possibili oppure non riescono, la riparazione deve essere eseguita manualmente. Segui i passaggi qui per collegare manualmente il disco del sistema operativo a una VM di ripristino e scambiare il disco del sistema operativo con la VM originale:

Una volta collegato correttamente il disco del sistema operativo alla macchina virtuale di ripristino, seguire le istruzioni per eseguire il chroot dettagliate per montare ed eseguire il chroot sui file system del disco del sistema operativo collegato. Quindi, implementa i passaggi per la risoluzione dei problemi relativi a fstab per apportare le modifiche appropriate al file fstab del disco del sistema operativo problematico.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.