VMware Memory Swap Files im Datastore

Nachdem VMs immer größer dimensioniert werden, steigt auch der Speicherbedarf der Swap-Files.

Im Grunde sogar in doppelter Ausprägung, da ja zum einen das OS in der VM selbst ein Swap-File anlegt (pagefil.sys / swapping partition) und außerdem noch einmal ein Swap-File auf Hypervisor-Ebene angelegt wird.

Ärgerlich ist das zB. in All-Flash Storage Konfigurationen, wo den Servern eigentlich genügend Ressourcen zur Verfügung stehen.

Hier eine kurze Anleitung wie man das ändern kann. Ich merke bei meinen Kundenterminen immer wieder, dass vielen Admins dieses Verhalten nicht wirklich bewusst ist.

VMware Memory Swap Files im Datastore weiterlesen

Howto: Multiprotokoll NAS Server mit einer EMC² Unity

Hallo zusammen,

ich stecke im Moment in einem kleinen Projekt mit einer Unity.

Der Kunde möchte einen NAS Server einrichten worauf er gleichzeitig mit SMB und NFS zugreifen kann.

Die Anforderung ist eigentlich nicht so kompliziert:

  • Mehrere Windows User müssen auf den Share R/W Zugriff haben.
  • Ein Linux Service-User muss ebenfalls Zugriff via NFS erhalten.

Howto: Multiprotokoll NAS Server mit einer EMC² Unity weiterlesen

EMC² Unity – Thick Provisioning

Letzte Woche wurde ich von einem Kunden gefragt, wie man mit der Unity eigentlich eine „Thick“-LUN anlegt. Das GUI lässt schließlich nur „Thin“-Provisioning zu.

Die Antwort findet man nicht im GUI. Ein möglicher Weg führt aber über das Tool uemcli.exe. Und so wird es gemacht.

EMC² Unity – Thick Provisioning weiterlesen

Docker Volume Mappings

Als Vorbereitung auf einen Beitrag zum Thema Persistent Storage mit dem entsprechenden Netapp-Plugin möchte ich noch kurz darauf eingehen, wie man mit Bordmitteln ein persistentes Storage für einen Container bereitstellen kann.

Braucht man ein persistentes Storage oder nur ein Shared Storage für eine Applikation, welche in einem Docker Container läuft, kommt man fast nicht an Volume Mappings vorbei.

Mit Vollume Mappings kann man auf einem einfache Wege lokale Filesystem-Ressourcen in einem Container verfügbar machen.

Das Volume Mapping ist ähnlich anzuwenden wie das Device Mapping aus meinem letzten Artikel. Man muss lediglich beim startendes Containers die folgende Option mitgeben.

-v /lokales/verzeichnis/:/container/verzeichnis

Wie der Name Volume-Mapping schon verrät, mappt diese Option einfach das Verzeichnis vom Docker-Host in das Zielverzeichnis im Container.

Ein komplettes Kommando könnte so aussehen:

docker run -d -v /mnt/data01/www:/www nginx

„/mnt/data01/www“ könnte zB. eine gemountete LUN oder so sein. Der Ordner „www“ wird direkt als „/www“ im Container präsentiert, wo die Applikation dann entsprechend zugreifen kann.

Sichern sollte man das Verzeichnis am Docker-Host selbst.

Bis demnächst.

 

Liebe Grüße

Falk

Docker Device Mappings

Ich tauche im Moment ins letzte Jahrtausend ab und automatisiere Abläufe, welche nicht über IP Kommunikation abbildbar sind. 🙂

Der erste Pilot dafür lief auf einem Raspberry Pi:


Darauf lief ein Expect-Script, welches sich an der Minicom bediente und automatisch gewisse Sachen ausführte.

Jetzt wollten wir das Ganze auf einen Server bringen und das Ganze funktionierte nicht mehr wie vorher. Nach einiger Recherche kamen wir dahinter, dass am Raspberry eine aktuellere Version der Minicom installiert war.

Am Server läuft CentOs und irgendwie war ich unfähig, die Minicom auf das gleiche Release wie am Pi zu bringen. 🙁

Ich dachte kurz an Docker und schaute, ob man nicht die ttyUSB0 in den Container bringen kann. Ergebnis: ja, man kann. Und es ist einfacher als gedacht:

docker run --device=/dev/ttyUSB0 *Imagename*

Nachher taucht im Container die ttyUSB0 auf. Eigentlich nicht kompliziert, oder?

root@faadd9042d8b:/# ll /dev/tty*
crw-rw-rw- 1 root root   5, 0 Feb 20 08:20 /dev/tty
crw-rw---- 1 root   18 188, 0 Feb 20 08:41 /dev/ttyUSB0

Also schnell ein Ubuntu Image gestartet, die Minicom und Expect entsprechend installiert und schon lief es wieder.

Vielleicht ist es ja für jemanden nützlich …

Nachtrag:
Man kann auch die ttyUSB1 auf ttyUSB0 mappen.

--device=/dev/ttyUSB1:/dev/ttyUSB0

Dh. die ttyUSB1 vom Docker-Host wird im Container als ttyUSB0 nutzbar.

Liebe Grüße

Falk

MCP Cloud Automation mit PowerShell

PowerShell erfreut sich großer Beliebtheit. Fast jeder Admin hatte in den letzten Jahren Berührungspunkte mit dieser Scriptingsprache. Kein Wunder, man kann damit wunderbar automatisieren.

Auch unsere Cloud-Services lassen sich damit administrieren. Aktuell schreibe ich ein kleines Script für das automatische Rollout von Backup-Agents.

Das bringt mich zu diesem Blog-Post, denn ich möchte nur kurz demonstrieren wie schnell man tägliche Tasks mit unseren PowerShell-Modulen automatisieren kann.

Log geht’s.

MCP Cloud Automation mit PowerShell weiterlesen

IT Konferenzen 2017

Ich habe jetzt einmal die Liste der Konferenzen auf 2017 aktualisiert.

Hier also wieder die Liste vom letzten Jahr (Sortierung wertfrei :-))

IT Konferenzen 2017 weiterlesen

MCP Usage Reports automatisch erstellen

Weil wir gerade so eine Anfrage haben, möchte ich kurz darüber schreiben.

Man kann in der Dimension Data Cloud einen Usage Report über die Admin-UI erstellen. Dabei wird ein CSV-File generiert, welches dann weiter verarbeitet werden kann.

MCP Usage Reports automatisch erstellen weiterlesen

ESXCLI Commands mit PowerCLI ausführen

Hallo,

aktuell ist die Hölle los, weshalb hier auch weniger neue Beiträge landen.

Das hier fande ich jetzt aber so lässig, dass ich mich trotzdem kurz hinhocken musste um etwas darüber zu schreiben.

Konkret geht es darum, ESXCLI Befehle via PowerCLI (also PowerShell) auf ESX-Hosts auszuführen. Wie geht das? Genau so:

$esxcli = Get-EsxCli -VMHost 1.1.1.1

$esxcli

====================
EsxCli: 1.1.1.1

   Elements:
   ---------
   esxcli
   fcoe
   hardware
   iscsi
   network
   software
   storage
   system
   vm

Wie kann man das verwenden?

$esxcli.network.nic.list()

Description : Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
Driver      : e1000
Duplex      : Full
Link        : Up
MACAddress  : 00:0c:29:80:f9:a0
MTU         : 1500
Name        : vmnic0
PCIDevice   : 0000:002:01.0
Speed       : 1000

Nachdem man mit ESXCLI ja bekanntlich nicht nur Abfragen starten kann, sondern auch Konfigurationen verändern kann.

Hier nur ein Beispiel. Zunächst holen wir mal die Config:

$esxcli.system.syslog.config.get()


DefaultNetworkRetryTimeout : 180
DefaultRotationSize        : 1024
DefaultRotations           : 8
LogOutput                  : /scratch/log
LogToUniqueSubdirectory    : false
RemoteHost                 : <none>

 

$esxcli.system.coredump.network.set

TypeNameOfValue     : VMware.VimAutomation.ViCore.Util10Ps.EsxCliExtensionMethod
OverloadDefinitions : {boolean set(boolean enable, string interfacename, string serveripv4, long serverport)}
MemberType          : CodeMethod
Value               : boolean set(boolean enable, string interfacename, string serveripv4, long serverport)
Name                : set
IsInstance          : True

Genau in dieser Reihenfolge können wir jetzt das „SET“ starten:

$esxcli.system.syslog.config.set(8,1024,180,"/scratch/log",$false,"1.1.1.2")
true

Kontrolle mit GET:

$esxcli.system.syslog.config.get()

DefaultNetworkRetryTimeout : 180
DefaultRotationSize        : 1024
DefaultRotations           : 8
LogOutput                  : /scratch/log
LogToUniqueSubdirectory    : false
RemoteHost                 : 1.1.1.2

Hier gibt es eine Übersicht über alle möglichen ESXCLI-Commands:

How to list all the PowerCLI ESXCLI commands

Durchaus nützlich in meinen Augen. Was meint ihr?

 

Bis demnächst.

 

Liebe Grüße

Falk