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:
- Ripristinare la macchina virtuale online
- Ripristinare la macchina virtuale offline
Ripara la VM online
Usa la console seriale
- Connettersi alla console seriale della VM dal portale di Azure.
- 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
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
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 comandoman 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 comandoman 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'opzionenofail
aiuta a garantire che la macchina virtuale venga avviata anche se il file system è danneggiato o se non esiste all'avvio.
Salva le modifiche nel file fstab.
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.Una volta verificate la sintassi e le voci, riavviare la macchina virtuale utilizzando il comando seguente.
reboot -f
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:
- Collegare il disco del sistema operativo a una macchina virtuale di ripristino utilizzando il portale di Azure
- Collegare il disco del sistema operativo a una macchina virtuale di ripristino utilizzando l'interfaccia della riga di comando di Azure
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.