PowerFlex: MDM-bytte mislyktes på grunn av feil ved minnetildeling – mos_MemMalloc

Summary: Når du bytter MDM-eierskap (manuelt eller annet), kan ikke mottakende MDM-en vises ordentlig på grunn av feil ved minnetildeling, slik at klyngen ikke har noen 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

Hendelsene som utløses fra mottakende MDM /opt/emc/scaleio/mdm/bin/showevents.py har flere oppføringer for å prøve å overta primære MDM-ansvarsområder, alt med kort tid etter hverandre:  

 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-filen fra den mottakende MDM-filen har oppføringer som dette: 

 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]

/var/log/messages-filen viser flere omstarter av MDM-tjenesten slik events.txt gjø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

Hovedårsaken er at Linux OS kjører inn i et minnetak og ikke kan gi minneforespørsler fra MDM-tjenesten som den initialiserer. Dette skyldes at kjerneparameterinnstillingene ikke er riktig innstilt.
Merk: Hvis operativsystemet virkelig hadde tildelt mer minne enn det som var fysisk tilgjengelig, ville oom-killer-meldinger blitt sett i meldingsfilen, og andre tjenester og prosesser ville ha blitt drept før disse feilene.

Resolution

Dette er ikke et ScaleIO-problem. ScaleIO fungerer som det skal.

Følg disse trinnene for å kontrollere og/eller endre vm.overcommit-innstillingene:

1. Logg på SDS med SSH som rot

2. Kjø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, Kjø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


Gjenta disse trinnene på alle berørte SDS-er i miljøet for å sikre at de er satt til de anbefalte innstillingene for beste praksis. Du trenger ikke å sette SDS i vedlikeholdsmodus for å utføre denne operasjonen. 

Hvis du vil vite mer om disse innstillingene, kan du se Linux-kjernedokumentasjonen om overcommit-accounting

Additional Information

Kontroller sysctl-kjerneparametrene for overcommit av minne:

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

I dette tilfellet betyr det å ha "vm.overcommit_memory" satt til 2 ikke overcommit minne. Dette mislykkes i eventuell minnetildeling som overskrider grensen for overskridelse. Det totale adresseområdet for systemet kan ikke overskride bytte + en konfigurerbar mengde (standard er 50 %) fysisk RAM. Når denne innstillingen er på 0, avslår den åpenbare overcommit-forespørsler, men rotprosesser kan tildeles over grensen for overcommit. 

Hvis du vil kontrollere gjeldende overbelastningsgrense og forpliktet beløp, kan du se henholdsvis CommitLimit og Committed_AS fra følgende kommando:

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

Det er 8 GB RAM på denne verten, og CommitLimit er satt til ~4 GB, som er 50 % av det totale adresseområdet.

 

For å løse dette problemet, legg til/rediger ett av følgende i /etc/sysctl.conf:

 - Endre "vm.overcommit_ratio" til 100, slik at operativsystemet kan begå den totale tilgjengelige adresseplassen og starte på nytt.

Hvis du vil vite mer om disse innstillingene, kan du se Linux-kjernedokumentasjonen 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.