PowerFlex: Switchover MDM non riuscito a causa di errori di allocazione della memoria - mos_MemMalloc

Summary: Quando si cambia la proprietà dell MDM (manualmente o in altro modo), l MDM ricevente non può essere attivato correttamente a causa di errori di allocazione della memoria che lasciano il cluster senza MDM primario. ...

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

L'output degli eventi dall MDM ricevente /opt/emc/scaleio/mdm/bin/showevents.py avrà più voci per tentare di assumere le responsabilità dell MDM primario, il tutto entro un breve periodo di tempo l'uno dall'altro:  

 2017-10-04 12:08:33.915 MDM_CLUSTER_BECOMING_MASTER WARNING This MDM, ID 394760fd6714xxxx, took control of 
the cluster and is now the Master MDM. 2017-10-04 12:08:33.915 MDM_BECOMING_MASTER WARNING This MDM is
 switching to Master mode. MDM will start running. .. 2017-10-04 12:08:34.309 MDM_CLUSTER_BECOMING_MASTER 
WARNING This MDM, ID 394760fd6714xxxx, took control of the cluster and is now the Master MDM. 
2017-10-04 12:08:34.309 MDM_BECOMING_MASTER WARNING This MDM is switching to Master mode. MDM will start 
running.

Il file exp.0 dell MDM ricevente contiene voci simili a queste: 

 04/10 12:08:34.079823 Panic in file /data/build/workspace/ScaleIO-SLES12-2/src/mos/usr/mos_utils.c, line 73, 
function mos_MemMalloc, PID 9978.Panic Expression bCanFail . /opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(
mosDbg_PanicPrepare+0x115) [0x6a86f5] /opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(mos_MemMalloc+0x81) 
[0x6ac0d1] /opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(multiHeadMgr_GetUpdateMultiHeadsMsg+0x66) [0x57123c]
 /opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(tgtMgr_ConfigureTgt+0x9c1) [0x4d579e] 
/opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(tgtMgr_HandleWorkReq+0x41b) [0x4d6206] 
/opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211() [0x6c57d8] 
/opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(mosUmt_StartFunc+0xea) [0x6c51af]
 /opt/emc/scaleio/mdm/bin/mdm-2.0.13000.211(mosUmt_SignalHandler+0x51) [0x6c65d1]
 /lib64/libpthread.so.0(+0x10b00) [0x7f844e8a6b00] /lib64/libc.so.6(sleep+0xd4) [0x7f844d8911a4]

Il file /var/log/messages mostra i riavvii multipli del servizio MDM come events.txt: 

 systemd[1]: mdm.service: Main process exited, code=exited, status=255/n/a systemd[1]: mdm.service: 
Unit entered failed state. systemd[1]: mdm.service: Failed with result 'exit-code'. systemd[1]: mdm.service:
 Service has no hold-off time, scheduling restart. systemd[1]: Stopped scaleio mdm. systemd[1]: mdm.service: 
Start request repeated too quickly. systemd[1]: Failed to start scaleio mdm. systemd[1]: mdm.service: Unit 
entered failed state. systemd[1]: mdm.service: Failed with result 'start-limit'.

Cause

La root cause è che il sistema operativo Linux sta raggiungendo un limite di memoria e non è in grado di soddisfare le richieste di memoria del servizio MDM durante l'inizializzazione. Ciò è dovuto al fatto che le impostazioni dei parametri del kernel non sono state ottimizzate correttamente.
Nota: Se il sistema operativo avesse veramente allocato più memoria di quella fisicamente disponibile, i messaggi oom-killer sarebbero stati visti nel file dei messaggi e altri servizi e processi sarebbero stati uccisi prima di questi errori.

Resolution

Non si tratta di un problema di ScaleIO. ScaleIO funziona come previsto.

Per controllare e/o modificare le impostazioni vm.overcommit, attenersi alla seguente procedura:

1. Accedere all SDS utilizzando SSH come root

2. Eseguire 

cat /etc/sysctl.conf | grep "vm.overcommit"
Ex.
[root@sds-node logs]# cat /etc/sysctl.conf | grep "vm.overcommit"
vm.overcommit_memory = 2
vm.overcommit_ratio = 50

3, Eseguire i seguenti comandi.

sed -i 's/vm\.overcommit_memory = .*/vm\.overcommit_memory = 2/g' /etc/sysctl.conf
sed -i 's/vm\.overcommit_ratio = .*/vm\.overcommit_ratio = 100/g' /etc/sysctl.conf
sysctl -p

Convalida

[root@sds-node logs]# cat /etc/sysctl.conf | grep "vm.overcommit"
vm.overcommit_memory = 2
vm.overcommit_ratio = 100


Ripetere questi passaggi su tutti gli SDS interessati nell'ambiente per assicurarsi che siano impostati sulle impostazioni delle best practice consigliate. Non è necessario impostare l SDS in modalità di manutenzione per eseguire questa operazione. 

Per ulteriori informazioni su queste impostazioni, consultare la documentazione del kernel Linux sull'overcommit accounting

Additional Information

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 2 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. Quando questa impostazione è a 0, nega le richieste di overcommit evidenti, ma i processi root possono allocare oltre il limite di overcommit. 

Per controllare il limite di overcommit corrente e la quantità di commit, vedere rispettivamente CommitLimit e Committed_AS dal seguente comando:

#cat /proc/meminfo 
MemTotal: 8174572 kB 
.. 
CommitLimit: 4087284 kB 
Committed_AS: 3879388 kB

Su questo host sono presenti 8 GB di RAM e il CommitLimit è impostato su ~4 GB, ovvero il 50% dello spazio degli indirizzi totale.

 

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.

Per ulteriori informazioni su queste impostazioni, consultare la documentazione del kernel Linux sull'overcommit accounting

Affected Products

PowerFlex rack, VxFlex Product Family
Article Properties
Article Number: 000030300
Article Type: Solution
Last Modified: 22 Sept 2025
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.