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を使用してroot

2としてSDSにログインします。そのノードで 

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

このホストには 8 GB の RAM があり、CommitLimit は ~4 GB に設定されています。これは合計アドレス空間の 50% です。

 

この問題を解決するには、/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.