PowerFlex: Bellek ayırma hataları nedeniyle MDM geçişi başarısız oluyor - mos_MemMalloc

Summary: MDM sahipliğini değiştirirken (elle veya diğer), kümeyi Birincil MDM'den yoksun bırakan bellek ayırma hataları nedeniyle alıcı MDM düzgün şekilde açılamaz.

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

Alıcı MDM /opt/emc/scaleio/mdm/bin/showevents.py öğesinden gelen olay çıktısı, hepsi birbirinden kısa bir süre içinde Birincil MDM sorumluluklarını devralmaya çalışırken birden çok girişe sahip olacaktır:  

 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.

Alıcı MDM'den gelen exp.0 dosyasında şuna benzer girişler vardı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]

/var/log/messages dosyası, events.txt yaptığı gibi MDM hizmetinin birden çok yeniden başlatılmasını gösterir: 

 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

Temel neden, Linux işletim sisteminin bir bellek tavanında çalışması ve başlatılırken MDM hizmetinin bellek isteklerini verememesidir. Bunun nedeni çekirdek parametre ayarlarının düzgün ayarlanmamış olmasıdır.
Not: İşletim sistemi gerçekten fiziksel olarak kullanılabilir olandan daha fazla bellek ayırmış olsaydı, mesaj dosyasında oom-killer mesajları görülürdü ve diğer hizmetler ve işlemler bu hatalardan önce sonlandırılırdı.

Resolution

Bu bir ScaleIO sorunu değildir. ScaleIO Tasarlandığı Gibi çalışmaktadır.

Vm.overcommit ayarlarını kontrol etmek ve/veya değiştirmek için şu adımları izleyin:

1. Kök

2 olarak SSH kullanarak SDS de oturum açın. Sürücüyü yüklemek için ilgili düğümde 

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, Aşağıdaki komutları çalıştırın.

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

Geçerlilik

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


Önerilen en iyi uygulama ayarlarına ayarlandıklarından emin olmak için ortamdaki etkilenen tüm SDS'lerde bu adımları tekrarlayın. Bu işlemi gerçekleştirmek için SDS'yi bakım moduna almanız gerekmez. 

Bu ayarlar hakkında daha fazla bilgi edinmek için fazla atama muhasebesi ile ilgili Linux Çekirdeği belgelerine bakın

Additional Information

Fazla bellek kullanımı için sysctl çekirdek parametrelerini kontrol edin:

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

Bu durumda, "vm.overcommit_memory" değerinin 2 olarak ayarlanması, aşırı bellek yüklenmemesi gerektiği anlamına gelir. Bu, aşırı kullanım sınırını aşan herhangi bir bellek ayırmada başarısız olur. Sistem için toplam adres alanı taahhüdünün, takas + yapılandırılabilir bir fiziksel RAM miktarını (varsayılan olarak %50'dir) aşmasına izin verilmez. Bu ayar 0 olduğunda, bariz fazla kaynak ayırma isteklerini reddeder, ancak kök işlemlerin aşırı kaynak ayırma sınırının üzerinde ayırma yapmasına izin verilir. 

Geçerli fazla kaynak ayırma sınırını ve işlenen miktarı kontrol etmek için aşağıdaki komuttan sırasıyla CommitLimit ve Committed_AS bölümlerine bakın:

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

Bu ana bilgisayarda 8 GB RAM vardır ve CommitLimit, toplam adres alanının %50'si anlamına gelen ~4 GB olarak ayarlanmıştır.

 

Bu sorunu çözmek için /etc/sysctl.conf dosyasında aşağıdakilerden birini ekleyin/düzenleyin:

 - "vm.overcommit_ratio" değerini 100 olarak değiştirin, böylece işletim sistemi kullanılabilir toplam adres alanını işleyebilir ve yeniden başlatabilir.

Bu ayarlar hakkında daha fazla bilgi edinmek için fazla atama muhasebesi ile ilgili Linux Çekirdeği belgelerine bakın

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.