PowerFlex: Falla de cambio de MDM debido a fallas de asignación de memoria: mos_MemMalloc

Summary: Cuando se cambia la propiedad del MDM (manualmente o de otro modo), el MDM receptor no puede aparecer correctamente debido a fallas de asignación de memoria que dejan al clúster sin MDM principal. ...

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

Los eventos generados por el MDM receptor /opt/emc/scaleio/mdm/bin/showevents.py tendrán varias entradas para intentar asumir las responsabilidades del MDM principal, todo con poca diferencia entre sí:  

 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.

El archivo exp.0 del MDM receptor tiene entradas como esta: 

 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]

El archivo /var/log/messages muestra los múltiples reinicios del servicio MDM como lo hace el 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

La causa raíz es que el SO Linux se encuentra en un límite de memoria y no puede otorgar las solicitudes de memoria del servicio MDM a medida que se inicializa. Esto se debe a que los ajustes de parámetros del kernel no se ajustan correctamente.
Nota: Si el sistema operativo realmente hubiera asignado más memoria de la que estaba disponible físicamente, se habrían visto mensajes oom-killer en el archivo de mensajes y otros servicios y procesos se habrían eliminado antes de estas fallas.

Resolution

Este no es un problema de ScaleIO. ScaleIO funciona según lo previsto.

Para comprobar o modificar la configuración de vm.overcommit, siga estos pasos:

1. Inicie sesión en el SDS mediante SSH como raíz

2. Ejecutar 

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. Ejecute los siguientes comandos.

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

Validación

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


Repita estos pasos en todos los SDS afectados en el entorno para asegurarse de que estén configurados en la configuración recomendada de las prácticas recomendadas. No es necesario colocar el SDS en modo de mantenimiento para realizar esta operación. 

Para obtener más información sobre estos ajustes, consulte la documentación del kernel de Linux sobre overcommit-accounting

Additional Information

Compruebe los parámetros del kernel sysctl para la sobreasignación de memoria:

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

En este caso, tener "vm.overcommit_memory" establecido en 2 significa que no hay una sobreasignación de memoria. Esto falla cualquier asignación de memoria que supere el límite de sobreasignación. No se permite que el espacio total de direcciones asignado para el sistema supere el intercambio + una cantidad configurable (el valor predeterminado es 50 %) de RAM física. Cuando esta configuración está en 0, rechaza las solicitudes de sobreasignación obvias, pero los procesos raíz pueden asignar por encima del límite de sobreasignación. 

Para comprobar el límite de sobreasignación actual y la cantidad confirmada, consulte CommitLimit y Committed_AS, respectivamente, en el siguiente comando:

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

Hay 8 GB de RAM en este host y el CommitLimit está configurado en ~4 GB, que es el 50 % del espacio total de direcciones.

 

Para solucionar este problema, agregue/edite una de las siguientes opciones en /etc/sysctl.conf:

 - Cambie "vm.overcommit_ratio" a 100, para que el sistema operativo pueda confirmar el espacio total de direcciones disponible y reiniciar.

Para obtener más información sobre estos ajustes, consulte la documentación del kernel de Linux sobre 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.