Risolvere i problemi di avvio delle macchine virtuali Linux a causa di 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 per la risoluzione dei problemi.

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

  • Il nome del file system tradizionale viene usato anziché l'UUID (Universally Unique Identifier) del file system.
  • Viene usato un UUID non corretto.
  • Esiste una voce per un dispositivo scollegato senza nofail opzione all'interno della configurazione fstab.
  • Voce non corretta all'interno della configurazione fstab.

Identificare 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 log simili all'esempio seguente che portano allo stato 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 usati.

Risoluzione

Esistono due modi per risolvere il problema:

Ripristinare la macchina virtuale online

Usare la console seriale

  1. Connettersi alla console seriale della macchina virtuale da 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. Seguire la documentazione sulla modalità utente singolo per accedere alla modalità utente singolo per ogni immagine partner Linux supportata.
Passaggi per la risoluzione dei problemi fstab
  1. Dopo l'avvio della macchina virtuale in modalità utente singolo. Usare l'editor di testo preferito per aprire il file fstab.

    vi /etc/fstab
    
  2. Esaminare i file system elencati in /etc/fstab. Ogni riga nel file fstab indica un file system montato all'avvio della macchina virtuale. Per altre informazioni sulla sintassi del file fstab, eseguire il man fstab comando . Per risolvere un errore di avvio, esaminare la voce relativa al file system che non è riuscito a montare. È 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 di ogni riga sono separati da tabulazioni o spazi. Le righe vuote vengono ignorate. Le righe con segno di numero (#) 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 altre informazioni sulla sintassi, eseguire il man blkid comando . Esempio di voce UUID nel file fstab:

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

  3. Salvare le modifiche apportate al file fstab.

  4. Usare mount -a come procedura consigliata dopo aver apportato modifiche alle voci fstab. Verrà rieseguita la configurazione fstab e verrà visualizzata una notifica agli utenti di eventuali errori di sintassi o immissione esistenti.

  5. Dopo aver verificato la sintassi e le voci, riavviare la macchina virtuale usando il comando seguente.

    reboot -f
    
  6. Se il commento o la correzione delle voci ha avuto esito positivo, il sistema dovrebbe raggiungere un prompt bash nel portale. Controllare se è possibile connettersi alla macchina virtuale.

Nota

È anche possibile usare il comando "CTRL+X" che riavvia anche la macchina virtuale.

Riparare la macchina virtuale in modalità offline

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

Usare il ripristino automatico di Linux di Azure (ALAR)

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

Gli script ALAR usano il comando di estensione run di ripristino e la relativa --run-id opzione. L'ID script per il ripristino automatico è linux-alar2. Implementare i passaggi seguenti 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

Nota

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

Lo script di ripristino 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 l'avvio corretto del sistema operativo, modificare nuovamente il file fstab e correggere eventuali errori che non consentissero un riavvio del sistema prima.

In alternativa, dopo aver creato una macchina virtuale di ripristino, le modifiche possono essere implementate anche accedendo manualmente alla macchina virtuale di ripristino, montando la copia collegata del disco del sistema operativo e apportando modifiche al file fstab. Seguire questa procedura:

  • Creare una macchina virtuale di ripristino usando il az vm repair create comando .
  • Per montare e chroot nei file system del disco del sistema operativo collegato in una macchina virtuale di ripristino, seguire le istruzioni dettagliate chroot.
  • Seguire quindi gli stessi passaggi per la risoluzione dei problemi fstab descritti in precedenza.
  • Dopo aver applicato le modifiche, az vm repair restore è possibile usare il comando per eseguire lo scambio automatico del disco del sistema operativo con la macchina virtuale originale.

Use Manual, metodo

Se la console seriale e l'approccio ALAR non sono possibili o hanno esito negativo, il ripristino deve essere eseguito manualmente. Seguire questa procedura per collegare manualmente il disco del sistema operativo a una macchina virtuale di ripristino e ripristinare il disco del sistema operativo nella macchina virtuale originale:

Dopo aver collegato correttamente il disco del sistema operativo alla macchina virtuale di ripristino, seguire le istruzioni chroot dettagliate per montare e chroot nei 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.