PowerScale: Nodi suddivisi come lldpd non invia più heartbeat allo switch Dell back-end

Summary: Questo articolo descrive un problema con _lldpd processo che consuma la memoria massima consentita e non invia più pacchetti LLDP (Link Layer Discovery Protocol) agli switch back-end.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

AVVERTENZA:
  • Non è consigliabile eseguire un aggiornamento di OneFS alle versioni interessate (da 9.5.0.0 a 9.5.0.5)

  • RPS o il cliente DEVE riavviare tutti i processi lldpd prima di eseguire un aggiornamento di OneFS su una versione interessata (ad esempio, l'aggiornamento da 9.5.0.1 a 9.5.0.7). Seguire l'opzione 2 nella risoluzione.


Si verifica una perdita di memoria in lldpd e un nodo può dividersi se il processo ha consumato la memoria massima consentita (1 GB). Una volta che il nodo utilizza la memoria consentita, non invia più pacchetti LLDP agli switch back-end. Uno switch di back-end qualificato Dell PowerScale che esegue SmartFabric Services (SFS) deve ricevere pacchetti heartbeat (LLDP) da un nodo. Se vengono mancati tre heartbeat, la porta dello switch viene rimossa dalla rete virtuale dedicata. Quindi, un nodo non può più comunicare con il cluster tramite tale percorso.

Se un cluster verrà aggiornato, i nodi vengono riavviati in successione e ogni riavvio richiede diversi collegamenti verso l'alto e verso l'alto. Ognuno di questi eventi di collegamento dei riavvii aumenta lentamente le dimensioni dell'utilizzo di vmem lldpd. È molto probabile che i nodi si dividano durante un aggiornamento se il processo non è stato riavviato di recente.

Questo problema può verificarsi nei seguenti scenari:

  • Upgrade di OneFS
  • Operazioni normali del cluster

L'utilizzo corrente di vmem può essere visualizzato con il seguente comando, dove un valore MAXIMUM Resident Set Size (RSS) è 1.048.576 KB. RSS è la sesta colonna di informazioni dall'output PS (a sinistra di " -") (escluso il nome del nodo).

# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'

 

NOTA: "isi_for_array" non funziona sui nodi OFFLINE. Per raccogliere le informazioni di cui sopra è necessaria una connessione diretta ai nodi OFFLINE.

 


Output di esempio riportato di seguito:

cl950x-1# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
cl950x-1: _lldpd  1483   0.0  3.2 273804 262168  -  S     6Aug23     74:25.14 lldpd: no neighbor. (lldpd)
cl950x-1: _lldpd  1492   0.0  3.2 273804 262168  -  S     6Aug23     74:31.73 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1483   0.0  2.9 251068 238632  -  S    14Aug23     66:19.68 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1492   0.0  2.9 251068 238632  -  S    14Aug23     66:24.72 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1483   0.0  2.9 251832 239420  -  S    14Aug23     46:25.36 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1492   0.0  2.9 251832 239420  -  S    14Aug23     46:32.24 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1487   0.0  3.1 268052 256212  -  S     8Aug23     50:25.15 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1496   0.0  3.1 268052 256212  -  S     8Aug23     50:36.34 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1483   0.0  3.1 273208 261552  -  S     6Aug23     75:41.91 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1492   0.0  3.1 273208 261552  -  S     6Aug23     75:35.00 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1482   0.0  3.2 274144 262516  -  S     6Aug23     50:49.08 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1492   0.0  3.2 274144 262516  -  S     6Aug23     51:02.88 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1483   0.0  3.2 274004 262380  -  S     6Aug23     50:51.55 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1492   0.0  3.2 274004 262380  -  S     6Aug23     51:03.26 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1483   0.0  2.9 251176 238744  -  S    14Aug23     46:40.93 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1492   0.0  2.9 251176 238744  -  S    14Aug23     46:49.57 lldpd: no neighbor. (lldpd)
                                         ^^^^^^


La velocità con cui il processo lldpd utilizza la memoria varia in base a diversi fattori. Questo è anche il motivo dell'aumento superiore al normale dell'utilizzo della memoria durante gli aggiornamenti di OneFS:

  • Dimensioni della configurazione di rete nel cluster
  • Numero di subnet create dalla configurazione di rete
  • Il numero di eventi di rete, ad esempio link down o up.
  • Eventi ricorrenti di riavvio

La quantità di tempo necessaria affinché _lldpd processo raggiunga la memoria MASSIMA consentita varia da cluster a cluster. Tuttavia, è stata rilevata una correlazione tra le dimensioni della configurazione di rete e il tempo necessario per l'errore. Ciò significa che maggiore è il numero di groupnet, subnet e pool configurati, prima può verificarsi l'operazione.  

Cause

Nella versione 9.5, lldpd è stato aggiornato e contiene una perdita di memoria.

Resolution

WARNING

  • Non è consigliabile eseguire un aggiornamento di OneFS alle versioni interessate (da 9.5.0.0 a 9.5.0.5)

  • RPS o il cliente DEVE riavviare tutti i processi lldpd prima di eseguire un aggiornamento di OneFS su una versione interessata (ad esempio, l'aggiornamento da 9.5.0.1 a 9.5.0.7). Seguire l'opzione 2 nella risoluzione.

Sono disponibili diverse opzioni per risolvere il problema a seconda dello scenario corrente:

  1. Aggiornare OneFS alla versione 9.5.0.6 e versioni successive
    • Prendere nota dei messaggi di avvertenza descritti in dettaglio nell'articolo relativi al riavvio di lldpd prima di qualsiasi aggiornamento delle versioni interessate.
  2. Una soluzione alternativa temporanea viene completata immediatamente riavviando i processi lldpd. Ciò richiede un intervento manuale riavviando il processo nel cluster:
    • # killall lldpd
  3. Una soluzione temporanea dopo la risoluzione del problema consiste nel riavviare immediatamente i processi lldpd di dimensioni superiori a 500 MB:
    • # isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''
  4. Una soluzione temporanea dopo la risoluzione del problema (il comando seguente è lo stesso del comando precedente), può essere eseguita in una sessione dello schermo per eseguire il controllo ogni 1200 s.
    • # while true; do isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''; sleep 1200; done
Article Properties
Article Number: 000219439
Article Type: Solution
Last Modified: 19 May 2025
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.