IO mit FlashCache verbessern

14

Ich habe einen Server mit 2 Festplatten (2x 1 TB), auf dem RAID 1 (SW-RAID) ausgeführt wird. Ich möchte die E / A-Leistung mithilfe von verbessern flashcache. Es werden virtuelle KVM-Maschinen mit ausgeführt LVM.

Dazu habe ich folgende Fragen:

  • Funktioniert das überhaupt? flashcacheFunktioniert für Blockgeräte. Dies sind jedoch alle virtuellen Maschinen mit einem eigenen Setup.
  • Wie viel würde ich erwarten, um die Leistung zu steigern? Auf den meisten virtuellen Maschinen werden Websites und einige Host-Spiele ausgeführt.
  • Wie groß muss die SSD sein? Erhöht eine größere SSD die Leistung, da mehr Dateien zwischengespeichert werden können?
  • Was passiert, wenn die SSD stirbt? Würde flashcacheich Dateien von der herkömmlichen Festplatte abrufen und könnte ich einfach die SSD ersetzen?
  • Wie viel schneller wäre writebackim Vergleich zu writethroughund writearound?

Ich habe leider keinen Zugriff auf ein Testsystem. Kann ich es also flashcacheauf einem Live-Server installieren, ohne die Festplatten abzuhängen? Ich habe hier ein großartiges Tutorial gefunden, das ich verwenden würde.

Devator
quelle
Ich denke, Sie würden eine konsistentere Leistung genießen, wenn Sie SSDs als Hauptlaufwerke verwenden könnten.
Ewwhite
Kein Zugriff auf ein Testsystem? Sie benötigen lediglich eine Workstation mit einer Festplatte, einer SSD und einer virtuellen Maschine mit zwei virtuellen Laufwerken (eines auf jedem Gerät). Produktionssysteme sind nicht als Lernlabore gedacht.
Skyhawk
Link ist in dem Tutorial, das Sie erwähnt haben, tot. Gibt es einen anderen Ort, an dem ich diese Informationen finden könnte?
Thaeli

Antworten:

18

Flashcache ist für diejenigen, die es noch nicht gesehen haben, eine Methode, um den Linux-Blockcache um ein SSD-Laufwerk zu erweitern. Es ist billiger als einen Server mit einer halben TB RAM nur zum Cachen zu betreiben.

Funktioniert das überhaupt?

Es sollte. Der Linux-Blockcache speichert die aufgerufenen Blöcke im Cache , nicht die Dateien . Solange Sie den KVM-Maschinen keinen direkten Zugriff auf die Block-Geräte gewähren (nicht), ist der Linux-Block-Cache aktiv. Wenn Sie jedoch sind KVM - Maschinen mit direktem Block-Gerät Zugriff auf die Antwort ist weniger klar.

Wenn Sie dateigesicherte virtuelle Festplatten verwenden, funktioniert dies auf jeden Fall.

Ich weiß nicht, ob Sie LV-gesicherte virtuelle Laufwerke verwenden.

Wie viel würde ich erwarten, um die Leistung zu steigern?

Das können wir nicht beantworten. Es hängt von einer Vielzahl von Dingen ab. In der Zusammenfassung erhalten Sie die beste Leistung, wenn Sie Ihre SSD so dimensionieren, dass sie größer als die Anzahl der aktiven Blöcke ist. Wenn Sie ein perfektes Caching erzielen, ist Ihre Leistung vergleichbar mit der Leistung Ihres gesamten Systems auf SSDs. Was Sie effektiv tun werden.

Wie groß muss die SSD sein?

Wir können Ihnen nicht helfen, die genaue Größe herauszufinden, die Sie benötigen. Mehr ist natürlich besser, aber das genaue Verhältnis zwischen Cache-SSD und Primärspeicher zu finden, ist keine einfache Sache.

Erschwerend kommt hinzu, dass Schreibvorgänge sofort gelöscht werden, z. B. bestimmte Dateisystemvorgänge und einige Datenbankkonfigurationen. Diese Schreibvorgänge werden nur kurz zwischengespeichert, und ihre Leistung wird durch das Vorhandensein oder Fehlen von Flashcache in keiner Weise beeinträchtigt.

Was passiert, wenn die SSD stirbt?

Dasselbe passiert, wenn Sie Linux anweisen, Caches abzulegen, aber mit einem gewissen Kniff. Bei Drop-Caches werden alle nicht gelöschten Schreibvorgänge, die sich im Block-Cache befinden, auf die Festplatte geleert. Was passiert, wenn die SSD verschwindet, hängt vom Caching-Modus ab :

Durchschreiben : Alle Schreibvorgänge werden parallel in den Cache und in den Primärspeicher geschrieben, sodass die Wahrscheinlichkeit eines plötzlichen SSD-Verlusts, der Fehler auf den VMs verursacht, sehr gering ist.

Writearound : Alle Schreibvorgänge werden in den Primärspeicher geschrieben und nur beim Lesen zwischengespeichert. Keine Chance auf Fehler in den VMs.

Rückschreiben : Alle Schreibvorgänge werden zuerst in den Cache und im Hintergrund in den Primärspeicher geschrieben. Die wahrscheinlichste Ursache für Fehler in Ihren VMs ist ein Ausfall der SSD, und ich würde diesen Modus in der Produktion nicht verwenden.

Wie viel schneller wäre ein Rückschreiben im Vergleich zu einem Durchschreiben und einem Umschreiben?

Kommt darauf an, wie viel du schreibst. Wenn Ihre Schreibvorgänge Ihren primären Speicher regelmäßig überlasten, kann die Leistungssteigerung erheblich sein. Wenn Sie hauptsächlich mit etwas Schreiben lesen, werden Sie wahrscheinlich keine Verbesserungen bemerken.

Außerdem ist das Zurückschreiben eine schlechte Richtlinie für das, was Sie tun. Verwenden Sie sie daher nicht.

sysadmin1138
quelle
1
Hallo Sysadmin, danke für deine ausführliche Antwort. Ich werde nicht verwenden, writebackda es alles ohne eine BBU beschädigen könnte. Ich verwende kein SSD-Caching, sondern nur eine normale SSD. Danke noch einmal!
Devator
4

Ja, es funktioniert einwandfrei, solange Sie die richtigen Blockgeräte verwenden. Und es gibt einen Trick.

Wenn LVM nach PVs sucht, sollte die Partition über die eigentliche Festplatte und über das "virtuelle" Flashcache-Gerät angezeigt werden.

Ein offensichtliches Symptom sollte sein, dass LVM-Tools sich über doppelte PVs beschweren.

Um diese Warnungen zu vermeiden und vor allem sicherzustellen, dass das Flashcache-Gerät von LVM2 verwendet wird, müssen Sie den Filter anpassen /etc/lvm/lvm.conf.

Die LVM.CONF(5)Manpage wird es besser erklären als ich, aber ich werde Ihnen ein Beispiel geben, wenn alle physischen Volumes durch Flashcache gesichert sind:

filter = [ "a/.*dm.*/" ]
Pierre Carrier
quelle
1

Einige Anwendungen öffnen Dateien ungepuffert.

http://man7.org/linux/man-pages/man2/open.2.html

O_DIRECT (seit Linux 2.4.10) Versuchen Sie, die Cache-Effekte der Ein- und Ausgabe in und aus dieser Datei zu minimieren. Im Allgemeinen beeinträchtigt dies die Leistung, ist jedoch in bestimmten Situationen nützlich, z. B. wenn Anwendungen ihre eigenen Caching-Vorgänge ausführen. Die Datei-E / A-Vorgänge werden direkt zu / von den Benutzerbereichspuffern ausgeführt. Das O_DIRECT-Flag alleine ist bemüht, Daten synchron zu übertragen, gibt jedoch nicht die Garantie des O_SYNC-Flags, dass Daten und erforderliche Metadaten übertragen werden. Um eine synchrone E / A zu gewährleisten, muss zusätzlich zu O_DIRECT O_SYNC verwendet werden. Weitere Informationen finden Sie in den nachstehenden ANMERKUNGEN.

Dies ist beispielsweise bei Datenbanken sehr häufig. Überprüfen Sie daher nochmals, ob der Flashcache mit diesen Anwendungen funktioniert.

Tagar
quelle