PowerFlex "ERROR: Impossibile eseguire il fork del timer" durante l'aggiornamento della licenza
Summary: Il cliente non è in grado di aggiornare la licenza PowerFlex.
Symptoms
Scenario
Quando tenta di aggiornare la licenza, il cliente potrebbe visualizzare il seguente messaggio: "ERRORE: Impossibile eseguire il fork del timer"
Sintomi
Dal registro di traccia MDM
29/09 15:19:38.957139 0x7f91e2645db8:mosEventLog_PostInternal:00608: New event added. Message: "Command set_license received, User: 'admin'. [774]". Additional info: "" Severity: Info 29/09 15:19:38.957208 (nil):mosIO_close:00137: Closing FD(299) 29/09 15:19:38.964892 (nil):mos_CreateProcessWithTimeout:00050: ERROR: Failed to fork timer 29/09 15:19:38.968880 (nil):mosIO_close:00137: Closing FD(299) 29/09 15:19:38.968906 0x7f91e2645db8:mdmObj_SetLicense:01918: Decode rc: ILLEGAL 29/09 15:19:38.968912 0x7f91e2645db8:mdmObj_SetLicense:01921: Bad license. RC: ILLEGAL 29/09 15:19:38.968946 0x7f91e2645db8:mosEventLog_PostInternal:00608: New event added. Message: "Command set_license was not successful. Error code: The license key is invalid or does not match this version. Please contact Customer Support. [774]". Additional info: "" Severity: Warning
Impatto
Il cliente non è in grado di aggiornare la licenza fino a quando il problema relativo alle risorse non viene risolto.
Cause
Quando si esegue il comando scli --set_license per applicare la licenza, il processo MDM viene clonato (biforcato) due volte.
Il primo passaggio è riuscito, ma il comando non è stato in grado di clonare il processo MDM. Ciò può verificarsi se il sistema non dispone di risorse sufficienti per clonare il processo. In questo caso, la configurazione di overcommit della memoria della SVM ha limitato il sistema a solo metà della memoria disponibile:
grep 'vm.overcommit' ./server/sysctl.txt -H server/sysctl.txt:vm.overcommit_kbytes = 0 server/sysctl.txt:vm.overcommit_memory = 2 server/sysctl.txt:vm.overcommit_ratio = 50
Resolution
Verificare che il sistema disponga di risorse sufficienti.
Controllare i parametri del kernel sysctl per l'overcommit della memoria:
# sysctl -a |grep commit vm.overcommit_memory = 2 (default is 0) vm.overcommit_ratio = 50 (default is 50)
In questo caso, avere "vm.overcommit_memory" impostato su due significa non sovraccaricare la memoria. In questo modo si riesce a qualsiasi allocazione di memoria che superi il limite di overcommit. Il commit totale dello spazio degli indirizzi per il sistema non può superare swap + una quantità configurabile (il valore predefinito è 50%) di RAM fisica.
Per risolvere questo problema, aggiungere/modificare uno dei seguenti elementi in /etc/sysctl.conf:
- Modificare "vm.overcommit_ratio" in 100, in modo che il sistema operativo possa eseguire il commit dello spazio di indirizzi totale disponibile e riavviare.