PowerFlex: MDM-switchover mislukt door geheugentoewijzingsfouten - mos_MemMalloc
Summary: Bij het wisselen van MDM-eigendom (handmatig of anderszins) kan de ontvangende MDM niet correct worden weergegeven vanwege fouten in de geheugentoewijzing, waardoor het cluster geen primaire MDM heeft. ...
Symptoms
De gebeurtenis-uitvoer van de ontvangende MDM /opt/emc/scaleio/mdm/bin/showevents.py heeft meerdere vermeldingen voor het overnemen van primaire MDM-verantwoordelijkheden, allemaal binnen een korte tijd na elkaar:
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.
Het exp.0-bestand van het ontvangende MDM bevat de volgende items:
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]
In het bestand /var/log/messages wordt weergegeven hoe de MDM-voorziening meerdere keren opnieuw wordt opgestart terwijl de events.txt het volgende doet:
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
Resolution
Dit is geen probleem met ScaleIO. ScaleIO werkt naar behoren.
Volg deze stappen om de instellingen voor vm.overcommit te controleren en/of te wijzigen:
1. Meld u aan bij de SDS met SSH als root
2. Voer
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, Voer de volgende opdrachten uit.
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
Validering
[root@sds-node logs]# cat /etc/sysctl.conf | grep "vm.overcommit" vm.overcommit_memory = 2 vm.overcommit_ratio = 100
Herhaal deze stappen op alle betrokken SDS-exemplaren in de omgeving om ervoor te zorgen dat ze zijn ingesteld op de aanbevolen best practice-instellingen. U hoeft de SDS niet in de onderhoudsmodus te zetten om deze bewerking uit te voeren.
Voor meer informatie over deze instellingen, zie de Linux Kernel documentatie over overcommit-accounting
Additional Information
Controleer de sysctl kernel parameters op overcommit van het geheugen:
# sysctl -a |grep commit vm.overcommit_memory = 2 (default is 0) vm.overcommit_ratio = 50 (default is 50)
In dit geval betekent het instellen van "vm.overcommit_memory" op 2 dat het geheugen niet te veel wordt ingezet. Hiermee mislukt elke geheugentoewijzing die de overcommitteringslimiet overschrijdt. De totale adresruimte voor het systeem mag niet groter zijn dan de swap + een configureerbare hoeveelheid (standaard is 50%) van het fysieke RAM. Wanneer deze instelling op 0 staat, worden duidelijke overcommit-aanvragen geweigerd, maar rootprocessen mogen boven de overcommit-limiet worden toegewezen.
Zie CommitLimit en Committed_AS van de volgende opdracht om de huidige overcommitteringslimiet en het toegezegde bedrag te controleren:
#cat /proc/meminfo MemTotal: 8174572 kB .. CommitLimit: 4087284 kB Committed_AS: 3879388 kB
Er is 8 GB RAM op deze host en de CommitLimit is ingesteld op ~4 GB, wat 50% van de totale adresruimte is.
Om dit probleem op te lossen, kunt u een van de volgende dingen toevoegen/bewerken in /etc/sysctl.conf:
- Wijzig "vm.overcommit_ratio" in 100, zodat het besturingssysteem de totale beschikbare adresruimte kan vastleggen en opnieuw kan opstarten.
Voor meer informatie over deze instellingen, zie de Linux Kernel documentatie over overcommit-accounting