PowerFlex: 메모리 할당 실패로 인한 MDM 전환 실패 - mos_MemMalloc

Summary: MDM 소유권을 전환할 때(수동 또는 기타) 클러스터에 운영 MDM이 없는 메모리 할당 실패로 인해 수신 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

수신 MDM /opt/emc/scaleio/mdm/bin/showevents.py 의 이벤트 출력에는 운영 MDM 책임을 인수하기 위한 여러 항목이 있으며, 이러한 항목은 모두 짧은 시간 내에 발생합니다.  

 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.

수신 MDM의 exp.0 파일에는 다음과 같은 항목이 있습니다. 

 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 파일은 events.txt와 마찬가지로 MDM 서비스를 여러 번 재시작하는 것을 보여줍니다. 

 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

근본 원인은 Linux OS가 메모리 상한에 도달하여 초기화 시 MDM 서비스의 메모리 요청을 부여할 수 없기 때문입니다. 이는 커널 매개변수 설정이 제대로 조정되지 않았기 때문입니다.
참고: OS가 실제로 실제로 사용할 수 있는 것보다 더 많은 메모리를 할당했다면 메시지 파일에 oom-killer 메시지가 표시되고 이러한 오류가 발생하기 전에 다른 서비스 및 프로세스가 종료되었을 것입니다.

Resolution

이는 ScaleIO 문제가 아닙니다. ScaleIO가 정상적으로 작동하고 있습니다.

vm.overcommit 설정을 확인 및/또는 수정하려면 다음 단계를 수행합니다.

1. SSH를 루트

로 사용하여 SDS에 로그인합니다. 2. Windows 업그레이드를 실행하라는 프롬프트에 아래 내용이 표시될 때까지 

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, 다음 명령을 실행합니다.

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

검증

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


환경에서 영향을 받는 모든 SDS에 대해 이 단계를 반복하여 권장 모범 사례 설정으로 설정되어 있는지 확인합니다. 이 작업을 수행하기 위해 SDS를 유지 보수 모드로 전환할 필요는 없습니다. 

이러한 설정에 대한 자세한 내용은 오버커밋 계산에 대한 Linux 커널 설명서를 참조하십시오

Additional Information

메모리의 오버커밋에 대한 sysctl 커널 매개변수를 확인합니다.

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

이 경우 "vm.overcommit_memory"를 2로 설정하면 메모리를 오버커밋하지 않아도 됩니다. 이렇게 하면 오버커밋 제한을 초과하는 메모리 할당에 실패합니다. 시스템의 총 주소 공간 커밋은 물리적 RAM의 스왑 + 구성 가능한 양(기본값은 50%)을 초과할 수 없습니다. 이 설정이 0이면 명백한 오버커밋 요청을 거부하지만 루트 프로세스는 오버커밋 제한을 초과하여 할당할 수 있습니다. 

현재 오버커밋 제한과 커밋된 양을 확인하려면 다음 명령에서 각각 CommitLimit 및 Committed_AS를 참조하십시오.

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

이 호스트에는 8GB의 RAM이 있고 CommitLimit는 총 주소 공간의 50%인 ~4GB로 설정됩니다.

 

이 문제를 해결하려면 /etc/sysctl.conf에서 다음 중 하나를 추가/편집합니다.

 - "vm.overcommit_ratio"를 100으로 변경하여 OS가 사용 가능한 총 주소 공간을 커밋하고 재부팅할 수 있도록 합니다.

이러한 설정에 대한 자세한 내용은 오버커밋 계산에 대한 Linux 커널 설명서를 참조하십시오

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.