PowerFlex: MDM-omskiftning mislykkes pga. hukommelsesallokeringsfejl – mos_MemMalloc

Summary: Når du skifter MDM-ejerskab (manuelt eller andet), kan den modtagende MDM ikke vises korrekt på grund af hukommelsesallokeringsfejl, der efterlader klyngen uden primær MDM.

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

Hændelsesoutputtet fra den modtagende MDM /opt/emc/scaleio/mdm/bin/showevents.py vil have flere poster til at forsøge at overtage primære MDM-ansvarsområder, alle inden for kort tid efter hinanden:  

 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.

Exp.0-arkivet fra den modtagende MDM har poster som denne: 

 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]

Arkivet /var/log/messages viser flere genstarter af MDM-tjenesten, ligesom events.txt gør: 

 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

Den grundlæggende årsag er, at Linux OS løber ind i et hukommelsesloft og ikke kan imødekomme hukommelsesanmodningerne fra MDM-tjenesten, når den initialiseres. Dette skyldes, at kerneparameterindstillingerne ikke er indstillet korrekt.
Bemærk: Hvis operativsystemet virkelig havde allokeret mere hukommelse, end der var fysisk tilgængelig, ville oom-killer-meddelelser være blevet set i meddelelsesfilen, og andre tjenester og processer ville være blevet dræbt før disse fejl.

Resolution

Dette er ikke et ScaleIO-problem. ScaleIO virker efter hensigten.

Følg disse trin

for at kontrollere og/eller ændre indstillingerne for vm.overcommit:1. Log på SDS ved hjælp af SSH som rod

2. Kør 

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, Kør følgende kommandoer.

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

Validering

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


Gentag disse trin på alle påvirkede SDS'er i miljøet for at sikre, at de er indstillet til de anbefalede indstillinger for bedste praksis. Du behøver ikke at sætte sikkerhedsdatabladet i vedligeholdelsestilstand for at udføre denne handling. 

For at lære mere om disse indstillinger, se Linux Kernel-dokumentationen om overcommit-accounting

Additional Information

Kontroller sysctl-kerneparametrene for overdreven bekræftelse af hukommelsen:

# sysctl -a |grep commit
vm.overcommit_memory = 2 (default is 0)
vm.overcommit_ratio = 50 (default is 50)

I dette tilfælde betyder "vm.overcommit_memory" indstillet til 2, at du ikke overdriver hukommelsen. Dette mislykkes enhver hukommelsesallokering, der overskrider grænsen for overallokering. Den samlede adressepladsforpligtelse for systemet må ikke overstige swap + en konfigurerbar mængde (standard er 50%) fysisk RAM. Når denne indstilling er på 0, afvises åbenlyse anmodninger om overallitering, men rodprocesser må allokeres over grænsen for overbinding. 

Hvis du vil kontrollere den aktuelle grænse for overforpligtelse og det beløb, der er indgået, skal du se henholdsvis CommitLimit og Committed_AS fra følgende kommando:

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

Der er 8 GB RAM på denne vært, og CommitLimit er indstillet til ~ 4 GB, hvilket er 50% af den samlede adresseplads.

 

For at løse dette problem skal du tilføje/redigere et af følgende i /etc/sysctl.conf:

 - Skift "vm.overcommit_ratio" til 100, så operativsystemet kan forpligte den samlede tilgængelige adresseplads og genstarte.

For at lære mere om disse indstillinger, se Linux Kernel-dokumentationen om 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.