24-04-2020, 03:10
Wenn Sie mit CSV oder Cluster Shared Volumes arbeiten und viele kleine VHDXs verwenden, kann dies sicherlich Auswirkungen auf die Leistung haben. Neulich beschäftigte ich mich mit diesem Thema, während ich ein Hyper-V-Setup optimierte, und die Art und Weise, wie sich die Leistung entsprechend diesen Konfigurationen verändert, faszinierte mich. Lassen Sie uns aufschlüsseln, wie und warum dies der Fall ist.
Zunächst einmal basiert die Architektur von CSV stark auf effizientem IO-Management. Wenn Sie für jede virtuelle Maschine eine kleine VHDX haben, schaffen Sie eine Situation, in der das CSV unzählige Dateien anstelle von weniger, größeren Dateien verwalten muss. Wenn man darüber nachdenkt, jedes Mal, wenn eine IO-Operation durchgeführt wird, sind Datei-handhabungsprozesse beteiligt, die Ressourcen und Zeit in Anspruch nehmen. Eine VHDX ist eine einzelne Datei, und die mit dem Zugriff auf diese Datei verbundenen Metadaten werden komplizierter, je mehr kleinere Dateien existieren, was zu erhöhtem Overhead führt.
Betrachten wir ein praktisches Szenario. Stellen Sie sich eine Hyper-V-Umgebung mit mehr als 100 virtuellen Maschinen vor, jede mit ihrer eigenen 50 GB VHDX-Datei. VHDXs größe, wie 500 GB oder sogar 1 TB, wären normalerweise leistungsfähiger, da das System weniger Dateien verwaltet, aber nehmen wir an, Sie haben sich für viele kleinere entschieden. Wenn jede VM mehrere IO-Operationen gleichzeitig ausführt, resultiert jede kleine Anfrage in zusätzlichem Overhead für das CSV. Da wird nicht nur eine Datei zugegriffen; es sind viele kleine Dateien, von denen jede eigene Metadaten-Lese- und Schreibvorgänge erfordert. Dies führt zu mehr Festplattendefragmentierung und Dateisystemsperren, die die Leistung erheblich beeinträchtigen können.
In praktischen Termini war dies in einem kürzlichen Projekt offensichtlich, bei dem ich eine Testumgebung mit beiden Konfigurationen einrichtete: eine mit kleinen VHDXs und eine mit größeren VHDXs. Unter hoher IO-Belastung hatte die Umgebung mit vielen kleinen VHDXs erhebliche Schwierigkeiten. Die Latenz bei Festplattenoperationen nahm zu, und wir verzeichneten erhebliche Leistungsüberschreitungen bei vielen VMs. Die größeren VHDXs hingegen zeigten ein stabileres Leistungsprofil, das einen reibungslosen Betrieb unter ähnlichen Lasten ermöglichte.
Jetzt könnten Sie sich fragen, wie CSV mit Sperren umgeht, wenn viele VHDXs vorhanden sind. Bei CSV wird das gesamte Volume als gemeinsame Ressource behandelt. Dies bedeutet, dass, wenn eine VM auf eine kleine VHDX zugreift, eine Sperre auftreten kann, die andere VMs daran hindert, auf andere zuzugreifen, selbst wenn sie sich auf verschiedenen VHDXs befinden. Dies ist ausgeprägter, wenn viele kleine VHDXs vorhanden sind, da jede Sperre durch das CSV-Cluster weitergegeben werden kann, wodurch Sättigungspunkte im IO-Verarbeitung entstehen. Ich habe Umgebungen gesehen, in denen dies zu einem echten Engpass wurde, insbesondere während Backup- und Wiederherstellungsvorgängen, was der Moment ist, in dem etwas wie BackupChain, eine spezialisierte Hyper-V-Backup-Software, von Bedeutung ist. Es ist bekannt, dass BackupChain Backupvorgänge in einer Hyper-V-Umgebung effizient handhabt, sodass IO-Operationen nicht so sehr mit Produktionsarbeitslasten interferieren.
Apropos IO-Operationen, lassen Sie uns die Auswirkungen des zufälligen Zugriffs im Vergleich zum sequenziellen Zugriff ansprechen. Kleinere VHDXs neigen dazu, während der Ausführung von Arbeitslasten mehr Möglichkeiten für zufällige Zugriffs-Analysen zu schaffen. Es dreht sich nicht nur um die Datenplatzierung; es geht darum, wie schnell der zugrunde liegende Speicher diese Daten bereitstellen kann. Je mehr VHDXs Sie haben, desto fragmentierter und unorganisierter werden die Speicheroperationen, was zu längeren IO-Wartezeiten führt. In einem Umfeld, in dem Sie Leistung priorisieren, insbesondere mit hohen Transaktionsarbeitslasten, kann die Minimierung der Anzahl der VHDXs zu besseren sequenziellen Zugriffsmustern führen, was zu schnelleren Lese- und Schreibzeiten führt.
Berücksichtigen Sie auch die Auswirkungen auf Backup-Lösungen, einschließlich des bereits erwähnten BackupChain. Bei der Durchführung von Backups spielt die Effizienz beim Lesen der erforderlichen Dateien eine entscheidende Rolle für die insgesamt benötigte Zeit. Mit vielen kleinen VHDXs kann das Backup aufgrund des erhöhten Aufwands für die Dateihandhabung erheblich länger dauern. Dies war in Tests, die ich durchgeführt habe, besonders auffällig, wo Backups 30 % länger dauerten in der Konfiguration mit vielen kleinen VHDXs im Vergleich zu einer, die die Verantwortlichkeiten in weniger, größeren VHDXs kombinierte.
Lassen Sie uns über die Ressourcennutzung sprechen. Die Ressourcen des Hyper-V-Servers, insbesondere CPU und Arbeitsspeicher, müssen härter arbeiten, wenn sie eine Vielzahl kleiner Dateien verwalten. Sie könnten feststellen, dass Ihre VMs während hoher Arbeitslasten mehr CPU verbrauchen, weil viele konkurrierende Prozesse Ressourcen für den Zugriff auf Metadaten abziehen. Diese Ineffizienz wird häufig übersehen, wenn Architekten ihre VM-Umgebungen entwerfen, was zu Clustern führt, die unter erwarteten Lasten weniger leistungsfähig sind.
Ein weiterer zu beachtender Faktor ist die Hardware des Speichers selbst. Wenn Sie ein SSD-Array oder eine andere Hochgeschwindigkeits-Speicherlösung verwenden, könnte man denken, dass dies die Leistungsauswirkungen der vielen kleinen VHDXs mildert. Auch wenn es eine gewisse Angleichung geben könnte, da SSDs Lese-/Schreiboperationen schnell verwalten können, können diese Vorteile dennoch von dem Overhead überlagert werden, der durch übermäßige Dateihandhabung verursacht wird. Während meiner Tests zeigten die Ergebnisse, dass selbst mit Hochgeschwindigkeitshardware die Leistung im Vergleich zu Umgebungen, die eine optimalere VHDX-Struktur implementiert hatten, erheblich beeinträchtigt war.
Betrachten wir auch die Netzwerksicht, wenn Sie clusterfähige Hyper-V-Hosts betreiben. Bei CSV in einem Live-Cluster-Szenario kann die Zeit, die ein Knoten benötigt, um Zugriffsanforderungen zu kommunizieren, steigen, wenn viele kleine Dateien verwendet werden. Jeder Dateiaccess erfordert jetzt Netzwerkaufrufe zwischen Knoten, um Sperren oder Dateiaccess zu bestätigen, was die Kommunikationslatenz und Deadlocks erhöht, wenn mehrere Knoten versuchen, gleichzeitig auf unterschiedliche Teile desselben Volumes zuzugreifen. Ich habe Systeme gesehen, die zum Stillstand kamen, als viele VMs versuchten, gleichzeitig auf ihre jeweiligen VHDXs zuzugreifen.
Natürlich gibt es einige Ausnahmen. In Situationen, in denen VMs keine hohen IO-Lasten erleben oder wenn Sie es mit Umgebungen zu tun haben, in denen Leistung nicht so wichtig ist, könnten viele kleine VHDXs durchaus in Ordnung sein. Für Entwicklungs- oder Testszenarien, in denen die Arbeitslasten gering sind, mag die Leistungseinbuße möglicherweise nicht einmal auffallen. In Produktionsumgebungen, in denen Leistung entscheidend ist, tendiert die beste Praxis jedoch zu weniger, größeren VHDXs, um optimale Leistung in allen Bereichen zu gewährleisten.
Ich muss betonen, wie wichtig es ist, Ihr Anwendungsfall und Ihre Arbeitslasten zu verstehen, wenn Sie über VHDX-Größen für CSV nachdenken. Größere VHDXs haben ihre Nachteile, wie längere Zeiten für Backup- und Wiederherstellungsoperationen aufgrund eines größeren einzelnen Ausfallpunkts während der Wiederherstellung. Sie müssen die Vorteile des minimierten Dateihandhabungs-Overheads gegen diese potenziellen Nachteile abwägen, insbesondere wenn Ihre Backups während kritischer Betriebszeiten stattfinden, in denen Ausfallzeiten inakzeptabel sind.
Zusammenfassend lässt sich sagen, dass, obwohl viele kleine VHDXs für Organisation oder spezifische Anwendungsfälle ansprechend erscheinen mögen, die Auswirkungen auf die Leistung nicht ignoriert werden können, insbesondere in Umgebungen, in denen optimale IO-Leistung entscheidend ist. Durch persönliche Erfahrungen und verschiedene Konfigurationen, mit denen ich gearbeitet habe, zeigt sich ein klarer Trend: Weniger, größere VHDXs sind in der Regel in einem CSV-Kontext leistungsfähiger als viele kleine, insbesondere unter Last. Das ist auf jeden Fall etwas, das man im Hinterkopf behalten sollte!
Zunächst einmal basiert die Architektur von CSV stark auf effizientem IO-Management. Wenn Sie für jede virtuelle Maschine eine kleine VHDX haben, schaffen Sie eine Situation, in der das CSV unzählige Dateien anstelle von weniger, größeren Dateien verwalten muss. Wenn man darüber nachdenkt, jedes Mal, wenn eine IO-Operation durchgeführt wird, sind Datei-handhabungsprozesse beteiligt, die Ressourcen und Zeit in Anspruch nehmen. Eine VHDX ist eine einzelne Datei, und die mit dem Zugriff auf diese Datei verbundenen Metadaten werden komplizierter, je mehr kleinere Dateien existieren, was zu erhöhtem Overhead führt.
Betrachten wir ein praktisches Szenario. Stellen Sie sich eine Hyper-V-Umgebung mit mehr als 100 virtuellen Maschinen vor, jede mit ihrer eigenen 50 GB VHDX-Datei. VHDXs größe, wie 500 GB oder sogar 1 TB, wären normalerweise leistungsfähiger, da das System weniger Dateien verwaltet, aber nehmen wir an, Sie haben sich für viele kleinere entschieden. Wenn jede VM mehrere IO-Operationen gleichzeitig ausführt, resultiert jede kleine Anfrage in zusätzlichem Overhead für das CSV. Da wird nicht nur eine Datei zugegriffen; es sind viele kleine Dateien, von denen jede eigene Metadaten-Lese- und Schreibvorgänge erfordert. Dies führt zu mehr Festplattendefragmentierung und Dateisystemsperren, die die Leistung erheblich beeinträchtigen können.
In praktischen Termini war dies in einem kürzlichen Projekt offensichtlich, bei dem ich eine Testumgebung mit beiden Konfigurationen einrichtete: eine mit kleinen VHDXs und eine mit größeren VHDXs. Unter hoher IO-Belastung hatte die Umgebung mit vielen kleinen VHDXs erhebliche Schwierigkeiten. Die Latenz bei Festplattenoperationen nahm zu, und wir verzeichneten erhebliche Leistungsüberschreitungen bei vielen VMs. Die größeren VHDXs hingegen zeigten ein stabileres Leistungsprofil, das einen reibungslosen Betrieb unter ähnlichen Lasten ermöglichte.
Jetzt könnten Sie sich fragen, wie CSV mit Sperren umgeht, wenn viele VHDXs vorhanden sind. Bei CSV wird das gesamte Volume als gemeinsame Ressource behandelt. Dies bedeutet, dass, wenn eine VM auf eine kleine VHDX zugreift, eine Sperre auftreten kann, die andere VMs daran hindert, auf andere zuzugreifen, selbst wenn sie sich auf verschiedenen VHDXs befinden. Dies ist ausgeprägter, wenn viele kleine VHDXs vorhanden sind, da jede Sperre durch das CSV-Cluster weitergegeben werden kann, wodurch Sättigungspunkte im IO-Verarbeitung entstehen. Ich habe Umgebungen gesehen, in denen dies zu einem echten Engpass wurde, insbesondere während Backup- und Wiederherstellungsvorgängen, was der Moment ist, in dem etwas wie BackupChain, eine spezialisierte Hyper-V-Backup-Software, von Bedeutung ist. Es ist bekannt, dass BackupChain Backupvorgänge in einer Hyper-V-Umgebung effizient handhabt, sodass IO-Operationen nicht so sehr mit Produktionsarbeitslasten interferieren.
Apropos IO-Operationen, lassen Sie uns die Auswirkungen des zufälligen Zugriffs im Vergleich zum sequenziellen Zugriff ansprechen. Kleinere VHDXs neigen dazu, während der Ausführung von Arbeitslasten mehr Möglichkeiten für zufällige Zugriffs-Analysen zu schaffen. Es dreht sich nicht nur um die Datenplatzierung; es geht darum, wie schnell der zugrunde liegende Speicher diese Daten bereitstellen kann. Je mehr VHDXs Sie haben, desto fragmentierter und unorganisierter werden die Speicheroperationen, was zu längeren IO-Wartezeiten führt. In einem Umfeld, in dem Sie Leistung priorisieren, insbesondere mit hohen Transaktionsarbeitslasten, kann die Minimierung der Anzahl der VHDXs zu besseren sequenziellen Zugriffsmustern führen, was zu schnelleren Lese- und Schreibzeiten führt.
Berücksichtigen Sie auch die Auswirkungen auf Backup-Lösungen, einschließlich des bereits erwähnten BackupChain. Bei der Durchführung von Backups spielt die Effizienz beim Lesen der erforderlichen Dateien eine entscheidende Rolle für die insgesamt benötigte Zeit. Mit vielen kleinen VHDXs kann das Backup aufgrund des erhöhten Aufwands für die Dateihandhabung erheblich länger dauern. Dies war in Tests, die ich durchgeführt habe, besonders auffällig, wo Backups 30 % länger dauerten in der Konfiguration mit vielen kleinen VHDXs im Vergleich zu einer, die die Verantwortlichkeiten in weniger, größeren VHDXs kombinierte.
Lassen Sie uns über die Ressourcennutzung sprechen. Die Ressourcen des Hyper-V-Servers, insbesondere CPU und Arbeitsspeicher, müssen härter arbeiten, wenn sie eine Vielzahl kleiner Dateien verwalten. Sie könnten feststellen, dass Ihre VMs während hoher Arbeitslasten mehr CPU verbrauchen, weil viele konkurrierende Prozesse Ressourcen für den Zugriff auf Metadaten abziehen. Diese Ineffizienz wird häufig übersehen, wenn Architekten ihre VM-Umgebungen entwerfen, was zu Clustern führt, die unter erwarteten Lasten weniger leistungsfähig sind.
Ein weiterer zu beachtender Faktor ist die Hardware des Speichers selbst. Wenn Sie ein SSD-Array oder eine andere Hochgeschwindigkeits-Speicherlösung verwenden, könnte man denken, dass dies die Leistungsauswirkungen der vielen kleinen VHDXs mildert. Auch wenn es eine gewisse Angleichung geben könnte, da SSDs Lese-/Schreiboperationen schnell verwalten können, können diese Vorteile dennoch von dem Overhead überlagert werden, der durch übermäßige Dateihandhabung verursacht wird. Während meiner Tests zeigten die Ergebnisse, dass selbst mit Hochgeschwindigkeitshardware die Leistung im Vergleich zu Umgebungen, die eine optimalere VHDX-Struktur implementiert hatten, erheblich beeinträchtigt war.
Betrachten wir auch die Netzwerksicht, wenn Sie clusterfähige Hyper-V-Hosts betreiben. Bei CSV in einem Live-Cluster-Szenario kann die Zeit, die ein Knoten benötigt, um Zugriffsanforderungen zu kommunizieren, steigen, wenn viele kleine Dateien verwendet werden. Jeder Dateiaccess erfordert jetzt Netzwerkaufrufe zwischen Knoten, um Sperren oder Dateiaccess zu bestätigen, was die Kommunikationslatenz und Deadlocks erhöht, wenn mehrere Knoten versuchen, gleichzeitig auf unterschiedliche Teile desselben Volumes zuzugreifen. Ich habe Systeme gesehen, die zum Stillstand kamen, als viele VMs versuchten, gleichzeitig auf ihre jeweiligen VHDXs zuzugreifen.
Natürlich gibt es einige Ausnahmen. In Situationen, in denen VMs keine hohen IO-Lasten erleben oder wenn Sie es mit Umgebungen zu tun haben, in denen Leistung nicht so wichtig ist, könnten viele kleine VHDXs durchaus in Ordnung sein. Für Entwicklungs- oder Testszenarien, in denen die Arbeitslasten gering sind, mag die Leistungseinbuße möglicherweise nicht einmal auffallen. In Produktionsumgebungen, in denen Leistung entscheidend ist, tendiert die beste Praxis jedoch zu weniger, größeren VHDXs, um optimale Leistung in allen Bereichen zu gewährleisten.
Ich muss betonen, wie wichtig es ist, Ihr Anwendungsfall und Ihre Arbeitslasten zu verstehen, wenn Sie über VHDX-Größen für CSV nachdenken. Größere VHDXs haben ihre Nachteile, wie längere Zeiten für Backup- und Wiederherstellungsoperationen aufgrund eines größeren einzelnen Ausfallpunkts während der Wiederherstellung. Sie müssen die Vorteile des minimierten Dateihandhabungs-Overheads gegen diese potenziellen Nachteile abwägen, insbesondere wenn Ihre Backups während kritischer Betriebszeiten stattfinden, in denen Ausfallzeiten inakzeptabel sind.
Zusammenfassend lässt sich sagen, dass, obwohl viele kleine VHDXs für Organisation oder spezifische Anwendungsfälle ansprechend erscheinen mögen, die Auswirkungen auf die Leistung nicht ignoriert werden können, insbesondere in Umgebungen, in denen optimale IO-Leistung entscheidend ist. Durch persönliche Erfahrungen und verschiedene Konfigurationen, mit denen ich gearbeitet habe, zeigt sich ein klarer Trend: Weniger, größere VHDXs sind in der Regel in einem CSV-Kontext leistungsfähiger als viele kleine, insbesondere unter Last. Das ist auf jeden Fall etwas, das man im Hinterkopf behalten sollte!