Archive for the ‘VMware’ Category
Windows Server 2008 und die winload.exe [Update]
Vorsicht ist geboten, wenn versucht wird die Boot-Partition eines »Windows Server 2008« größer zu ziehen. Als ich heute auf einer frisch eingerichteten VM die Festplatte von 30 auf 80GB vergrößert hatte und die Partition mit dem »Acronis Disk Director 10« angepasst hatte, meldet sich der »Windows-Start-Manager« mit der Fehlermeldung:
Datei: \Windows\system32\winload.exe
Status: 0xc000025
Info: Der ausgewählte Eintrag konnte nicht geladen werden, da die Anwendung fehlt oder beschädigt ist.
Problem ist hierbei möglicherweise eine Signatur, die durch den Fremdeingriff zerstört wird. Ganz klar ist mir der technische Hintergrund hierbei aber noch nicht – weitere Informationen sind an dieser Stelle erwünscht, sollte sie jemand liefern können. Über die Windows-CD lässt sich dieses Problem glücklicherweise aber über die »Eingabeaufforderung« der »Computerreparaturoption« folgendemaßen beheben:
1 2 3 | bcdedit /set {bootmgr} device boot bcdedit /set {default} device boot bcdedit /set {default} osdevice boot |
Nachzulesen ist das Problem ebenfalls in Matthew Cosier’s Blog. Weitere Details hierzu sind in den folgenden Screenshots zu erkennen:
Update 2010-01-14: Der gleiche Fehler unter Windows 7
Heute ist mir meine Windows 7 Sandbox zu klein geworden. Eine Vergrößerung der Boot-Partition, ebenfalls mit »Acronis Disk Director 10«, brachte unter »Windows Seven« das gleiche Problem. Auch hier aber hilft ein kurzes Booten der Installations-CD und die »Computerreparaturoption«, um das Problem in den Griff zu bekommen. Anders als bei dem »Windows Server 2008« aber erkennt die Reparatur direkt, dass ein Problem besteht und fragt, ob es behoben werden soll. Man spart sich also die Tipparbeit
Ein Tipp von j-zero war die Nutzung von »GParted« für die Partitionsänderungen. Der nächste Versuch wird also mit Hilfer einer »Ubuntu Desktop CD« durchgeführt (hier ist »GParted« direkt aufrufbar). Sollte die kostenlose Software hier tatsächlich wieder einmal die Nase vorn haben?
Betriebssystem Icons im Virtual Center
Wer den ESX-Server noch aus alten Zeiten kennt, erinnert sich auch noch an die Icons vor der virtuellen Maschine, welche Hinweise auf das eingesetzte System gegeben haben. Im Virtual Center hatte ich diese zu Anfang tatsächlich vermisst, mich aber später nicht mehr daran gestört. Auf der Website von »H9Labs« habe ich heute Morgen ein VI3-Plugins namens »GuessMyOS« gefunden, dass genau diese Funktion ins Virtual Center zurückbringt. Auf der Suche war ich ursprünglich nach der aktuellen Version von dem Storage VMotion Plugin »SVMotion«, hier hatte sich seit dem 15.6.2008 allerdings nichts mehr geändert an der Version. Wer SVMotion noch nicht einsetzt sollte sich dieses Plugin natürlich ebenfalls angucken.
Ping auf einen TCP-Port
Da soll also ein kritischer Server, der unter VMWare in der DMZ läuft, per VMotion verschoben werden. Nur wie wird das Ganze überwacht? Im Normalfall lasse ich hier einen Ping laufen, einfach um zu sehen, dass das Zielnetz auf dem neuen Host auch vernünftig durchgereicht wird und der Server durchgehend erreichbar bleibt. Per ICMP-Echo ist die gute Maschine in der DMZ aber nicht erreichbar, also per WHILE-Schleife ein »Ping« auf Port 80. So die einfache Idee, leicht erweitert sollte das folgende Script in keiner Tools-Sammlung fehlen:
tcpping.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/sh if [ $# != 2 ]; then echo "Usage: $0 <HOST> <PORT>" exit 1 fi i=0 while (true) do TIME=`date +%s%N| cut -c -13` SCAN=`nmap -P0 -p$2 $1` if [ $? != 0 ]; then exit 1; fi echo $SCAN |grep open >/dev/null if [ $? != 0 ]; then echo tcp ping from $1 port $2: tcp_seq\=$i time\=$(($((`date +%s%N| cut -c -13`-$TIME))))ms timeout else echo tcp ping from $1 port $2: tcp_seq\=$i time\=$(($((`date +%s%N| cut -c -13`-$TIME))))ms fi sleep 1 i=$((i+1)) done |
j-zero, der bei der Umsetzung geholfen hat, wird das Script sicherlich noch um das eine oder andere Feature erweitern.
Ubuntu Hardy auf IBM Blade HS21 XM (7995)
Wer Ubuntu Hardy (8.04) nativ auf einem IBM Blade vom Typ HS21 XM (7995) einsetzt, sollte einmal überpüfen, ob das System bei Volllast nicht unerwartet in einen Freeze läuft. Bei uns ist dies nun zum 2. Mal aufgetreten (siehe Bild), beim ersten Mal hatte der Blank-Screen den Absturzgrund erfolgreich verstecken können, Logeinträge bleiben hier natürlich ebenfalls aus. Da es sich um keinen Hardwarefehler handelt, hüllt sich ebenfalls auch das Eventlog vom Bladecenter in Schweigen.
Der »Konsolen-Bildschirmschoner« lässt sich über folgenden Eintrag in der »/etc/rc.local« abschalten (hinterher muss natürlich entweder neu gestartet oder »/etc/rc.local« einmalig manuell über tty1 ausgeführt werden):
1 | /bin/sh -c 'setterm -blank 0 -powersave off -powerdown 0 < /dev/console > /dev/console 2>&1' |
Kurze Zeit später ist der Fehler erneut aufgetreten, das hängende »htop« hat noch 3 CPU-Kerne auf 100% angezeigt, in der Console war folgender Fehler zu erkennen (siehe auch Bild):
1 2 3 4 5 6 | Uhhuh. NMI received for unknown reason 00 on CPU 2. Do you have a strange power saving mode enabled? Dazed and confused, but trying to continue Uhhuh. NMI received for unknown reason 00 on CPU 3. Do you have a strange power saving mode enabled? Dazed and confused, but trying to continue |
Um den Fehler nun zu umgehen, wird der Kernelaufruf um die Parameter »nmi_watchdog=0 nohpet« ergänzt. Die Kernelparameter werden dafür in der Datei »/boot/grub/menu.lst« folgendermassen editiert:
1 | # kopt=nmi_watchdog=0 nohpet root=UUID=abcdefgh-ijkl-1234-mnop-qrstuvwxyz ro |
Im Anschluss wird die menu.lst über »update-grub« aktualisiert, das System kann neu gestartet werden und sollte nun auch unter Volllast stabil laufen. Bei mir tut es dies nun seit 3 Tagen.
Nur mal schnell die VM vergrößern…
Tja es hätte so einfach werden können. Da heute Abend noch etwas Zeit war, dachte ich, jetzt wo die Besucherzahl gering ist, schnell die Zeit nutzen und den in den letzten Wochen langsam an der Last zu erdrücken drohenden Intranet-Webserver, welcher natürlich unter VMWare ESX läuft, vergrössern. Konkret wollte ich den RAM von 2GB auf 4GB und die CPU Anzahl von 2 auf 4 erhöhen. Um die Downtime zu überbrücken habe ich also am vorgelagerten »Apache« auf den Backupserver umgeschaltet und meinen unter »Ubuntu Hardy« laufenden Apache- und MySQL-Server neu gestartet. Doch was ist jetzt? »fsck« hängt bei 14% fest und die VM ist nicht mehr bedienbar, weder ein Reset noch ein PowerOff möchte gelingen. Ein kurzes Warten, ob sich die Situation von alleine auflöst, bliebt leider ohne Erfolg. Wie bekomm ich den Prozess jetzt beendet, es laufen ja noch einige weitere VMs auf dem ESX-Host. Kein Problem, einfach per SSH auf die ESX-Konsole und die »PID« des hängenden Prozesses heraussuchen:
1 | ps -efww |grep NAME_DER_VM |
»-ww« steht für »wide output« und bewirkt hier doppelt angewandt, dass die Prozess-Zeile komplett angezeigt wird. Nötig wird das, da der Name der VM erst am ganz am Ende der Ausgabe erscheint. Wenn die VM also tatsächlich läuft, was bei mir zum Glück der Fall war, dann sollte die Ausgabe wie folgt aussehen:
1 2 | [root@vmsrv23 root]# ps -efwwww |grep NAME_DER_VM root 3860 1 0 21:13 ? 00:00:00 /usr/lib/vmware/bin/vmkload_app /usr/lib/vmware/bin/vmware-vmx -ssched.group=host/user/pool7 -# name=VMware ESX Server;version=3.5.0;licensename=VMware ESX Server;licenseversion=2.0 build-110268; -@ pipe=/tmp/vmhsdaemon-0/vmxe39878b26a66f524; /vmfs/volumes/48f48c83-8806305e-1616-001a645a7d7c/NAME_DER_VM/NAME_DER_VM.vmx |
Die in der Ausgabe angezeigte PID, in diesem Beispiel »3860« wird einfach über ein:
1 | kill -9 3860 |
terminiert. Bei mir war die Option »-9« aber noch nicht einmal nötig.
Gut nun folgte noch ein weiterer Versuch, allerdings hing »fsck« hier erneut, so dass ich versucht hatte die VM über das Virtual Center zu clonen. Der Clone zog sich hin (~1Std), wurde aber erfolgreich erstellt – beim Starten allerdings das Gleiche: »fsck« hängt, die CPU-Auslastung der VM liegt dabei bei 100%. 10 Minuten warten, aber nichts passiert.
Die nächste Idee also, eine neue HDD an die VM hängen und mittels Knoppix die Daten übertragen und das scheinbar defekte »VMDK« entsorgen. Ein Fehler im VMFS bzw. auf dem gesamten Datastore schloss ich aus, da der Clone bereits auf einem anderen Bereich erstellt wurde. Unter Knoppix lief das »fsck« übrigens durch, auch die VM lief hinterher wieder hoch und schien in Ordnung. Da die VM aber nach einem Stromausfall schon einmal Probleme gemacht hatte (der Snapshot vom vRanger-Backup konnte nicht wieder entfernt werden) habe ich die Platte unter Linux mit Hilfe von »rsync« geclont und das alte VMDK prophylaktisch doch komplett entsorgt.
You are currently browsing the archives for the VMware category.
