Wie kann ich mich und die Anwendungsentwickler vergewissern, dass unsere SQL-Server nicht unter schlecht konfiguriertem Speicher leiden, ohne dass das SAN-Team Feinde hat? Verwenden Sie einfach perfmon Statistiken? Andere Benchmarks wie sqlio?
Das erste, was Sie wissen müssen, bevor Sie ein Benchmarking durchführen, ist die Toleranz, unter der Ihre eigene Workload ausgeführt werden muss. Vergleichen Sie also Ihre eigenen Daten, bevor Sie sich das neue System ansehen. Wenn Sie also feststellen, dass Sie bei Spitzenlasten (Backups?) Maximal 56 MB / s erreichen und feststellen, dass das SAN-verbundene Festplatten-Array bei simulierten Spitzenlasten „nur“ 110 MB / s erreicht, können Sie dies tun versichert, dass das Limit nicht der I / O-Kanal sein wird.
Beim Auschecken eines neuen Festplatten-Arrays habe ich diese Art von Leistungstests durchgeführt. Das neue Array verwendete SATA-Laufwerke anstelle von Fibre-Channel-Laufwerken (SCSI), und ich musste mir versichern, dass es in unserer Umgebung funktionieren würde. Ich war zutiefst zweifelhaft. Aber nach der Charakterisierung stellte ich fest, dass das neue System unter Peak genügend I / O-Overhead hatte, um mit dem gemessenen Peak auf den zuverlässigeren Festplatten Schritt zu halten. Es überrascht mich.
Wenn ich Tests auf diesen SAN-Laufwerken lade, kann ich dann wirklich zuverlässig und reproduzierbar messen, was ich sehen werde, wenn wir live gehen? (Unter der Annahme, dass die SAN-Software zu verschiedenen Zeitpunkten möglicherweise unterschiedlich dynamisch konfiguriert wird.)
Aufgrund der gemeinsamen Nutzung von SAN-Festplattenarrays ist die Leistung über die Woche unterschiedlich. Wenn Sie bereits wissen, wann Ihre E / A-Spitzenlast ist, führen Sie eine Reihe von Belastungstests zu der Tageszeit durch, zu der Ihre E / A-Spitzenlast ist. Auf diese Weise können Sie besser charakterisieren, welche Art von I / O-Overhead in den Zeiträumen verfügbar ist, an denen Sie am meisten interessiert sind. Durch Lasttests außerhalb der Stoßzeiten erhalten Sie ein Gefühl dafür, wie "bissig" die Dinge werden, aber durch Spitzenprüfungen geben Sie wahre Grenzen zu überprüfen.
Beeinflusst eine hohe E / A-Belastung in einem Teil des SAN (z. B. dem Exchange-Server) meine SQL-Server? (Unter der Annahme, dass sie nicht jedem Server dedizierte Festplatten zuweisen, was, wie mir mitgeteilt wurde, nicht der Fall ist)
Wenn die Exchange-LUNs Festplatten mit Ihren SQL-LUNs gemeinsam nutzen, werden sie dies auf jeden Fall tun. Wir verwenden HP EVAs, keine XPs, aber ich denke, sie verwenden die gleiche Terminologie für "Festplattengruppen". LUNs in derselben Datenträgergruppe geben Datenträger frei und kämpfen daher auf diesen physischen Geräten um E / A. Je mehr Datenträger Sie in eine Datenträgergruppe einfügen, desto mehr Spielraum muss das Array für die I / O-Jonglierung haben. Die Arrays (zumindest die EVAs tun dies, und ich nehme an, die teureren XPs tun dasselbe) verteilen logische LUN-Blöcke nicht sequentiell auf die physischen Festplatten. Auf diese Weise können die von Ihnen vorgeschlagenen Aktionen ausgeführt werden. Dabei werden Gruppen von Blöcken, auf die häufig zugegriffen wird, dynamisch auf verschiedene physische Geräte verteilt, um die Parallelität zu erhöhen und E / A-Konflikte auf Festplattenebene zu reduzieren.
Die Frage ist, über wie viel E / A-Budget diese Datenträgergruppe verfügt und ob die Anwendungen, die diese LUNs verwenden, für E / A überzeichnet sind. Das ist eine Frage, die die Storage-Administratoren im Auge behalten müssen. Möglicherweise stimmen die Spitzen-E / A-Vorgänge für Exchange (möglicherweise während der Sicherungen) nicht mit den SQL-Ladevorgängen überein, und beide Systeme können problemlos koexistieren.
Wäre es hier hilfreich, logische Laufwerke für verschiedene Funktionen zu trennen (Daten vs. Protokoll vs. Tempdb)? Würde das SAN die verschiedenen E / A-Aktivitäten auf diesen sehen und sie optimal anders konfigurieren?
Für die HP Arrays müssen Sie die verschiedenen E / A-Muster in verschiedene Datenträgergruppen und nicht in LUNs einteilen . Beispielsweise sollten Datenbank-E / A-Muster nicht mit Zugriffsmustern für Web-Serving koexistieren. Verschiedene LUNs verbessern Ihre Leistung nur dann merklich, wenn sie sich in verschiedenen Datenträgergruppen befinden. Wenn sie sich in derselben Datenträgergruppe befinden, hat das Betriebssystem den einzigen wirklichen Vorteil, dass es die E / A-Planung im Kernel durchführen kann, um die Parallelität zum Datenträgersubsystem zu verbessern. Das gesagt...
Soweit ich weiß, kennen die HP Arrays unterschiedliche Zugriffsmuster auf LUNs, achten jedoch genau auf die tatsächlichen logischen Blöcke. Wenn Sie die Protokolle auf einer anderen LUN ablegen, werden die logischen Blöcke, die diese Art von E / A-Verkehr erhalten, eingeschränkt, und die Aufgabe wird erleichtert, die logischen Blöcke auf den physischen Datenträgern richtig zu sortieren.
Wir sind gerade in einer Weltraumkrise. Anwendungsteams werden aufgefordert, Datenarchive usw. zu kürzen. Würden das SAN-Team aufgrund von Platzproblemen unterschiedliche Entscheidungen bezüglich der Konfiguration des internen Speichers (RAID-Level usw.) treffen, die sich auf die Leistung meines Servers auswirken könnten?
Bestimmt. Wenn der Speicherplatz knapp ist, erhalten Sie keine dedizierten Datenträgergruppen für Ihre E / A (es sei denn, Ihre Speicherumgebung ist groß genug, um 7 TB physischen Datenträger für Ihre ausschließliche Verwendung zu reservieren. In diesem Fall ist dies möglicherweise der Fall ). Die Raid5 / Raid10-Debatte hängt zu einem großen Teil von den Richtlinien der Organisation ab, und Fragen ist die beste Wahl.