Fujitsu ServerView ESXi CIM Provider müllt ESXi Ramdisk zu

Jan 06 2019

Mit der Installation der neuen Fujitsu ServerView ESXi CIM Provider in der Version 8.51.02 auf ESXi 6.7 GA erlebt man nach ein paar Tagen eine nette Überraschung.

Das SSH Service "verstirbt" plötzlich, ebenso hat der sfcbd-watchdog Probleme.
Nach einer kurzen Suche auf der ESXi Shell habe ich herausgefunden, die Ramdisk ist voll.

vdf -h 
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M       32M        0B 100% --
etc                        28M      352K       27M   1% --
opt                        32M        7M       24M  23% --
var                        48M      480K       47M   0% --
tmp                       256M       28K      255M   0% --
iofilters                  32M        0B       32M   0% --
shm                      1024M        0B     1024M   0% --
hostdstats               2053M        4M     2048M   0% --
snmptraps                   1M        0B        1M   0% --

 Mit cd / und ls -lah sieht man dann diese Datei

-rw-r--r--    1 root     root       28.5M Jan 10 02:34 PrimeCollect_Data.tgz

Nachdem unser VMware Mann gerade zufällig online war, habe ich mal kurz nachgefragt, ob er so etwas schon mal gesehen hat.
Wir haben uns dann das Problem gemeinsam angesehen und das Problem gefunden.

Scheinbar wird bei der Installation der ServerView ESXi CIM Provider ein cronjob angelegt, welcher täglich gegen 2:00 Uhr ein PrimeCollect in /tmp erzeugt.

less /var/spool/cron/crontabs/root
#min hour day mon dow command
1 1 * * * /sbin/tmpwatch.py
1 * * * * /sbin/auto-backup.sh
0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5 * * * * /bin/hostd-probe.sh ++group=host/vim/vmvisor/hostd-probe/stats/sh
00 1 * * * localcli storage core device purge
0 2 * * * /opt/fts/bin/prcoll-vm-support.sh


Der letzte Eintrag dürfte vom ServerView CIM Provider kommen, also gleich mal auskommentiert und die Datei gelöscht.

rm PrimeCollect_Data.tgz


Danach haben wir uns mal kurz das Script angesehen

#!/bin/sh
# $Copyright$     NB: This is an auto-generated comment with copyright note below. DO NOT MODIFY OR REMOVE!
# Copyright 2017-2018 FUJITSU LIMITED
# All rights reserved
#

#
# Copyright 2017 FUJITSU LIMITED
# All rights reserved
#
#  prcoll-vm-support.sh:
#     - create a vm-support file if requested
#

ACTIVE_FILE=/tmp/prcoll-vm-support-active
RESULT_FILE=/tmp/prcoll-vm-support-completed

if [ ! -e "$ACTIVE_FILE" ];then
  >$ACTIVE_FILE
  XX=$(ls -d /vmfs/volumes/datastore* | head -n 1)
  YY=$(ls -la "$XX"|/bin/awk '{ print $12 }')
  if [ -n "$YY" ];then
      RESULT_FILE=/vmfs/volumes/$YY/PrimeCollect_Data.tgz
  else
      RESULT_FILE=$XX/PrimeCollect_Data.tgz
  fi

  /bin/vm-support -s >"$RESULT_FILE"

  if [ -s "$RESULT_FILE" ];then
      /bin/logger -t prcoll-vm-support "file $RESULT_FILE written"
      /bin/rm -rf /tmp/PrimeCollect_Data.tgz
      ln -s "$RESULT_FILE" /tmp/PrimeCollect_Data.tgz
  else
      echo "ERROR" >> "$RESULT_FILE"
  fi
  /bin/rm  "$ACTIVE_FILE"
else
  echo "*** The job is already running. ***"
fi


Unser VMware Mann hat den Fehler schnell gefunden 

ls -d /vmfs/volumes/datastore* | head -n 1


Hier werden alle Datastores aufgelistet und nur der erste Wert zurück gegeben.
Leider beginnen die Namen unserer Datastores nicht mit "datastore" daher gibt es auch kein Ergebnis.

ls -d /vmfs/volumes/datastore* | head -n 1
ls: /vmfs/volumes/datastore*: No such file or directory

ls -d /vmfs/volumes/* | head -n 1
/vmfs/volumes/591da739-bc883768-05b7-001999ed17e9

Damit erzeugt dann das Script unter /tmp einen Symlink für die PrimeCollect.tgz Datei welcher auf / zeigt. 
Dadurch wird dann irgendwann die Ramdisk voll und der ESXi findet das nicht so prickeln.

Ich habe dazu mal einen Support Request bei Fujitsu geöffnet, mal sehen was die Jungs (und Mädels) dazu sagen.