Individua gli errori di memoria dell'aggiornamento SLES prima di riprovare

Se durante un aggiornamento SLES segnala "Impossibile allocare memoria", verificare innanzitutto se il kernel ha registrato un evento di memoria insufficiente e se la RAM o lo swap sono esauriti. Mettere in pausa un carico di lavoro non essenziale noto o aumentare la memoria assegnata alla VM solo dopo aver verificato la pressione sul sistema, quindi verificare che Zypper e RPM non siano più attivi prima di riprendere la procedura di aggiornamento originale.

Esempio ipotetico: immaginiamo una macchina virtuale SLES 15 in cui un amministratore avvia un aggiornamento pianificato di un pacchetto mentre è in esecuzione un processo batch di grandi dimensioni. Zypper si arresta con un errore di allocazione della memoria. L'esempio seguente è puramente illustrativo e non rappresenta un incidente reale o un test; utilizzare i comandi per raccogliere prove sul proprio host prima di scegliere una soluzione.

Esempio di terminale SLES che mostra i controlli di free, swapon e vmstat con poca memoria disponibile e swap quasi pieno.
Nell'ipotetico caso, confronta la RAM disponibile, lo swap configurato e l'attività di swap in corso prima di procedere con l'aggiornamento.

1. Verifica se il server è ancora in fase di aggiornamento.

Non riavviare il sistema, non terminare i processi dei pacchetti e non avviare un secondo comando di aggiornamento solo perché la sessione SSH ha visualizzato un errore. Riconnettiti in una seconda sessione e verifica la presenza di processi Zypper o RPM attivi:

pgrep -a 'zypper|rpm'

Se un processo di pacchetto è ancora in esecuzione, attendi che termini e controlla il suo output o i log. Non eliminare i file di blocco di Zypper mentre un'operazione di pacchetto potrebbe essere attiva. Se non è in esecuzione alcun processo, conserva il testo esatto dell'errore e annota quando si è verificato; tale timestamp aiuta a correlare i log del kernel e del pacchetto.

2. Confermare o escludere la pressione della memoria

Raccogli un'istantanea della RAM e dello spazio di swap correnti:

free -h
swapon --show
vmstat 1 5
Esempio di terminale SLES con una voce di registro relativa a un errore di memoria insufficiente del kernel e contesto di errore di installazione di Zypper
I record di errore OOM del kernel in prossimità del fallimento di Zypper costituiscono una prova più convincente del solo testo dell'errore; questo log è esemplificativo.

In free -h, controlla la availablecolonna, non solo la quantità contrassegnata free; Linux utilizza anche la RAM per la cache. swapon --showriporta se esiste lo swap e quanto ne viene utilizzato. In vmstat, valori ripetuti diversi da zero sie sonelle righe recenti indicano uno swap attivo; la prima riga è una media dall'avvio, quindi concentrati sulle righe successive.

Quindi cerca un errore di tipo kernel out-of-memory (OOM) in prossimità del punto in cui si è verificato l'errore e leggi il log di Zypper:

sudo journalctl -k -b --since "30 minutes ago" | grep -Ei 'oom|out of memory|killed process'
sudo tail -n 80 /var/log/zypper.log

Un record OOM-kill che menziona RPM, Zypper o un altro processo supporta una diagnosi effettiva di pressione sulla memoria. Una quantità insufficiente di RAM "libera" da sola non è sufficiente: la cache può essere recuperata e il messaggio può anche derivare da un limite di memoria di un processo o di un servizio. Se non viene visualizzata alcuna voce OOM del kernel, verificare i limiti del comando che ha causato l'errore e qualsiasi limite di memoria di systemd o del container prima di aggiungere memoria host. La causa esatta non può essere identificata dalla sola frase "Impossibile allocare memoria".

3. Ridurre la pressione prima di riprovare

Tornare alla macchina virtuale ipotetica. Se il job batch sta consumando memoria e il sistema mostra un'attività di swap prolungata o un kernel OOM kill, utilizzare la procedura di pausa o arresto supportata dall'applicazione. Non terminare un database, un carico di lavoro SAP o altri servizi con stato senza seguire le procedure di arresto previste dall'operatore. Verificare nuovamente la RAM e lo swap dopo aver messo in pausa il carico di lavoro.

Esempio di terminale SLES che verifica un servizio batch di esempio e ordina i processi in base alla memoria residente
Identifica il carico di lavoro utilizzando la memoria prima di chiedere al proprietario di metterlo in pausa; i dati relativi al servizio e al processo sono esempi ipotetici.

Se durante la normale manutenzione la memoria del sistema guest risulta insufficiente, aumentare la RAM assegnata tramite l'hypervisor supportato o il piano di controllo cloud, quindi verificare che il sistema operativo rilevi la nuova quantità. L'aggiunta di swap può fornire un margine temporaneo, ma è più lenta della RAM e non risolve i problemi di memoria persistente. La configurazione dello storage SLES è importante: ad esempio, SUSE documenta vincoli specifici per i file di swap su Btrfs. Evitare di creare o ridimensionare lo swap durante un aggiornamento, a meno che non si siano verificati i requisiti del filesystem, dello snapshot e della piattaforma.

In assenza di record OOM, esaminare invece il limite applicato al processo che ha causato l'errore. Su SLES 15, controllare il limite di memoria configurato per un carico di lavoro gestito da systemd, sostituendo il nome dell'unità di esempio con il servizio interessato:

sudo systemctl show example-batch.service -p MemoryMax

Confronta quel valore con la memoria disponibile. Un limite cgroup non verrà risolto aumentando la RAM della VM a meno che anche il limite non venga aumentato in modo appropriato. Nei service pack meno recenti, verifica il nome della proprietà confrontandolo con la documentazione di systemd di quella versione.

4. Riprendi lo stesso aggiornamento supportato e verificalo

Una volta terminato il processo di creazione del pacchetto, verificare /var/log/zypper.logl'ultima azione completata e l'eventuale presenza di pacchetti non riusciti. Se RPM o Zypper segnalano una transazione incompleta, seguire le istruzioni di ripristino di SUSE specifiche per quell'errore prima di riprovare. Non rimuovere manualmente i file del database dei pacchetti o i blocchi.

Utilizza lo stesso percorso di aggiornamento che hai iniziato inizialmente. La manutenzione ordinaria dei pacchetti e la migrazione di un service pack sono operazioni diverse: la documentazione SUSE zypper patchdescrive come installare le patch rilasciate applicabili, mentre gli aggiornamenti dei service pack e delle versioni principali hanno percorsi e preparazioni specifici. Non passare a questa opzione zypper dupsemplicemente per una soluzione temporanea relativa alla memoria. Per un'esecuzione ordinaria di una patch, rivedi prima la transazione:

sudo zypper patch --dry-run
Esempio di terminale SLES che esamina una simulazione di una patch Zypper prima di un aggiornamento pianificato del pacchetto.
Prima di riprendere l'applicazione delle patch di routine, esaminate un piano di prova; in alternativa, utilizzate il comando documentato per la migrazione di un service pack.

Se la simulazione a secco mostra un piano ragionevole e la memoria è stabile, pianifica una finestra di manutenzione ed esegui il comando appropriato per l'attività originale. Mantieni la sessione SSH attiva, monitora il processo e verifica il risultato in seguito.

sudo tail -n 80 /var/log/zypper.log
sudo journalctl -k -b --since "30 minutes ago" | grep -Ei 'oom|out of memory|killed process'

Un ripristino riuscito significa che i pacchetti o la migrazione previsti sono stati completati, Zypper è terminato correttamente e non si è verificato alcun nuovo evento OOM durante l'esecuzione. Se il sistema è avviabile ma è necessario annullare la migrazione di un service pack SLES, la procedura di rollback di Snapper documentata da SUSE si applica solo se i requisiti sono soddisfatti, tra cui una directory root Btrfs supportata e snapshot configurati. Non considerare il rollback come una risposta generica a un errore di applicazione di un pacchetto.

Quando fermarsi e intensificare gli sforzi

Se l'errore si ripete dopo che la pressione sulla memoria è stata alleviata, i processi dei pacchetti sono ancora bloccati o il database RPM segnala un danneggiamento, interrompere i tentativi. Conservare il log di Zypper, il journal del kernel, il livello del prodotto e del service pack e il comando esatto utilizzato. SUSE supportconfigpuò raccogliere dati diagnostici per una richiesta di supporto. I passaggi qui descritti aiutano a distinguere la pressione sulla memoria da altri errori di allocazione; non possono determinare un difetto specifico del prodotto senza i log completi e la configurazione del sistema.

Per i dettagli aggiornati di SLES 15 SP7, consultare le utilità di monitoraggio del sistema di SUSE , il riferimento ai file di registro , la guida di amministrazione di Zypper , i requisiti di swap e Btrfs e le istruzioni online per l'aggiornamento e il rollback . I comandi e i percorsi di ripristino possono variare a seconda del service pack di SLES, dell'architettura, del filesystem e del fatto che l'operazione sia di applicazione di patch o di migrazione della release.

Lascia un commento

Attivare l'esecuzione automatica di Nextcloud Cron con un timer Systemd

Controlla la modalità cron di Nextcloud, ripara il servizio systemd e il timer e verifica che i processi in background vengano eseguiti dopo l'avvio e ogni cinque minuti.

Rimuovi l'avviso di blocco dei file di Nextcloud con Redis

Abilita il blocco affidabile dei file in Nextcloud, scegli il backend Redis o Valkey più adatto e verifica che l'avviso scompaia senza rischiare modifiche simultanee ai file.

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Cosa serve per ottenere una valutazione di sicurezza A+ da Nextcloud

Risolvi i problemi più comuni riscontrati durante le scansioni di Nextcloud con gli aggiornamenti più recenti, HTTPS e HSTS, una configurazione precisa del proxy inverso e verifiche rispetto al server pubblico.

Abilita la crittografia lato server di Nextcloud con un impatto misurabile

Configura Nextcloud SSE per lo spazio di archiviazione che lo richiede, proteggi le chiavi di crittografia e misura l'impatto sul trasferimento dati e sulla CPU prima di crittografare i file esistenti.

Aggiungi la ricerca full-text di Elasticsearch a Nextcloud

Collega la ricerca file di Nextcloud a Elasticsearch, indicizza il contenuto dei documenti e scegli una configurazione adatta alle esigenze del tuo server e della tua sicurezza.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Imposta una politica di scadenza affidabile per i file eliminati da Nextcloud.

Configura Nextcloud per rimuovere i file eliminati dopo un periodo di conservazione definito, pianifica in modo affidabile le attività in background ed evita i comandi che svuotano il cestino di tutti gli utenti.

Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.

Risolvi l'avviso di Nextcloud relativo agli indici del database mancanti.

Esegui in modo sicuro la riparazione OCC di Nextcloud, visualizza in anteprima le modifiche al database e verifica il motivo per cui l'avviso potrebbe persistere.

Aumentare il limite di caricamento web di Nextcloud oltre i 2 GB

Aumentare il limite di caricamento web di Nextcloud oltre i 2 GB

Consenti il ​​caricamento di file di dimensioni maggiori nel browser Nextcloud allineando le impostazioni di PHP, Nginx o Apache, dello spazio di archiviazione temporaneo e del timeout, e verifica quale limite sta bloccando il file.

Rimuovi l'avviso di memoria PHP di Nextcloud sul server web

Imposta il limite di memoria PHP effettivamente utilizzato da Nextcloud, riavvia il servizio corretto e conferma l'impostazione di 512 MB nella Panoramica di amministrazione.

Collega un bucket compatibile con S3 allo storage esterno di Nextcloud.

Monta un bucket di object storage compatibile in Nextcloud utilizzando il suo backend S3, con l'endpoint, le credenziali, l'ambito di accesso e i passaggi di verifica corretti.