Partager via


Windows-Datenträgertimeouts und Exchange Server 2010

Veröffentlichung des Originalartikels: 17.11.2011

Vor einigen Monaten hat Bruce Langworthy einen hervorragenden Artikel zu einigen neuen Empfehlungen für das Festlegen des Windows-Datenträger-Timeoutwerts geschrieben: https://blogs.msdn.com/b/san/archive/2011/08/15/the-windows-disk-timeout-value-understanding-why-this-should-be-set-to-a-small-value.aspx.

Dieser Beitrag hat mich veranlasst, über Exchange und das Behandeln von E/A-Problemen nachzudenken. Wenn Sie den Artikel von Bruce noch nicht gelesen haben, folgt hier eine kurze Zusammenfassung: Es wird erläutert, dass bei einem Standardtimeout von 60 Sekunden eine hängende E/A erst nach 60 Sekunden in Windows gemeldet wird und die E/A erst nach 8 Minuten wiederholt wird. Eine Wartezeit von 8 Minuten ist aber viel zu lang, um eine hängende E/A wieder anzustoßen. Daher veröffentlicht Microsoft eine neue Richtlinie, die empfiehlt, die Einstellung für das Windows-Datenträgertimeout auf einen Wert festzulegen, der der jeweiligen Speicherarchitektur entspricht.

Die Frage, die ich mir in Bezug auf Exchange gestellt habe, war simpel: Wie wirkt sich dieses Datenträgertimeout-Verhalten auf die Exchange DAG-Bereitstellungen aus? Konkret: Soll ich das Windows-Datenträgertimeout auf meinen Exchange-Servern gemäß den neuen Empfehlungen reduzieren oder das Timeout so belassen, wie es ist?

Um diese Frage zu beantworten, habe ich einige ESE-Entwickler auf das Timeout angesprochen, um ihre Meinung dazu zu hören… hier einige Auszüge aus der Diskussion…

  • Der Windows-Datenträger-Timeoutwert ist in erster Linie für die Ereignisprotokollierung und E/A-Wiederholung vorgesehen.
  • Vor Exchange Server 2010 wurden in Exchange keine Maßnahmen bei einer langsamen E/A ergriffen, es wurde lediglich im Ereignisprotokoll vermerkt.
  • In Exchange Server 2010 RTM wurde ein neues präemptives Seitenpatchen (vollständiges Überschreiben) für Seiten eingeführt, die von der langsamen E/A betroffen sind.
  • Exchange Server 2010 SP1 ist die erste Version von Exchange, die intelligente Funktionen zum Behandeln einer hängenden E/A umfasst und aktiv einen Serverfehler (Fehlerprüfung) auslöst, wenn die hängende E/A sich auf aktive Datenbanken in einem DAG-Knoten auswirkt.

Ich war der Ansicht, dass wir uns erst darüber informieren sollten, welche intelligente Funktionen mit Exchange Server 2010 SP1 eingeführt wurden und wie diese möglicherweise mit den Datenträgertimeouts interagieren, bevor wir uns entscheiden, was mit den Datenträger-Timeouteinstellungen geschehen soll.

Exchange Server 2010 SP1 Extensible Storage Engine-Wiederherstellung bei hängender E/A

In Exchange Server 2010 SP1 wurden einige hervorragende Verbesserungen zur Behandlung der hängenden E/A eingeführt. Diese Verbesserungen werden detailliert im folgenden TechNet-Artikel behandelt https://technet.microsoft.com/en-us/library/ff625233.aspx:

Exchange 2010 SP1 enthält eine neue Wiederherstellungslogik, die auf dem integrierten Windows-Fehlerprüfungsverhalten (BugCheck) aufbaut, wenn bestimmte Bedingungen auftreten, insbesondere bei hängender E/A. In SP1 wurde die Extensible Storage Engine (ESE) aktualisiert, um den Server durch korrigierende Maßnahmen automatisch wiederherzustellen. ESE verwaltet einen E/A-Watchdog-Thread, der erkennt, wann eine E/A für einen bestimmten Zeitraum aussteht. Wenn eine E/A für eine Datenbank länger als eine Minute aussteht, protokolliert ESE standardmäßig ein Ereignis. Wenn die E/A für eine Datenbank mehr als 4 Minuten aussteht, wird ein bestimmtes Fehlerereignis protokolliert, sofern möglich. Das ESE-Ereignis 507, 508, 509 oder 510 wird möglicherweise protokolliert, abhängig von der Art der hängenden E/A. Wenn das Problem so gestaltet ist, dass es sich auf das Betriebssystemvolume auswirkt oder auf die Fähigkeit, in das Ereignisprotokoll zu schreiben, werden die Ereignisse nicht protokolliert. Wenn die Ereignisse protokolliert werden, erkennt der Microsoft Exchange-Replikationsdienst („MSExchangeRepl.exe“) diese Bedingung und erzwingt eine Fehlerüberprüfung von Windows, indem der Prozess „wininit.exe“ beendet wird.

Was bedeutet dies also? Nun, nach einigen Diskussionen (und einer Suche nach ESE-Code) wurde die folgende Tabelle erstellt, um das Verhalten verständlicher zu machen (ich habe einige vorherige Versionen von Exchange zu Referenzzwecken eingefügt).

Anmerkung: Ich möchte mich an dieser Stelle ganz besonders bei Alexandre Costa und Brett Shirley bedanken, die ESE-Entwickler im Exchange-Team sind und ohne deren Hilfe die Bereitstellung dieser Informationen nicht möglich gewesen wären – danke Jungs!

Exchange-Version

E/A-Typ

E/A-Zeit

Verhalten

Exchange Server 2003

Abgeschlossen

>60 Sekunden

  • Schreiben in Ereignisprotokoll

Exchange Server 2007

Abgeschlossen

>60 Sekunden

  • Schreiben in Ereignisprotokoll

Exchange Server 2010 RTM

Abgeschlossen

>60 Sekunden

  • Schreiben in Ereignisprotokoll
  • ESE führt ein vollständiges Überschreiben für Seiten durch, die von der langsamen E/A betroffen sind.

Exchange Server 2010 SP1

Im Gange

>60 Sekunden

  • Schreiben in Ereignisprotokoll

>4 Minuten

  • Der Prozess „wininit.exe“ wird beendet, und auf dem Server findet eine Fehlerprüfung (BugCheck) statt.

Abgeschlossen

>30 Sekunden

  • Schreiben in Ereignisprotokoll
  • ESE führt ein vollständiges Überschreiben für Seiten durch, die von der langsamen E/A betroffen sind.

Hinweis: „Im Gange“ beschreibt einen langsamen E/A-Vorgang, der noch nicht erfolgreich abgeschlossen wurden. „Abgeschlossen“ stellt eine langsame E/A dar, die abgeschlossen wurde, aber länger als 30 Sekunden gedauert hat. Ich möchte an dieser Stelle darauf hinweisen, dass es vor Exchange Server 2010 keine Möglichkeit gab, langsame E/A-Vorgänge zu erkennen, die noch im Gange sind. Erst nach Abschluss der E/A erfolgte eine diesbezügliche Meldung.

Ich mag dieses neue Verhalten nicht. Was kann ich unternehmen?

Wie bei den meisten Dingen, würde ich davon abraten, das neue Verhalten zu ändern, sofern nicht ein klarer und zwingender Grund dafür besteht… Wenn Sie jedoch das neue Verhalten der Extensible Storage Engine-Wiederherstellung bei hängender E/A ändern müssen, können Sie hierzu einige Registrierungsschlüssel/Active Directory-Attribute verwenden, die hier dokumentiert sind.

Schlussfolgerung

Zur Erinnerung: Mit diesem Artikel wollte ich klären, ob wir den Windows-Datenträger-Timeoutwert (TimeOutValue) für die Exchange DAG-Serverknoten ändern sollten, so wie hier empfohlen.

Ich habe mich mit Matt Gossage vom Exchange-Team unterhalten (Matt weiß alles über Exchange und E/A), und er hat mir erklärt, dass der Datenträger-Timeoutwert unter anderem den Host vor Buszurücksetzungen schützt. Wenn eine E/A den Windows-Datenträger-Timeoutwert erreicht, ist einer der interessanten Nebeneffekte hierbei, dass der Treiber „disk.sys“ eine Buszurücksetzung ausgibt. Diese Zurücksetzung wirkt sich auf alle LUNs auf dem Server aus, nicht nur auf die LUN, die nicht mehr antwortet.

Das häufigste Szenario, in dem dieses Verhalten beobachtet wurde, ist bei Verwendung von Exchange 2010 und einem JBOD-Speicher (Just a Bunch Of Disks). Falls eine RAID-Lösung bereitgestellt ist, kann der Datenträgercontroller das Lesen beschädigter Sektoren meistern, indem entweder die Daten von einem anderen Datenträger gelesen oder die Daten aus der Parität erneut berechnet werden. Hierdurch wird die E/A verzögert, aber nicht erheblich. Wird dagegen ein JBOD-Speicher verwendet, gibt es nur eine einzige Kopie des Datensektors. Daher führt ein beschädigter Sektor möglicherweise zu einer hängenden E/A, während der Datenträger versucht, die Daten zu lesen. Fazit: Bei einer JBOD-Bereitstellung sollte der Datenträger-Timeoutwert also nicht reduziert werden. Er sollte vielleicht sogar erhöht werden, um die Auswirkungen von Buszurücksetzungen zu reduzieren, wenn eine der JBOD-Datenträgerspindeln beginnt auszufallen.

Die folgende Tabelle enthält Empfehlungen zum Festlegen des HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Disk\TimeOutValue für Server, die unter der Exchange Server 2010-Postfachrolle ausgeführt werden.

Szenario Empfehlung
Direkt angeschlossener Speicher
  • Reduzieren des Windows-Datenträger-Timeoutwerts auf 20 Sekunden
  • Weitere Informationen finden Sie in der Dokumentation des Hardwareherstellers.
  • Bei einem Hardwarefehler hat die Dokumentation des Hardwareherstellers Vorrang.
Mit SAN verbundener RAID-Speicher
  • Reduzieren des Windows-Datenträger-Timeoutwerts auf 20 Sekunden
  • Weitere Informationen finden Sie in der Dokumentation des Hardwareherstellers.
  • Bei einem Hardwarefehler hat die Dokumentation des Hardwareherstellers Vorrang.
JBOD-Speicher
  • Erhöhen des Windows-Datenträger-Timeoutwerts auf 180 Sekunden
  • Weitere Informationen finden Sie in der Dokumentation des Hardwareherstellers.
  • Bei einem Hardwarefehler hat die Dokumentation des Hardwareherstellers Vorrang.

Neil Johnson
Senior Consultant, UK MCS

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter Windows Disk Timeouts and Exchange Server 2010