PowerFlex: MDM-vaihto epäonnistuu muistinvarausvirheiden vuoksi – mos_MemMalloc
Summary: Kun vaihdat MDM:n omistajuutta (manuaalisesti tai muuhun), vastaanottava MDM ei voi muodostua oikein, koska muistin varaus epäonnistuu, eikä klusterissa ole ensisijaista MDM:ää.
Symptoms
Vastaanottavan MDM:n /opt/emc/scaleio/mdm/bin/showevents.py tapahtumien tulosteessa on useita merkintöjä, joiden avulla voidaan yrittää ottaa hoitaakseen ensisijaisen MDM:n vastuut. Kaikki lyhyen ajan sisällä toisistaan:
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.
Vastaanottavan MDM:n exp.0-tiedostossa on seuraavanlaisia merkintöjä:
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-tiedosto näyttää MDM-palvelun useat uudelleenkäynnistykset samalla tavalla kuin 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
Resolution
Tämä ei ole ScaleIO:n ongelma. ScaleIO toimii suunnitellusti.
Voit tarkistaa ja/tai muokata vm.overcommit-asetuksia seuraavasti:
1. Kirjaudu SDS:ään SSH:n ollessa pääkäyttäjänä
2. Suorita
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, Suorita seuraavat komennot.
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
Validointi
[root@sds-node logs]# cat /etc/sysctl.conf | grep "vm.overcommit" vm.overcommit_memory = 2 vm.overcommit_ratio = 100
Toista nämä vaiheet kaikille ympäristön käyttöturvallisuustiedotteille, joihin ongelma vaikuttaa, ja varmista, että niiden asetuksena ovat suositellut parhaiden käytäntöjen asetukset. Sinun ei tarvitse asettaa käyttöturvallisuustiedotetta huoltotilaan tämän toiminnon suorittamiseksi.
Lisätietoja näistä asetuksista on Linux-ytimen dokumentaatiossa ylivarauskirjanpidosta
Additional Information
Tarkista sysctl-ytimen parametrit muistin ylisitoutumisen varalta:
# sysctl -a |grep commit vm.overcommit_memory = 2 (default is 0) vm.overcommit_ratio = 50 (default is 50)
Tässä tapauksessa, kun "vm.overcommit_memory" on asetettu arvoon 2, älä sitoudu muistiin liikaa. Tällöin muistin varaus, joka ylittää ylivarausrajan, epäonnistuu. Järjestelmän kokonaisosoitetilan vahvistus ei saa ylittää swap + määritettävissä oleva määrä (oletus on 50%) fyysistä RAM-muistia. Kun tämä asetus on 0, se estää ilmeiset ylivarauspyynnöt, mutta pääprosessit voivat kohdistaa ylivarausrajan yli.
Jos haluat tarkistaa nykyisen ylisitoutumisrajan ja sidotun summan, katso CommitLimit ja Committed_AS vastaavasti seuraavasta komennosta:
#cat /proc/meminfo MemTotal: 8174572 kB .. CommitLimit: 4087284 kB Committed_AS: 3879388 kB
Tässä isännässä on 8 Gt RAM-muistia, ja CommitLimit-arvoksi on asetettu ~4 Gt, joka on 50 % koko osoitetilasta.
Voit korjata tämän ongelman lisäämällä tiedostoon /etc/sysctl.conf jonkin seuraavista:
- Muuta "vm.overcommit_ratio" arvoon 100, jotta käyttöjärjestelmä voi vahvistaa käytettävissä olevan osoitetilan ja käynnistää uudelleen.
Lisätietoja näistä asetuksista on Linux-ytimen dokumentaatiossa ylivarauskirjanpidosta