PowerFlex: MDM-växling misslyckas på grund av minnesallokeringsfel – mos_MemMalloc

Summary: När du byter MDM-ägarskap (manuellt eller annat) kan den mottagande MDM-enheten inte visas korrekt på grund av minnesallokeringsfel som lämnar klustret utan 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ändelseutdata från den mottagande MDM:en /opt/emc/scaleio/mdm/bin/showevents.py har flera poster för att försöka ta över primära MDM-ansvar, allt inom en kort tid från varandra:  

 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.

Filen exp.0 från den mottagande MDM-enheten har poster som ser ut så här: 

 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]

Filen /var/log/messages visar flera omstarter av MDM-tjänsten när 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

Rotorsaken är att Linux-operativsystemet körs in i ett minnestak och inte kan bevilja minnesbegäranden för MDM-tjänsten när den initieras. Detta beror på att kernelparameterinställningarna inte har justerats korrekt.
Obs! Om operativsystemet verkligen hade allokerat mer minne än vad som var fysiskt tillgängligt skulle oom-killer-meddelanden ha setts i meddelandefilen och andra tjänster och processer skulle ha stoppats före dessa fel.

Resolution

Det här är inte ett ScaleIO-problem. ScaleIO fungerar som förväntat.

Följ dessa steg om du vill kontrollera och/eller ändra vm.overcommit inställningarna:

1. Logga in på SDS med SSH som rot

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öljande kommandon.

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


Upprepa de här stegen för alla SDS:er som påverkas i miljön för att säkerställa att de är inställda på de rekommenderade inställningarna för bästa praxis. Du behöver inte sätta SDS i underhållsläge för att utföra den här åtgärden. 

Mer information om de här inställningarna finns i Linux Kernel-dokumentationen om överincheckningsredovisning

Additional Information

Kontrollera sysctl-kernelparametrarna för överaggregering av minne:

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

Om du har "vm.overcommit_memory" inställt på 2 innebär det i det här fallet att minnet inte ska överansträngas. Detta misslyckas med all minnesallokering som överskrider överallokeringsgränsen. Det totala adressutrymmet för systemet får inte överskrida växling + en konfigurerbar mängd (standard är 50 %) av det fysiska RAM-minnet. När den här inställningen är 0 nekar den uppenbara överallokeringsbegäranden, men rotprocesser tillåts allokera över överallokeringsgränsen. 

Information om hur du kontrollerar den aktuella överallokeringsgränsen och det använda beloppet finns i CommitLimit respektive Committed_AS från följande kommando:

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

Det finns 8 GB RAM-minne på den här värden och CommitLimit är inställt på ~4 GB, vilket är 50 % av det totala adressutrymmet.

 

Åtgärda problemet genom att lägga till/redigera något av följande i /etc/sysctl.conf:

 - Ändra "vm.overcommit_ratio" till 100 så att operativsystemet kan checka in det totala tillgängliga adressutrymmet och starta om.

Mer information om de här inställningarna finns i Linux Kernel-dokumentationen om överincheckningsredovisning

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.