Windows Server Event 58 von partmgr (Die Signatur des Datenträgers …)

Problem

Dateisystems-Snapshots eines Windows-Gastsystems welche VSS nutzen (sollen) funktionieren nicht korrekt. Die jeweiligen VSS-Trigger geben eine wirre Fehlermeldung aus (vCenter Quiescence error/KVM Ruhelage fehler/Hyper-V Snapshot Abbruch). Das Gast-Windows zeigt im Ereignisprotokoll einen „Event 58“ von der Quelle „partmgr“. Der Inhalt lautet

Die Datenträgersignatur von Datenträger <foo> ist mit der Datenträgersignatur von Datenträger <bar> identisch.

Der Fehler im (zum Beispiel) vmware-Gastprotokoll lautet:

Beim Stilllegen der virtuellen Maschine ist ein Fehler aufgetreten.
Weitere Informationen finden Sie im Ereignisprotokoll der virtuellen Maschine.

Under den Details ergänzt sich dies noch um folgendes:

Das Gastbetriebssystem hat während der Stilllegung einen Fehler gemeldet.
Der Fehlercode lautet: 3 Die Fehlermeldung lautet: Error when notifying the sync provider.

Lösung(en)

Es gibt mehrere möglich Ursachen. Eine Lösung dieser Liste hat bei unseren Fehlern bisher immer geholfen, wenn das bei dir nicht helfen sollte, schreibe einen Kommentar. Wir sind neugierig was noch so gibt.

1. Doppelte SCSI-ID (vmware)

Eine Pfad-ID (nicht Disk-ID!) für ein virtuelles Laufwerk kann unter bestimmten, aber ziemlich wirschen, Bedingungen auch mehrfach vergeben werden. Zum Beispiel wenn eine Disk auf der ESX-Shell kopiert (Bit-Copy) oder via abgestürztem Transport-Proxy in Veeam gesichert werden sollte.

Lösung: Eine neue Pfad-ID erzeugen, indem das Laufwerk von der VM getrennt wird (nicht löschen!), das Fenster geschlossen und dann das Laufwerk mit einer neuen SCSI-ID wieder angehöngt wird. Dann gibt es es einen komplett neuen Pfad und Windows findet die Platte beim nächsten Reboot zuverlässig am „neuen“ Strang. Fehler behoben.

2. Doppelte Disk-ID

Es ist technisch möglich, das eine Disk-ID zweimal vergeben wird. Das passiert schon mal unbeabsichtigt bei P2V/V2V oder P2P vorgängen, oder wenn man den Haken bei „Volumenidentifizierung beibehalten“ setzt. In seltenen Fällen auch mal dazwischen, wenn dd im Spiel ist. Achtung: Unter Hyper-V und vmware betrifft das auch die Disk-ID von Remote-Laufwerken (SAN/NAS via FC und iSCSI, vor allem RAW) – also alles was der jeweilige Host „sehen“ kann.

Lösung: Eine neue Disk-ID vergeben. An einem Administrator-Prompt die passende Disk auswählen und mit uniqueid behandeln:

C:\>DISKPART
DISKPART> list disk
  Datenträger ###  Status         Größe    Frei     Dyn  GPT
  ---------------  -------------  -------  -------  ---  ---
  Datenträger 0    Online          949 GB  1024 KB
  Datenträger 1    Online         1965 GB  1024 KB
DISKPART> select disk 0
Datenträger 0 ist jetzt der gewählte Datenträger.
DISKPART> uniqueid disk
Datenträger-ID: 5044D2AF
DISKPART>

Um dise ID zu ändern:

UNIQUEID DISK ID=DEADBEEF

Möglicherweise bootet Windows danach nicht mehr freiwillig. Einfach von einem passenden Installationsdatenträger booten, die Kommandozeile öffnen und den BCD wieder auf die korrekte (neue) ID einschiessen lassen:

X:\SOURCES> bootrec /fixboot
X:\SOURCES> bootrec /scanos
X:\SOURCES> bootrec /rebuildbcd

Dann klappts auch wieder mit dem Windows.

3. Der Geist eines toten Volumens

Eventuell hängen im Gerätemanager („ausgebelndete Geräte anzeigen“) ja auch noch ein paar tote Volumen herum, die sich aber auch äußerst hartnäckig dem entfernen wiedersetzen. Diesen rückt man besten mit Microsoft DevNodeClean zuleibe. Seltsame Devices entfernen (lassen), Reboot und alles ist wieder gut.

  1. DevNodeClean bei Microsoft herunterladen
  2. An einer Administrativen Shell mit
    DevNodeClean /N

    die Devices auflisten (wenn nichts angezeigt wird, gibt es keine verwaisten Eintröge)

  3. Wenn notwendig, direkt an der Shell mit
    DevNodeClean

    die Devices entfernen. Der Erfolg lässt sich mit /N kontrollieren.

  4. Reboot, fertig 🙂

 

Exchange 2010: „Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein Archivpostfach oder ein Vermittlungspostfach …“

Problem

Eine Exchange 2010 Datenbank lässt sich nach einer Migration auf einen anderen Server (2010 odr 2013) nicht löschen. Es erscheint bei jemden Versuch folgende Fehlermeldung:

Die Postfachdatenbank  kann nicht gelöscht werden.

<Mailbox Database Name>
Fehler: Diese Postfachdatenbank enthält mindestens ein Postfach, einen Postfachplan, ein
Archivpostfach oder ein Vermittlungspostfach. Führen Sie den Befehl ‘Get-Mailbox -Database
<Database ID>’ aus, um eine Liste aller Postfächer in der Datenbank abzurufen. Führen
Sie den Befehl ‘Get-MailboxPlan’ aus, um eine Liste aller Postfachpläne in dieser
Datenbank abzurufen. Führen Sie den Befehl ‘Get-Mailbox -Database <Database ID>
-Archive’ aus, um eine Liste mit Archivpostfächern in dieser Datenbank abzurufen. Führen
Sie den Befehl ‘Get-Mailbox -Database <Database ID> -Arbitration’ aus, um eine Liste
aller Vermittlungspostfächer in dieser Datenbank abzurufen. Wenn Sie ein Postfach, bei dem
es sich nicht um ein Vermittlungspostfach handelt, deaktivieren möchten, um die
Postfachdatenbank löschen zu können, führen Sie den Befehl ‘Disable-Mailbox <Mailbox
ID> aus. [....]

Lösung

Es gibt einige System-Postfächer, die in einer Liste aus „get-mailbox“ nicht auftauchen. Das sind – in den meisten Fällen – das Systempostfach und das Organisations-Postfach „FederatedEmail“. Diese Postfächer werden aber auch in der ManagementConsole nicht (mehr) angezeigt.

Die Namen der Postfachdatenbanken liefert die Exchange-PowerShell mit:

Get-MailboxDatabase

Daraus kann man dann jeweils die betroffenen Postfächer anzeigen um sie zu verschieben (nein, pipen ist mit Arbitration nicht möglich, man muss kopieren+einfügen):

Get-Mailbox -Database "AlteDatenbank" -Arbitration | Select-Object Name | fl

Dann kann man diese einzeln verschieben:

New-MoveRequest -Identity "FederatedEmail.4c4c4c4foobar" -TargetDatabase "NeueDatenbank"

Exchange Server 2013 umbenennen

Problem

Kann ich meinen Exchange Server 2013 umbenennen?

Lösung

Offiziell von Microsoft gibt es zwei unterstütze Wege dieses Ziel zu erreichen. Erstens den Exchange deinstallieren, Windows umbenennen und Exchange wieder installieren. Zweitens einen zusätzlichen Exchange in dieselbe Organisation installieren, alles dorthin migrieren, den Quellserver deinstallieren, umbennen, Exchange wieder installieren und zurückmirgrieren.

tldr; Nein.

Windows Batch Ausgabeumleitung

Problem

CACLS, ICACLS und ähnliche Tools schreiben ihre Fehler-Ausgabe nicht wie gewohnt durch den Parameter „>“ in eine umgeleitete Pipe oder Datei. Auch mit „find“ lässt sich die Ausgabe nicht parsen, es kommen keine Daten an.

Lösung

Prinzipiell ganz nett ist die Idee, verschiedene Stdout’s zu verwenden, so wie das andere Betriebssysteme auch machen. Leider ist das nur sehr schlecht dokumentiert, uneinheitlich umgesetzt und praktisch an der Kommandozeile nicht auffindbar. So sehen die „neuen“ Redirectoren aus:

BEIDES (Stdout+Stderr in eine Datei loggen)
commandA 1> DATEI.TXT 2>&1

Stdout und Stderr weiterleiten
command > standard output umleiten
command 1> standard output umleiten (wie oben)
command 2> standard error output umleiten
command > file 2>&1	beides (standard und error) output umleiten
command >> standard output umleiten und anhängen
commandA | commandB	standard output weiterreichen
commandA 2>&1 | commandB	beides (standard und error) output weiterreichen
command &1	standard error in standard output umleiten
command 1>&2	standard output in standard error umleiten

Wiederherstellen von Dateien aus einer Schattenkopie vom CSC Cache (Offlinedateien)

Problem

Im Windows-Offline Cache, der seine Inhalte in %SystemRoot%\CSC ablegt, sind wichtige Dateien oder Änderungen abgelegt, die [noch] nicht korrekt synchronisiert wurden. Der Ordner ist aber gesperrt, um den Zugang von beliebigen interaktiven Nutzern zu verhindern – wobei Admins an dieser Stelle auch „Nutzer“ sind. Auch ein Administrator kann die Dateien der Schattenkopie-Sicherung nicht öffnen oder wiederherstellen, stattdessen erscheint diese Fehlermeldung:screenshot-keineberechtigung

Auf \\localhost\C$\@GMT-<datum>\Windows\CSC\v2.0.6 konnte nicht zugegriffen werden.
Sie haben keine Berechtigung für den Zugriff auf \\localhost\C$\@GMT-<datum>Windows\CSC\v2.0.6. Wenden Sie sich an den Netzwerkadministrator, um den Zugriff anzufordern.

Gründe für solche Inkonsistenzen gibt es viele – lange Offlinearbeit, ausgetauschte Server, geänderte Namen oder Freigaben, neue Rechte …

Lösung

Es gibt die Möglichkeit, als „SYSTEM“ die Daten aus dem Cache wiederherzustellen, vorausgesetzt es gibt eine lokale Schattenkopie davon. Das lässt sich schnell überprüfen mit  „vssadmin list shadows“.Wenn das der Fall ist, werden die beiden Tools VOLREST.EXE (aus dem Windows Server 2003 Ressource Kit) und PSEXEC (aus der Sysinternal PS-Tools Sammlung) benötigt. Keine Sorge, die meisten 2003’re Reskit-Tools laufen auch unter 7/8/8.1+ einwandfrei.

  1. Eine Shell als Administrator öffnen (cmd)
  2. Aus dieser eine neue Shell als SYSTEM öffnen:
    psexec.exe -i -s -d cmd
  3. Den Ordner komplett mit volrest an einen neuen Ort retten:
    volrest \\localhost\c$\windows\CSC /s /e /sct /r:C:\temp

Dieser vorgang stellt ALLE Versionen ALLER Dateien wieder her. Hinterher sortieren und aufräumen ist aber meistens einfacher, als neu schreiben …

Danke @Highly UnsupportedSysinternals und verschiedene Admins in den Windows support Foren.