PowerFlex: MDM-switchover mislukt door geheugentoewijzingsfouten - mos_MemMalloc

Summary: Bij het wisselen van MDM-eigendom (handmatig of anderszins) kan de ontvangende MDM niet correct worden weergegeven vanwege fouten in de geheugentoewijzing, waardoor het cluster geen primaire MDM heeft. ...

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

De gebeurtenis-uitvoer van de ontvangende MDM /opt/emc/scaleio/mdm/bin/showevents.py heeft meerdere vermeldingen voor het overnemen van primaire MDM-verantwoordelijkheden, allemaal binnen een korte tijd na elkaar:  

 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.

Het exp.0-bestand van het ontvangende MDM bevat de volgende items: 

 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]

In het bestand /var/log/messages wordt weergegeven hoe de MDM-voorziening meerdere keren opnieuw wordt opgestart terwijl de events.txt het volgende doet: 

 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

De oorzaak is dat het Linux-besturingssysteem tegen een geheugenplafond aanloopt en de geheugenverzoeken van de MDM-dienst niet kan inwilligen tijdens het initialiseren. Dit komt doordat de instellingen van de kernelparameter niet goed zijn afgesteld.
Opmerking: Als het besturingssysteem echt meer geheugen had toegewezen dan fysiek beschikbaar was, zouden oom-killer-berichten in het berichtenbestand zijn gezien en zouden andere services en processen zijn uitgeschakeld voordat deze storingen plaatsvonden.

Resolution

Dit is geen probleem met ScaleIO. ScaleIO werkt naar behoren.

Volg deze stappen om de instellingen voor vm.overcommit te controleren en/of te wijzigen:

1. Meld u aan bij de SDS met SSH als root

2. Voer 

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, Voer de volgende opdrachten uit.

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


Herhaal deze stappen op alle betrokken SDS-exemplaren in de omgeving om ervoor te zorgen dat ze zijn ingesteld op de aanbevolen best practice-instellingen. U hoeft de SDS niet in de onderhoudsmodus te zetten om deze bewerking uit te voeren. 

Voor meer informatie over deze instellingen, zie de Linux Kernel documentatie over overcommit-accounting

Additional Information

Controleer de sysctl kernel parameters op overcommit van het geheugen:

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

In dit geval betekent het instellen van "vm.overcommit_memory" op 2 dat het geheugen niet te veel wordt ingezet. Hiermee mislukt elke geheugentoewijzing die de overcommitteringslimiet overschrijdt. De totale adresruimte voor het systeem mag niet groter zijn dan de swap + een configureerbare hoeveelheid (standaard is 50%) van het fysieke RAM. Wanneer deze instelling op 0 staat, worden duidelijke overcommit-aanvragen geweigerd, maar rootprocessen mogen boven de overcommit-limiet worden toegewezen. 

Zie CommitLimit en Committed_AS van de volgende opdracht om de huidige overcommitteringslimiet en het toegezegde bedrag te controleren:

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

Er is 8 GB RAM op deze host en de CommitLimit is ingesteld op ~4 GB, wat 50% van de totale adresruimte is.

 

Om dit probleem op te lossen, kunt u een van de volgende dingen toevoegen/bewerken in /etc/sysctl.conf:

 - Wijzig "vm.overcommit_ratio" in 100, zodat het besturingssysteem de totale beschikbare adresruimte kan vastleggen en opnieuw kan opstarten.

Voor meer informatie over deze instellingen, zie de Linux Kernel documentatie over 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.