Hosts, welche von SAN booten, oder von USB-Flash Medien, erstellen kein dauerhaftes Scratch Verzeichnis. Statt dessen wird der Pfad /tmp/Scratch in die RAMDisk gemappt. Nachteil an der Sache ist, daß die dort abgelegten Logdaten und Coredumps bei jedem Bootvorgang verloren gehen. Das ist natürlich besonders bei der Fehlersuche ein Problem.
Syslog
Zunächst ist es nötig hier zwei Dinge zu trennen: Syslog und Scratch. Im Standard werden auf solchen Systemen neben den Coredumps auch die Systemlogs im Scratch Verzeichnis abgelegt.
Logdaten kann man auf zwei Arten umleiten. Ein globales Logverzeichnis auf persistentem Datenspeicher, oder auf einen Syslog-Server.
Lokaler Logstore
Unter den erweiterten Eigenschaften (Host > Configure > System > Advanced System Settings) wählt man die Bearbeitung mit “Edit” und sucht nach LogDir.
Unter Syslog.global.LogDir Wird der globale Logspeicher definiert.
Eingabe im Format [Datastore01]logstore. Die eckigen Klammern müssen mit eingegeben werden. Mit logstore wird der Ordner auf dem jeweiligen Datenträger benannt.
Möchte man, dass jeder Host unterhalb vom Verzeichnis logstore einen eigenen Unterordner verwendet, so sollte man den Parameter Syslog.global.logDirUnique auf “true” setzen bzw. im Web-Client die entsprechende Checkbox setzen.
Syslog Server
Als Alternative zum globalen Logverzeichnis kann auch ein Syslog-Server als Ziel angegeben werden. Standard ist eine UDP verbindung mit Defaultport 514. Unter Syslog.global.LogHost wird die Adresse des Syslog Servers eingetragen.
udp://mysylogsrv.mydomain.local:514
Alternativ kann auch das Protokoll TCP oder SSL verwendet werden.
tcp://mysylogsrv.mydomain.local:514
ssl://mysylogsrv.mydomain.local:514
Scratch
Eine Umleitung der Syslog Daten hat keine Auswirkung auf die Ablage der Core-Dumps. Diese werden weiterhin unter Scratch (in der RAMDisk) abgelegt. Es ist daher empfehlenswert, auch das Scratchverzeichnis auf dauerhaften Datenspeicher umzulegen. Besonders geeignet sind hier z.B. NFS Volumes, auf welche man notfalls auch ohne ESX-Server zugreifen kann. Ist kein NFS Speicher verfügbar, so kann man auch einen Ordner auf einem VMFS Datastore verwenden. So lange nicht alle ESX Hosts gleichzeitig abstürzen ist dies auch kein Problem.
Verzeichnis Erstellen
Ein Scratch Verzeichnis kann man auf viele Arten erstellen. Entweder im vSphere-Client unter der Datastore Ansicht (neuen Ordner erstellen), oder auf der SSH-Shell mit dem mkdir Befehl.
Wichtig! Jeder Host benötigt ein eigenes Scratch Verzeichnis!
Im Beispiel erstelle ich auf dem ersten VMFS Datastore [Datastore01] einen Ordner [Scratch], unter dem die Ordner für jeden ESX-Host angelegt werden. Diese erhalten Namen, die eindeutig mit dem Host verbunden sind und einen führenden Punkt habe. Somit bleiben sie in der normalen Ansicht ausgeblendet.
cd /vmfs/volumes/Datastore01
mkdir Scratch
cd Scratch
mkdir .locker-esx1.mydomain.local
mkdir .locker-esx2.mydomain.local
Damit sind die Verzeichnisse angelegt und können nun dem Host bekannt gemacht werden. Dazu wählt man in der Ansicht Host und Cluster einen ESX Host und geht in die Erweiterten Systemeinstellungen (Konfiguration > System > Erweiterte Systemeinstellungen). Die Bearbeitung aktiviert man mit “Edit” und sucht nach dem Schlüsselwort “scratch”. Der Filter gibt in der Regel zwei Einträge zurück.
- ScratchConfig.ConfiguredScratchLocation
- ScratchConfig.CurrentScratchLocation
Befindet sich der Scratch in der RAMDisk, so ist kein Wert für ConfiguredScratchLocation definiert. Unter CurrentScratchLocation steht dann zumeist der Pfad /tmp/scratch.
Unter ScratchConfig.ConfiguredScratchLocation muss nun der komplette Pfad zum Scratch Verzeichnis des Hosts eingegeben werden.
Beispiel: /vmfs/volumes/Datastore01/Scratch/.locker-esx1.mydomain.local
Alternativ auch der UID Name des Datenspeichers: /vmfs/volumes/5c195cad-2a78dea0-b69a-0019999ca679/Scratch/.locker-esx1.mydomain.local
Damit diese Einstellung wirksam wird, muss der Host neu gestartet werden. Wenn zwischen Änderung und Neustart mehr als 12 Stunden vergehen, kann es sein dass der Eintrag wieder unwirksam wird. Nach dem Neustart sollte der konfigurierte Wert unter CurrentScratchLocation hinterlegt sein.