In dieser Folge möchten wir uns die Leistungsmerkmale von linearen und gestreiften logischen Volumes mit LVM ansehen. Wir werden untersuchen, was hinter den Kulissen passiert und einige vorläufige Benchmarks mit einer AWS i2.8xlarge-Instanz mit 8x800GB SSD-Festplatten, 244 GB RAM und 32 virtuellen Kernen durchführen.
Schneller Speicherbedarf
Stellen Sie sich vor, Sie haben einen Bedarf an einem extrem schnellen Speichersubsystem auf einer einzigen Maschine. Sie haben verschiedene Hardware- und Softwarekonfigurationsoptionen zur Auswahl, darunter Hardware-RAID, Software-RAID mit mdadm, LVM oder eine Kombination aus beiden. Aber für heute gehen wir davon aus, dass Sie die Auswahl auf LVM eingegrenzt haben. Also, wählen Sie LVM lineare oder gestreifte logische Volumes und welches hat die beste Leistung? Wie ich eben erwähnt habe, verwenden wir eine Maschine von der Cloud-Computing-Plattform Amazon Web Services (AWS). Der Maschinentyp ist eine i2.8xlarge-Speicher-optimierte Instanz mit 32 virtuellen CPUs, 244 GB RAM, 1x8GB internen OS-Datenträger und 8x800GB SSD-Festplatten, alles für etwa 6,80 US-Dollar pro Stunde (weniger auf dem Spotmarkt).
Beachten Sie, dass bei der Verwendung von LVM gestreiften logischen Volumes in der Regel eine bessere Leistung erzielt wird, je mehr Festplatten Sie haben. Ursprünglich wollte ich den AWS hs1.8xlarge-Instanztyp verwenden, der 24 x 2TB Festplatten hat, habe aber nach der Recherche die Idee verworfen. Es stellte sich heraus, dass für die beste Leistung auf diesem Instanztyp die Festplatten vorgewärmt werden müssen, was bedeutet, dass auf jeden Block des Geräts geschrieben werden muss. Zum Beispiel könnte es 8 oder mehr Stunden dauern, die Festplatten auf diesem Instanztyp vorzuwärmen, da er 24 Festplatten hat. Da ich keine 4,60 US-Dollar pro Stunde für das Vorbereiten der Festplatten ausgeben wollte, habe ich mich für die i2.8xlarge-Instanz entschieden, die SSD-Festplatten verwendet und nicht vorgewärmt werden muss. Ich wollte das nur erwähnen, falls Sie meine Ergebnisse auf ähnlicher AWS-Hardware replizieren möchten.
Konfiguration der Umgebung
Bevor wir mit der Demonstration beginnen, müssen wir unsere Umgebung konfigurieren. Führen Sie daher die Installation mehrerer Voraussetzungen durch, indem Sie “apt-get install lvm2 xfsprogs bwm-ng bonnie++” ausführen.
Jetzt haben wir die Voraussetzungen installiert und Ihnen einen Überblick über das Design gegeben. Führen wir pvdisplay aus, um zu überprüfen, ob keine physikalischen Volumes konfiguriert sind. Es sind keine konfiguriert, also erstellen wir 8 physikalische Volumes für unsere 8x800GB SSD-Festplatten, indem wir “pvcreate /dev/xvd[b-i]” ausführen. Überprüfen wir dann mit “vgdisplay”, ob das funktioniert hat. Sie können sehen, dass wir eine Volume Group namens “vol_e27” haben und sie hat eine Größe von etwa 6 TB.
Jetzt haben wir die physikalischen Volumes konfiguriert und können zur Demonstration übergehen. Aber bevor wir das tun, lassen Sie uns kurz zusammenfassen: Wir haben unsere 8 SSD-Festplatten als physikalische Volumes konfiguriert, dann haben wir eine Volume Group namens “vol_e27” mit diesen physikalischen Volumes erstellt und schließlich werden wir für die heutigen Demos zwei logische Volumes erstellen, eines nach dem anderen, namens “vol_e27-root”, eines als lineares Volume und das andere als gestreiftes Volume. Übrigens, das “b-i” in den Boxen unter den Überschriften “linear” und “gestreift” sind mein Versuch, die physikalischen Volumes der SSD-Geräte anzuzeigen.
Lineare Volumes
Nun fangen wir an, ein lineares Volume zu erstellen, indem wir “lvcreate -extents 100%FREE -name root vol_e27” ausführen. Dadurch wird ein logisches Volume namens “root” mit dem gesamten verfügbaren Speicherplatz in der Volume Group “vol_e27” erstellt. Überprüfen wir, ob das funktioniert hat, indem wir “lvdisplay” ausführen. Persönlich verwende ich gerne die Pfade /dev/mapper für den Zugriff auf solche Geräte. Also überprüfen wir, ob er existiert, und führen wir “fdisk -l /dev/mapper/vol_e27-root” aus, um zu überprüfen, ob ein neues Blockgerät erstellt wurde und es ungefähr die erwartete Größe hat.
Schließlich müssen wir das Gerät mit bonnie++ benchmarken. Dazu müssen wir zunächst ein Dateisystem auf dem Gerät erstellen und es dann mounten. Heute werde ich XFS verwenden, da es in vielen groß angelegten Computing-Umgebungen verwendet wird und es Ihnen ermöglicht, schnell ein Dateisystem über einen großen Teil der Festplatte zu erstellen, in unserem Fall etwa 6 TB. Führen Sie also “mkfs.xfs /dev/mapper/vol_e27-root” aus, erstellen Sie dann einen Mount-Punkt mit “mkdir /vol_e27” und mounten Sie ihn schließlich mit “mount /dev/mapper/vol_e27-root /vol_e27”. Überprüfen wir wie immer unsere Ergebnisse. Zu diesem Zeitpunkt haben wir also unsere 8x800GB SSD-Festplatten genommen und sie in ein ungefähr 6 TB großes lineares logisches Volume verwandelt, das als /vol_e27 gemountet ist.
Gestreifte Volumes
Lassen Sie uns jetzt darüber sprechen, wie gestreifte logische Volumes funktionieren. Aber zuerst räumen wir das lineare Volume auf, indem wir es aushängen und das logische Volume zerstören. Führen Sie dazu “umount /vol_e27” und dann “lvremove /dev/vol_e27/root” aus.
Nun zurück zu den Diagrammen. Wir haben immer noch unsere Volume Group “vol_e27”, wir müssen nur ein neues gestreiftes logisches Volume namens “vol_e27-root” erstellen. Führen wir das in der Konsole aus, indem wir “lvcreate -extents 100%FREE -stripes 8 -stripesize 256 -name root vol_e27” ausführen. Einfach genug, oder? Beachten Sie, dass dieser Befehl fast genauso aussieht wie der vorherige, nur mit den zusätzlichen Optionen “stripes” und “stripesize”. Diese einfachen Optionen ändern das Leistungsprofil dramatisch, wie wir gleich sehen werden.
Wie wir letztes Mal getan haben, erstellen wir ein Dateisystem auf diesem Gerät mit “mkfs.xfs /dev/mapper/vol_e27-root”. Dann mounten wir es mit “mount /dev/mapper/vol_e27-root /vol_e27”. Überprüfen wir abschließend, ob es richtig gemountet ist.
Führen wir nun in einem Terminalfenster den bonnie-Benchmark aus und überwachen wir in einem anderen Fenster die SSD-Disk-Aktivität. Das Ziel ist es, den Unterschied zwischen linearen und gestreiften logischen Volumes sowohl anhand der Disk-Aktivität als auch anhand der Benchmark-Ergebnisse zu erkennen.
Ergebnisse und Schlussfolgerungen
Die gestreiften logischen Volumes nutzen die Festplatten viel besser aus, indem sie die Schreibvorgänge auf die Festplatten gleichmäßig verteilen, während dies bei den linearen logischen Volumes nicht der Fall ist. Wie in den Diagrammen zu sehen ist, werden bei linearen Volumes die Schreibvorgänge sequentiell nacheinander ausgeführt, während bei gestreiften Volumes die Schreibvorgänge in einer Round-Robin-Reihenfolge auf die Festplatten verteilt werden. Die gestreiften logischen Volumes erzielen dabei eine viel bessere Leistung, da alle Festplatten verwendet werden und keine Engpässe oder Überlastungen auf einer einzelnen Festplatte entstehen.
Die Performance-Zahlen zeigen deutlich, dass gestreifte logische Volumes den linearen Volumetypen deutlich übertreffen. Interessanterweise hatte ich höhere Zahlen erwartet, insbesondere für sequentielle Lesevorgänge bei gestreiften Volumes. AWS ist allerdings eine Art Blackbox. Wenn wir physische Hardware hätten, könnten wir verschiedene Topologien testen, um möglicherweise eine bessere Leistung zu erzielen. Ich persönlich denke, dass wir irgendeine Art von Verbindung gesättigt haben, aber dies ist schwer zu diagnostizieren, ohne die Topologie zu kennen oder Zugriff auf die physische Hardware zu haben.
Insgesamt vermittelt diese Folge das Wesentliche über den Unterschied zwischen linearen und gestreiften logischen Volumes. Wenn Sie jedoch ein solches Projekt implementieren möchten, gibt es noch viele andere Aspekte, die Sie testen und analysieren könnten. Zum Beispiel könnten Sie Hardware-Topologien ausprobieren, um sicherzustellen, dass Sie IO-Kanal-Trennung haben und irgendwo keine Verbindung überlasten. Versuchen Sie auch andere Dateisysteme oder stellen Sie möglicherweise die LVM-Streifen- und Dateisystem-Blockgrößen aufeinander ab. Wie wäre es mit einer Optimierung für Ihre spezifische Arbeitslast?
Es gibt auch einige Probleme bei den von mir durchgeführten Tests. Die Überwachung der Festplattenaktivität könnte unsere Benchmarks beeinflussen, vielleicht war XFS keine gute Wahl für das Dateisystem. Abgesehen davon hätte ich bei einem echten Projekt mehrere Bonnie-Tests durchgeführt und die Ergebnisse gemittelt, aber da dies nur eine Illustration ist, wollte ich nicht zu viel Geld für das Ausführen der AWS-Instanz über lange Zeiträume ausgeben.
Diese Folge zeigt, was ich an Amazons Cloud-Computing-Plattform liebe. Normalerweise müssen Sie als Sysadmin oft etwas für ein bestimmtes Projekt spezifizieren, ohne physische Hardware zu haben. Sie raten im Grunde genommen, hoffen und beten, dass die Hardware, auf die Sie Zehntausende von Dollar ausgegeben haben, Ihren Anforderungen entspricht. Aber mit AWS können Sie eine leistungsstarke Instanz starten, Ihre Ideen testen und dann einen funktionierenden Plan erstellen, normalerweise innerhalb weniger Stunden. Wie in dieser Folge gezeigt wurde, haben wir Hardware verwendet, die normalerweise mehrere tausend Dollar kostet, für mehrere Stunden getestet, um einige Ideen zu testen, die uns letztendlich eine genaue Vorstellung davon gegeben haben, was wir auf dieser Hardware erwarten können.