VMware – VMs mit PowerCLI/PowerShell provisionieren

Wir arbeiten aktuell an einem kleinen Projekt, in dem wir einige VM-„Placeholder“ erstellen müssen.

Konkret geht es um VMs ohne Disks. Man könnte das alles mittels GUI machen, allerdings gibt es da angenehmere Varianten. Hier eine kurze Herangehensweise wie man das mit der PowerCLI machen kann:

VMware – VMs mit PowerCLI/PowerShell provisionieren weiterlesen

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

NetApp Metrocluster Switchover FDISC Error mit Cisco MDS Switches

Ich hatte letztens ein kleines Problem… Wir haben in einem Setup einen NetApp MetroCluster mit Cisco MDS SAN Frontend aufgebaut. Eigentlich keine Hexerei, aber der Fehler liegt im Detail.

Im Falle eines Switchovers oder Switchbacks, verloren alle Hosts ihre Pfade und natürlich auch die LUNs, welche auf dem übernommenen Controller terminierten.

Der Fehler war schnell gefunden, die LIFs blieben einfach down.

Wir fanden dann diesen wunderbaren Artikel in der Knowledgebase: https://kb.netapp.com/support/s/article/ka11A0000001UmE/fcp-fcoe-lif-reports-operationally-down

Folgen wir also dem Guide:

network interface show -data-protocol fcp -fields status-admin,status-oper,status-extended



vserver lif status-oper status-extended status-admin
------------------ ---------------------- ----------- --------------- ------------
svm-*******01-mc *******_lif_1 down - up
svm-*******01-mc *******_lif_2 down - up
svm-*******01 *******_lif_1 down FDISC error - ID could not be acquired for this virtual port.
 up
svm-*******01 *******_lif_2 down FDISC error - ID could not be acquired for this virtual port.
 up
4 entries were displayed.

Interessant! Wir probierten herum und fanden schnell einen Workaround: einfach das Interface down und up setzen. Das Funktioniert … Lösung ist das aber keine.

Am MDS wurde auf Version 8.1.1 aktualisiert haben und es dabei offensichtlich ein paar neue Default gibt. Zumindest wird man beim Downgrade darauf hingewiesen:

Checking incompatible configuration(s)
The following configurations on active are incompatible with the system image
1) Service : flogi , Capability : CAP_FEATURE_FLOGI_SCALE_ENABLE
Description : flogi scale enabled on this switch
Capability requirement : STRICT
Enable/Disable command : no flogi scale enable

2) Service : flogi , Capability : CAP_FEATURE_FLOGI_QUIESCE_TIMEOUT
Description : flogi queisce timeout enabled on this switch
Capability requirement : STRICT
Enable/Disable command : flogi quiesce timeout 0



Checking dynamic incompatibilities:
-----------------------------------
No incompatible configurations

Irgendwie springt in diesem Fall diese Option ziemlich ins Auge: CAP_FEATURE_FLOGI_QUIESCE_TIMEOUT

Der Default Wert liegt in diesem Release bei:

show flogi internal info |inc quiesce
 Stats: fs_flogi_quiesce_timerval: 2000

Also schnell einen Versuch starten und mit dem folgenden Befehl auf einer der beiden Fabrics das Timeout wieder auf 0 setzen:

flogi quiesce timeout 0

Anschließend noch einmal einen Switchover/Switchback testen und viola … es funktioniert. 🙂

 

Ich hoffe das hilft jemanden weiter. Wir haben bisher keine Information dazu finden können.

 

 

Liebe Grüße

Falk

 

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

Ein paar Gedanken zur Datensicherung

Ich hatte vor einiger Zeit einen interessanten Termin. Das Thema war ein sehr leidiges … „Backup“.

Spannend war, dass alle am Tisch über Backup redeten, aber alle etwas anderes meinten. Es dauerte einige Zeit bis alle vom gleichen sprachen. Praktisch alle hatten unterschiedliche Anforderungen an ihr Backup.

Und nachdem letzte Woche der „World Backup Day“ war, möchte ich hier einen kleinen Fragebogen als Leitfaden bereitstellen:

Ein paar Gedanken zur Datensicherung 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