SATA und SSD - Partitionierung?

d3p

Member
Hallo,
ich habe von meinem Betrieb einen Server zum testen/rumspielen bekommen.

In diesem sind 2x1TB HDD´s (HW-RAID1) und 2x120GB SSD (HW-RAID1) verbaut.

Da ich auf dem System mittels Virtualisierung (Proxmox) ein paar Maschinen laufen lasse, würde ich gerne mal eure Meinung bezüglich der Verwendung hören.

Auf den Maschinen werden unter anderem eine Datenbank, ein Webserver, Monitoring-Dienst, Mailserver und DNS-Server laufen.

Sprich ein paar I/O-lastige Dienste.
Hierbei wäre es sicherlich sinnvoll, die SSD´s als Speicher zu nutzen, oder?

Was würdet ihr mir vorschlagen? :)

Gruß,
 
Hierbei wäre es sicherlich sinnvoll, die SSD´s als Speicher zu nutzen, oder?
Vermutlich sinnvoller wäre es die SSD als Cache zu verwenden um einen merklichen Geschwindigkeitsboost über die gesamte Festplatte zu geben. Je nach Modi (Read-cache/Write-cache) verhalten oft aufgerufene Dateien sich dann (fast) wie auf einer SSD während der Preis/GB bezahlbar bleibt.
Entsprechende Kernel-Features wären flashcache oder dm-cache.
 
Entsprechende Kernel-Features wären flashcache oder dm-cache.

Hat hier im Forum jemand so etwas vielleicht schon produktiv in Betrieb?

Ich habe mit dm-cache, bcache und EnhanceIO schon etwas getestet, in meinen Testfällen (als Storage für KVM-basierte Windows-VMs) war aber entweder die Performance nicht toll (bcache) oder ich habe bei kernel-Crashes (habe ich komischerweise mit 3.12 (rc) Kerneln beim Ausschalten der VMs gehabt) danach echt unschöne Dateisystem-Fehler gehabt.

So oder so gilt hier: ausgiebig testen :-)
 
Hat hier im Forum jemand so etwas vielleicht schon produktiv in Betrieb?
Ich habe es seit paar Monaten auf 2 Produktiv-Systemen im Einsatz, beide haben ihre Festplatten spürbar entlastet während bspw die Datenbankserver in den Container hohe Leistungssprünge gemacht haben.


danach echt unschöne Dateisystem-Fehler gehabt.
Das ist bei write-cache immer ein Risiko. und sollte nur verwendet werden wenn man sicher ist dass die Umgebung stabil ist und zeitnahe Backups bereitstehen. Alternativ verwendet man nur read-cache - allerdings werden dann die ganzen temporären Dateien welche die Festplatten immer belasten weiterhin durchgereicht.
Ich "riskiere" aktuell write-cache, in Tests konnte er auch mehrere brutale power-cycles überleben und recovern.
 
Auf einem Testsystem dm-cache, produktiv flashcache.
Letzteres kann ohne Probleme in die nicht unbedingt brandneuen Kernel der aktuellen Virtualisierungslösungen wie SolusVM oder Proxmox verwendet werden was den Verwaltungsaufwand stark vereinfacht. Gleichzeitig fühle ich mich bei Flashcache etwas sicherer da Facebook sowas nicht bei Stabilitätsproblemen selbst einsetzen würde - hingegen ist DmCache aber in den Kernel selber aufgenommen worden.
 
Gibt es für Linux sowas ähnliches wie Apple mit FusionDrive implementiert hat?
Also dass man SSD und HDD in einer Volume Group mischt und das System dann transparent Storage tiering betreibt - also je nach Zugriffsmuster die einen Dateien auf die SSD lagert und andere auf der HDD?
Caching bedeutet ja, dass alles auf der HDD liegt und einige Sachen doppelt nochmal auf der SSD.
 
Gibt es für Linux sowas ähnliches wie Apple mit FusionDrive implementiert hat?
Meines Wissens nicht. Ob eine solche Realisierung (unabhängig von Patenten und Ähnlichem) aber finanziell -bei Server- lohnenswert ist bezweifle ich irgendwie. Plattenplatz ist sehr billig, die paar GB welche in einem normalen Server durch Cachen statt Verteilen verloren gehen sind vermutlich da schlicht nicht tragisch.

Mir stellt sich allerdings auch die Frage ob es in einer Server-Umgebung überhaupt sinnvoll ist denn
- Festplatten sind erprobter als SSD's - die Daten nie darauf zu löschen garantiert einen Datenbestand auch bei SSD-Ausfall.
- Die Daten sind immer (bei RAID 1) auf einer Platte und nicht verteilt. Im Worst-case ist eine Wiederherstellung bedeutend einfacher.
- Das Rückkopieren der alten Blöcke verursacht nicht nur mehr IOPS auf der Festplatte sondern die langsamen Write-Operationen.
 
Meines Wissens nicht.
Schade. Dachte ich mir.

Ob eine solche Realisierung (unabhängig von Patenten und Ähnlichem) aber finanziell -bei Server- lohnenswert ist bezweifle ich irgendwie.
Ich dachte auch eher an PC/Laptop. Bei Servern gehe ich da voll konform mit deinen Ausführungen.

Wobei der OP ja schrieb, dass er 2x HDD und 2x SSD hat. Also könnte er ja auch die SSD als RAID1 fahren.
In dem Fall wären die SSD der richtige Platz für z.B. DB-Indizes. Wenn man richtig Schotter hat, kann man sowas auch mit SSDs machen, die per PCI-X angebunden sind und richtig viel Durchsatz haben. Bei ordentlichen SSD ist ja der SATA-Bus das Nadelöhr.
 
Ich klinke mich hier nochmals ein. :)

Wäre es bei flashcache sinnvoller, 1x SSD-RAID1 zu nutzen, oder die SSD´s ohne RAID als Flashcache zu betreiben?
 
Last edited by a moderator:
Ich dachte auch eher an PC/Laptop.
Bei PC's halte ich es genau wie bei Server schlicht wegen der Anzahl an _möglichen_ Festplatten eher unkritisch. Bei Laptops ist es definitiv "nice to have" aber da gäbe es jede Menge andere Kernel-related Sachen die zuerst mal repariert/ergänzt werden müssen bevor man am "nice to have" ankommt.
Dass mein Ultrabook unter Ubuntu knapp 2 (von 7) Stunden hält und weder Optimus ansteuern kann noch stromsparend oder leise arbeitet ist ein no-go :D

In dem Fall wären die SSD der richtige Platz für z.B. DB-Indizes.
Bei so ziemlich allen Webserver sollte die Datenbank _komplett_ auf die SSD passen und dann noch genug Platz für Caches übrig lassen.

Bei ordentlichen SSD ist ja der SATA-Bus das Nadelöhr.
Zumindest im Normalbetrieb reicht es in aller Regel locker aus eine "übliche" SSD (Kostenpunk 0.5-0.6€/GB) statt die PCI-Steckkarten (Kostenpunkt bis 4€/GB) zu verwenden.

1x SSD-RAID1 zu nutzen, oder die SSD´s ohne RAID als Flashcache zu betreiben?
Das hängt größtenteils von der gewählten Methode (read-cache/write-cache) und deinem Vertrauen in die Technik ab. Es sei gesagt dass SSD's in aller Regel nicht "sterben" (sollen) sondern am Ende der Lebenszeit auf read-only schalten. Ein Datenverlust sollte damit vorgebeugt werden - wie weit Flashcache und Co das aber vertragen ist mir nicht bekannt und nur schwer unter Realbedingungen testbar.
Allerdings ist bei neuen SSD's das Risiko dass beide fast gleichzeitig am Ende der Lebenserwartung ankommen recht hoch da eine Zelle einen recht festen Lebenszyklus hat - welcher insbesondere bei den Triple-Level Zellen von Samsung doch nicht soooo hoch sind.
Bei einem Read-only Cache kannst du aber (fast) problemlos ein RAID-0 auf die SSD's werfen - ob es dies aber wert ist hängt von deiner Belastung ab.
 
Das hängt größtenteils von der gewählten Methode (read-cache/write-cache) und deinem Vertrauen in die Technik ab. Es sei gesagt dass SSD's in aller Regel nicht "sterben" (sollen) sondern am Ende der Lebenszeit auf read-only schalten. Ein Datenverlust sollte damit vorgebeugt werden - wie weit Flashcache und Co das aber vertragen ist mir nicht bekannt und nur schwer unter Realbedingungen testbar.
Allerdings ist bei neuen SSD's das Risiko dass beide fast gleichzeitig am Ende der Lebenserwartung ankommen recht hoch da eine Zelle einen recht festen Lebenszyklus hat - welcher insbesondere bei den Triple-Level Zellen von Samsung doch nicht soooo hoch sind.
Bei einem Read-only Cache kannst du aber (fast) problemlos ein RAID-0 auf die SSD's werfen - ob es dies aber wert ist hängt von deiner Belastung ab.

FYI: Sind Server-SSD´s von Intel. ;)

Ich hab halt nicht wirklich Lust, wenn mir die SSD´s um die Ohren fliegen, dass es mir auch die VM´s dort zerschießt.

Ich nutze diesen Server dann für meine Projektarbeit (Ausbildung FISI),
und da wäre es mehr als schlecht wenn mir die Kiste abraucht o.ä.

Zudem würde ich gerne die SATA´s entlasten, falls mehrere VM´s Daten lesen bzw. schreiben und so die I/O-Last in die Höhe treiben.

Es wird an sich nur eine Art "Firmensystem" betrieben.
Also Mailserver, Webserver, Datenbankserver.

Größtenteils gibts dann SELECT / UPDATE / DELETE / INSERT-Abfragen beim Datenbankserver.

Hat also bisschen was zu tun.
Der Webserver stellt eine Homepage, Ticketsystem, Blog, Wiki usw. bereit
und der Mailserver, ja... der sendet und empfängt Mails. :D

Mein Hauptaugenmerk liegt darauf, dass das System stabil läuft, und auch im Falle eines Stromausfalls, oder Ausfall einer Hardwarekomponente (vorzugsweise die SSD..) das Ding weiterläuft ohne dass es sich ins Nirvana ballert.

Anschließend kommt noch eine VM mit Windows Server 2013 drauf, mit der ich ebenfalls einen Webserver aufsetzen werde.

Gruß,
 
Etwas fummeliger, aber spricht was dagegen einen Teil der SSD als Partition an den Datenbankserver zu geben damit alle Datenbanken komplett SSD-basiert sind? Dieser scheint laut deiner Beschreibung ja der Hauptpunkt zu sein.
Meist (nicht immer!) ist der Rest des Systems dann weniger kritisch und könnte mit write-cache versorgt werden.
Falls du ein Software-RAID verwenden würdest hätte ich vorgeschlagen dass ein RAID-0 den Cache verwaltet und ein RAID-1 die Datenbanken. Leider ist das ja hier keine Option.

das Ding weiterläuft ohne dass es sich ins Nirvana ballert
Zumal bei Mysql kann das sogar mit den konservativsten Einstellungen urplötzlich passieren. InnoDB ist...uhhhhm... seeeeeehr "stabil".
Wie das Ding aber bei Strombedarf weiterlaufen soll wäre interessant zu erfahren. So einen Rechner brauche ich auch.

der Mailserver, ja... der sendet und empfängt Mails
:eek: Innovation! patentieren! :eek:
 
Etwas fummeliger, aber spricht was dagegen einen Teil der SSD als Partition an den Datenbankserver zu geben damit alle Datenbanken komplett SSD-basiert sind? Dieser scheint laut deiner Beschreibung ja der Hauptpunkt zu sein.

Ja, das wäre ggf. noch sinnvoll... die Frage ist nur wie ich das bei Proxmox realisiere.

Wie das Ding aber bei Strombedarf weiterlaufen soll wäre interessant zu erfahren. So einen Rechner brauche ich auch.

Ich meinte damit, wenn es einen Stromausfall gab, damit mir die SSD´s nicht verrecken o.ä. :)


:eek: Innovation! patentieren! :eek:
Ja! :O
 
die Frage ist nur wie ich das bei Proxmox realisiere.
Du legst einen weiteren Storage mit dem Typ "Virtual Disks" an welcher auf die SSD zeigt - ob über LVM oder Ordner ist deine Entscheidung respektiv sollte den Gegebenheiten angepasst werden.
Dann dem Datenbankserver eine Festplatte auf diesem Storage hinzufügen und im System mounten (bspw nach /ssd). Die einfachste Lösung wäre das Erstellen mehrerer Ordner und Verwenden von bind-mount um /var/lib/mysql darauf zu laden. (Nicht in fstab vergessen!)
Dann noch das Startskript von Mysql umändern damit temporäre Tabellen ebenfalls auf der SSD landen indem du den Parameter "--tmpdir=/ssd/mysql-temp" verwendest.
Nun kannst du wahlweise noch die Logs und/oder Swap ebenfalls auf die SSD legen - letzteres entweder als Partition oder Swap-Datei.
 
Du legst einen weiteren Storage mit dem Typ "Virtual Disks" an welcher auf die SSD zeigt - ob über LVM oder Ordner ist deine Entscheidung respektiv sollte den Gegebenheiten angepasst werden.
Dann dem Datenbankserver eine Festplatte auf diesem Storage hinzufügen und im System mounten (bspw nach /ssd). Die einfachste Lösung wäre das Erstellen mehrerer Ordner und Verwenden von bind-mount um /var/lib/mysql darauf zu laden. (Nicht in fstab vergessen!).

Hallo,

Hab die SSD jetzt gemountet und bei Proxmox hinzugefügt.
Danach hab ich einer VM Speicher zugewiesen und entsprechend dann auch auf dieser gemountet.

Funktioniert einwandfrei! :)

E: Nachtrag...
Wäre es eventuell auch möglich, die SSD´s ohne RAID zu betreiben?
Somit würde sich die SSD-Kapazität verdoppeln.
 
Last edited by a moderator:
Back
Top