PowerFlex: Přepnutí uzlu MDM selhává kvůli selhání přidělování paměti – mos_MemMalloc

Summary: Při přepínání vlastnictví uzlu MDM (ručně nebo jiného) se přijímající uzel MDM nemůže správně spustit kvůli selhání přidělování paměti, takže cluster nemá primární uzel 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

Výstup událostí z přijímajícího MDM /opt/emc/scaleio/mdm/bin/showevents.py bude mít několik položek pro pokus o převzetí zodpovědnosti primárního MDM, a to vše v krátkém časovém odstupu:  

 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.

Soubor exp.0 z přijímajícího MDM obsahuje následující položky: 

 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]

Soubor /var/log/messages zobrazuje vícenásobné restartování služby MDM, stejně jako 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

Hlavní příčinou je, že operační systém Linux naráží na strop paměti a nemůže při inicializaci udělovat paměťové požadavky služby MDM. To je způsobeno tím, že nastavení parametrů jádra není správně vyladěno.
Poznámka: Pokud by operační systém skutečně přidělil více paměti, než bylo fyzicky k dispozici, oom-killer zprávy by se zobrazily v souboru zpráv a další služby a procesy by byly ukončeny před těmito selháními.

Resolution

Nejedná se o problém ScaleIO. ScaleIO funguje standardním způsobem.

Pokud chcete zkontrolovat nebo upravit nastavení vm.overcommit, postupujte následovně:

1. Přihlaste se k SDS přes SSH jako uživatel root

2. Spustit 

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, Spusťte následující příkazy.

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

Ověření

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


Opakujte tyto kroky u všech problémových úložišť SDS v prostředí, abyste měli jistotu, že jsou nastaveny na doporučená nastavení vzorových postupů. K provedení této operace není nutné přepínat SDS do režimu údržby. 

Další informace o těchto nastaveních najdete v dokumentaci k linuxovému jádru o účtování nadměrného potvrzení.

Additional Information

Zkontrolujte parametry jádra sysctl, zda nedochází k přetížení paměti:

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

V tomto případě nastavení "vm.overcommit_memory" na 2 znamená, že nepřetěžujete paměť. Tím selže jakékoli přidělování paměti, které překračuje limit nadměrného potvrzení. Celkový commit adresního prostoru pro systém nesmí překročit swap + konfigurovatelné množství (výchozí hodnota je 50 %) fyzické paměti RAM. Pokud je toto nastavení na hodnotě 0, odepře zjevné požadavky na nadměrné potvrzení, ale kořenové procesy mohou přidělit více než limit nadměrného potvrzení. 

Pokud chcete zkontrolovat aktuální limit nadměrného potvrzení a potvrzenou částku, podívejte se na CommitLimit a Committed_AS pomocí následujícího příkazu:

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

Na tomto hostiteli je 8 GB paměti RAM a parametr CommitLimit je nastaven na ~4 GB, což je 50 % celkového adresního prostoru.

 

Chcete-li tento problém vyřešit, přidejte/upravte jednu z následujících položek v souboru /etc/sysctl.conf:

 - Změňte hodnotu "vm.overcommit_ratio" na 100, aby operační systém mohl potvrdit celkový dostupný adresní prostor a restartovat se.

Další informace o těchto nastaveních najdete v dokumentaci k linuxovému jádru o účtování nadměrného potvrzení.

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.