Condividi tramite


Risolvi i problemi di avvio della VM Linux dovuti a errori fstab

Si applica a: ✔️ macchine virtuali di Linux

Nota

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 file system 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 illustra più condizioni in cui una configurazione fstab errata può causare problemi di avvio e fornisce indicazioni sulla risoluzione dei problemi.

Ecco alcuni motivi comuni che possono causare problemi di avvio delle macchine virtuali a causa di errori di configurazione fstab:

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

Identifica i problemi di fstab

Controllare lo stato di avvio corrente della macchina virtuale nel log seriale nel pannello Diagnostica di avvio 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)

Nota

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

Risoluzione

È possibile risolvere questo problema in due modi:

Riparare la macchina virtuale online

Usa la console seriale

  1. Connettersi alla console seriale della macchina virtuale 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 usato e all'accesso all'account radice. Seguire 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. Dopo l'avvio della macchina virtuale 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. È consigliabile esaminare 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. È consigliabile impostare come commento le righe fstab che non si è certi di rimuovere le righe.

    • Montare i dischi dati nelle macchine virtuali di Azure usando l'UUID della partizione del file system. Per determinare l'UUID del file system, eseguire il blkid comando . Per ulteriori informazioni sulla sintassi, eseguire il comando man blkid. Esempio della 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. Dopo aver verificato la sintassi e le voci, riavviare la macchina virtuale usando 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.

    Nota

    È anche possibile usare il ctrl+x comando che riavvierà anche la macchina virtuale.

Ripara la VM offline

Se l'accesso alla console seriale della macchina virtuale non è disponibile, un'alternativa consiste nel ripristinare la macchina virtuale offline. Esistono due modi per adottare un approccio offline:

Utilizzare la riparazione automatica Linux di Azure (ALAR)

Gli script di ripristino automatico di Azure Linux (ALAR) fanno parte dell'estensione di ripristino della macchina virtuale descritta in Usare il ripristino automatico di Linux di Azure (ALAR) per correggere una macchina virtuale Linux. ALAR illustra l'automazione di più scenari di ripristino, inclusi /etc/fstab i problemi.

Gli script ALAR usano l'estensione repair-button di ripristino per risolvere i problemi fstab specificando --button-command fstab. Questo parametro attiva il ripristino automatico. Implementare i passaggi seguenti per automatizzare gli errori fstab tramite l'approccio ALAR offline:

az vm repair repair-button --button-command fstab --verbose rgtest --name vmtest

Nota

  • Sostituire di conseguenza il nome rgtest del gruppo di risorse e il nome vmtest della macchina virtuale.
  • Lo script della macchina virtuale di ripristino, insieme allo script ALAR, creerà temporaneamente un gruppo di risorse, una macchina virtuale di ripristino e una copia del disco del sistema operativo della macchina virtuale interessata. Esegue il backup del file /etc/fstab originale e lo modifica rimuovendo o commentando le voci del file system di dati che non sono necessarie per avviare il sistema.
  • Dopo l'avvio del sistema operativo, esaminare e modificare il file /etc/fstab per correggere eventuali errori che potrebbero aver impedito un riavvio corretto. Infine, lo repair-button script eliminerà automaticamente il gruppo di risorse contenente la macchina virtuale di ripristino.

Usare il metodo manuale

Se la console seriale e gli approcci ALAR non sono possibili o non riescono, è necessario eseguire manualmente il ripristino. 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. Implementare quindi i passaggi per la risoluzione dei problemi 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.