Risolvere i problemi di avvio delle macchine virtuali Linux di Azure a causa del disco del sistema operativo completo
Si applica a: ✔️ macchine virtuali Linux
In determinate circostanze e configurazioni, un disco del sistema operativo completo potrebbe causare problemi di avvio delle macchine virtuali Linux di Azure. Questo articolo fornisce alcune cause e soluzioni per i problemi di avvio.
Sintomi
Durante le normali operazioni di sistema, se il disco del sistema operativo o le partizioni di sistema critiche diventano complete, potrebbero verificarsi i problemi seguenti:
- Una macchina virtuale viene arrestata in modo imprevisto.
- Una macchina virtuale non viene avviata correttamente.
Prerequisiti
Per risolvere i problemi di avvio e per completare le riparazioni del sistema, è necessario soddisfare i requisiti seguenti:
Autorizzazioni per creare uno snapshot del disco o usare alcuni strumenti di backup e ripristino.
In questo articolo i dati o i dischi vengono modificati, quindi la possibilità di ripristinare lo stato precedente della macchina virtuale è un componente fondamentale dell'amministrazione sicura del sistema.
Diagnostica di avvio abilitata e configurata.
La presenza di questa configurazione consente di esaminare in futuro l'archiviazione del log della console e l'interazione con l'interfaccia della console seriale della macchina virtuale.
Autorizzazioni per creare una macchina virtuale nel caso in cui sia necessaria una macchina virtuale di ripristino in qualsiasi momento.
Autorizzazioni per creare, scollegare e collegare dischi nel caso in cui sia necessario lo scambio dei dischi.
Note
Non tutti i requisiti si applicano agli scenari seguenti.
Scenario 1: la macchina virtuale si arresta in modo imprevisto e non riesce ad avviarsi
Molte procedure di protezione avanzata possono causare difficoltà nella gestione dei sistemi. Se si verifica un errore durante la scrittura nel log di controllo, una configurazione comune richiede che il sistema venga arrestato immediatamente. Per verificare se questo scenario è il motivo di un arresto del sistema, eseguire le azioni seguenti:
Controllare i messaggi di arresto del sistema nel log della console seriale.
Se il sistema viene avviato, un "Avvio del servizio di controllo della sicurezza..." viene visualizzato il messaggio. Questo messaggio non indica che il servizio è stato avviato. Al contrario, la macchina virtuale passa immediatamente all'arresto e viene visualizzato un messaggio di risparmio di energia. Se il sistema è in esecuzione e si arresta in modo imprevisto, la console seriale potrebbe visualizzare un processo di arresto ordinato che termina con un messaggio di disattivazione. Vedere gli screenshot seguenti come esempio:
Montare il disco del sistema operativo usando i comandi az vm repair, una macchina virtuale di ripristino manuale o la modalità utente singolo. Esaminare quindi l'utilizzo del disco usando lo strumento da
df
riga di comando e verificare se il disco contenente la directory /var/log/audit è quasi del 100%.Accedere al file system del sistema operativo usando i comandi az vm repair, una macchina virtuale di ripristino manuale o la modalità utente singolo e verificare se il file /etc/audit/auditd.conf contiene le configurazioni seguenti:
[root@linux /]# grep action /etc/audit/auditd.conf admin_space_left_action = HALT disk_full_action = HALT disk_error_action = HALT
Risoluzione: disabilitare temporaneamente la configurazione HALT
Note
Se questa risoluzione non funziona o non è appropriata per l'ambiente in uso, passare alla sezione Risoluzione .
Se la configurazione auditd causa l'arresto del sistema in caso di errori del log di controllo, la disabilitazione HALT
temporanea della configurazione consente alla macchina virtuale di avviare il sistema operativo completo per la correzione.
Per risolvere questo problema comune controllato e molti altri problemi comuni, eseguire automaticamente l'estensione az vm repair
nell'interfaccia della riga di comando di Azure usando l'azione controllato nello strumento Ripristino automatico Linux di Azure (ALAR). Per eseguire manualmente la stessa procedura, seguire questa procedura:
Creare uno snapshot del disco del sistema operativo per fornire uno stato di ripristino.
Ottenere l'accesso al file di configurazione usando i comandi az vm repair, una macchina virtuale di ripristino manuale o la modalità utente singolo.
Prendere nota della configurazione corrente, perché lo spazio potrebbe non essere disponibile per eseguire il backup del file nella macchina virtuale.
Modificare le configurazioni precedenti nel file /etc/audit/auditd.conf da
HALT
a qualsiasi altro valore valido ad eccezioneSINGLE
di . In questo scenario, i valori possono essereIGNORE
,SUSPEND
o qualsiasi altro valore elencato nella pagina Linuxman
per il file auditd.conf , che fornisce i parametri appropriati per le versioni del software usate nella macchina virtuale.[root@linux /]# grep action /etc/audit/auditd.conf admin_space_left_action = SUSPEND disk_full_action = SUSPEND disk_error_action = SUSPEND
Se si usa una macchina virtuale di ripristino, seguire le istruzioni riportate in Smontare e scollegare il disco rigido virtuale originale per riconvertire il disco del sistema operativo nella macchina virtuale problematica e provare a eseguire normalmente l'avvio della macchina virtuale. Se si usa la modalità utente singolo, uscire e quindi riavviare la macchina virtuale.
Dopo aver avviato completamente la macchina virtuale, esplorare il file system e liberare spazio usando strumenti da riga di comando come
df
edu
. Circa il 10% del file system contenente la directory /var/log/audit deve essere una destinazione iniziale ottimale.
Dopo aver risolto il problema, ripristinare il contenuto nel file /etc/audit/auditd.conf sui valori originali e riavviare la macchina virtuale.
Scenario 2: il disco della macchina virtuale viene ridimensionato in Azure, ma il sistema operativo non può essere ridimensionato e la macchina virtuale non viene avviata completamente
Dopo che è stato identificato un disco completo e la macchina virtuale è stata arrestata per ridimensionare il disco del sistema operativo, la macchina virtuale potrebbe non essere stata avviata correttamente. Questo scenario potrebbe generare confusione in alcune distribuzioni in cui il sistema operativo tenta di ridimensionare automaticamente il file system radice (/
) al riavvio. Se il disco è pieno, l'operazione di ridimensionamento potrebbe non riuscire perché il processo richiede spazio libero per espandere il file system. L'assenza di spazio disponibile può causare un errore di cloud-init e la macchina virtuale non termina l'avvio.
Per identificare questo problema, esaminare i log di avvio nella console seriale e verificare se sono presenti righe simili al testo seguente:
[ 15.384699] cloud-init[1142]: OSError: [Errno 28] No space left on device
[ 15.384742] cloud-init[1142]: Original exception was:
[ 15.384784] cloud-init[1142]: OSError: [Errno 28] No space left on device
Poiché i messaggi cloud-init specifici potrebbero non essere il messaggio più visibile restituito, cercare altre righe contenenti il testo "[Errno 28] Nessuna spazio lasciato nel dispositivo" o messaggi simili "senza spazio".
Per risolvere questo problema, cancellare i dati non necessario per liberare una piccola quantità di spazio su disco e quindi espandere il file system.
Scenario 3: l'avvio della macchina virtuale è inaccessibile a causa di errori del servizio
Una macchina virtuale che sembra avviarsi completamente potrebbe avere i problemi seguenti:
- Si verificano problemi di servizio durante l'avvio.
- L'agente di Azure potrebbe non essere disponibile.
- Le connessioni alla macchina virtuale potrebbero non riuscire.
- La macchina virtuale potrebbe sembrare offline in base alle applicazioni.
Durante l'avvio, più messaggi, ad esempio "[Errno 28] Nessun spazio lasciato nel dispositivo" o altri tipi di messaggi indicano che il file system radice è pieno.
Se una macchina virtuale viene avviata ma non è disponibile, controllare il log seriale all'interno della diagnostica di avvio per visualizzare i messaggi di avvio o usare la console seriale per interagire con la macchina virtuale. Se lo spazio non è sufficiente, cancellare i dati non necessario per liberare spazio o espandere i dischi.
Se il log della console contiene molti messaggi che indicano "ERROR ExtHandler /proc/net/route non contiene route", un disco del sistema operativo completo potrebbe anche essere la causa, perché i servizi di rete non sono in grado di avviarsi completamente.
Risoluzione
Le risoluzioni seguenti si applicano a uno degli scenari precedenti.
Risoluzione 1: Cancellare i dati non superflui
Ottenere l'accesso al disco del sistema operativo e alle partizioni usando i comandi az vm repair, una macchina virtuale di ripristino manuale o la modalità utente singolo, perché il sistema non viene avviato normalmente.
Identificare file e directory di grandi dimensioni usando gli strumenti e i comandi Standard di Linux:
du -ks /* | sort -n
- Individuare i file o le directory che utilizzano più spazio in un percorso. Ripetere la procedura nella directory segnalata più grande fino a quando non vengono rilevati dati di grandi dimensioni.ls -altSr /var/log
- Elencare il contenuto di una directory, ordinato in base alle dimensioni, in ordine crescente.find / -size +500M -exec ls -alFh {} \;
- Trovare singoli file di grandi dimensioni. Regolare il500M
valore su diversi megabyte o gigabyte in base alle esigenze per individuare i file più efficaci da eliminare.
Rimuovere tutti i file che possono essere identificati come non necessari, ad esempio i log precedenti, i backup dimenticati e file simili.
Una volta cancellata una quantità di spazio appropriata, impostare come destinazione circa il disco libero del 10% e riavviare il sistema.
Risoluzione 2: Espandere il file system del sistema operativo
Se non è possibile cancellare dati dal file system del sistema operativo, è consigliabile espandere il disco contenente i volumi critici del sistema operativo. Per altre informazioni, vedere Espandere i dischi rigidi virtuali in una macchina virtuale Linux.
Passaggi successivi
Nel caso in cui l'errore di avvio specifico non sia un problema di avvio linux dovuto a un disco del sistema operativo completo, vedere Risolvere gli errori di avvio delle macchine virtuali Linux di Azure per altre operazioni di risoluzione dei problemi.
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.