RAID 1, 5 oder 10

d4jg3nd

New Member
Hallo alle zusammen,

welche Raidvariante würdet ihr für folgendes Server verwenden:
https://www.hetzner.de/de/hosting/produkte_rootserver/px91ssd
Hardware-RAID kommt da noch dazu.

Ein paar Daten über die bisherige Nutzung habe ich angefügt.
(es wird in naher Zukunft aber noch ca. um 50-100% steigen und sollte noch etwas Luft nach oben haben (man weiss ja nie)

Grundsätzlich sollte ja Raid10 das beste sein, aber die Frage ist, ob für unser Anwendungsszenario das Raid10 einen Performance-Mehrwert gegenüber dem Raid1 oder Raid5 bringt.

Vielen Dank für eure Empfehlungen!
 

Attachments

  • apache_volume-day.png
    apache_volume-day.png
    31.5 KB · Views: 210
  • diskstats_iops-day.png
    diskstats_iops-day.png
    24.3 KB · Views: 177
  • diskstats_throughput-day.png
    diskstats_throughput-day.png
    26.3 KB · Views: 181
  • diskstats_utilization-day.png
    diskstats_utilization-day.png
    20.2 KB · Views: 180
  • mysql_bytes-day.png
    mysql_bytes-day.png
    31.6 KB · Views: 186
was für HDs und wie viele davon wollt ihr denn in die Kiste reinbauen? Welches Datenvolumen müsst ihr lokal vorhalten?

Bei primär lesenden Zugriffen macht es eigentlich keinen Unterschied, welchen Raid-Level man verwendet, da kommt es auf die möglichen IOPs an - sprich "je mehr HDs desto besser".

... und - was hat denn eurer bisherige Kiste verbaut? Bei 128GB Ram und Webserver kann es gut sein, daß die HDs so gut wie keine Auswirkung haben, da das meiste sich eh im Cache abspielt...
 
Er werden diese hier verbaut:
240 GB SATA 6 Gb/s Data Center Series SSD
(mind. 2 Stk, oder 3-4, wenn sinnvoll mit Raid 5 oder 10)

Es ist ein Webserver mit Ubuntu, Apache und es laufen Wordpress, MediaWiki, phpBB3 adrauf; keine großen Downloads oder so; nur ein paar Bilder im CMS und viele kleine Dateien vom Style des Templates, CSS, JS und so (wird aber natürlich mit xCache + memCache gecacht; wie jetzt auch schon, darum die obigen Statistiken)

aktuell sind 40GB RAM verbaut und 3 SSDs mit Raid5.

Platz auf der SSD ist mehr als genug nur ca. 20-30GB sind in Verwendung.

*edit*
die Frage ist ja, ob man mit der Geschwindigkeit vom Raid1 irgendwie gebremst werden würde oder bei der obigen Steigerung der Zugriffe nahe ans Limit kommt - oder ist so etwas sowieso Quatsch, weil durch xCache und memCache sowieso so wenige Zugriffe sind, dass ein RAID1 auch locker reicht und somit keinen "Flaschenhals" darstellt.
 
Last edited by a moderator:
Hardware-RAID kommt da noch dazu.

Es könnte auch darüber nachgedacht werden, ob man bei einer solch großen CPU überhaupt noch einen Hardware-RAID-Controller benötigt, auch wenn man sich anschließend für das RAID 10 entscheiden sollte. Denn aus meiner Sicht ist ein Hardware-RAID-Controller heute nur noch sinnvoll, wenn man auf seinem Server mehrere virtuelle Server betrieben möchte.
 
naja, Rechenleistung ist nicht das einzige, was HW-Controller heute noch entspannter können als Software-Raids...

Sauberes Hotswap, einfacherer Rebuild, ggf. vereinfachtes Monitoring, stabile Latenzen / Durchsatzraten - und nebenbei meist auch die triviale Möglichkeit, auch mal mehr als 4 HDs anschließen zu können gegenüber dem, was sonst so auf Server-Boards so möglich ist...
 
Da wir auf gute Rechenleistung angewiesen sind (PHP), hatten wir uns für den HW-RAID entschieden.
Die anderen Vorteile kommen da natürlich auch automatisch dazu.

Könnt ihr eventuell etwas dazu sagen, ob bei einem Webserver mit mySql-Datenbanken (der beim Seitenaufruf viele Dateien nachlädt: CSS, JS, kleiner Stylebilder, teilweise größere Bilder) es trotzdem einen Unterschied von RAID1 auf RAID 5 oder 10 macht?
die IOs steigen mit einem RAID5 / 10 ja auch gegenüber dem Raid1? Der Durchsatz alleine wäre bei uns ja nebensächlich, weil keine großen Daten,oder?

Vielen Dank!
 
der Lese-Durchsatz ist wie gesagt weniger von dem Raid-Level sondern mehr von der Anzahl der beteiligten Platten abhängig (intelligente Controller vorausgesetzt). Da das Standard-Raid-1 aus 2 Platten besteht ist da also "per Definition" weniger drin als bei einem Raid 5, 6 oder 10, welches aus min. 3 oder 4 Platten bestehen muss.

Raid 1 aus mehr als 2 Platten macht man selten, da dann die Brutto/Netto-Rechnung bezüglich Speicherplatz nicht mehr so gut ausfällt.

Ob man auf die max. Werte kommt hängt noch ein wenig von den Daten ab - bei seq. Reads größerer Datenbereiche ist das natürlich eher drin als bei rand. Read kleiner Dateien.

Wobei bei den Datenmengen bei euch immer noch der Query und Dateisystem-Cache des Sysersystems zuschlagen dürfte...

Ich hab grad keinen Zugriff auf die Graphen bei uns, aber wenn ich mir die grob so anschaue sind die Daten harmlos für die Hardware - selbst mit den prognostizierten Steigerungen. Da haben wir hier wesentlich kleinere Systeme mit wesentlich mehr Zugriffen (zumindest wenn mich meine Erinnerung nicht täuscht - Montag kann ich da mehr sagen...)
 
Last edited by a moderator:
Bei 4 Festplatten mach ein RAID10 Sinn wenn es auf Performace und Datensicherheit ankommt. Bei einem RAID-Controller kann man besonders bei SSDs viel falsch machen, wenn falsch eingekauft wird. Idealerweise ist die Firmware der SSDs für den RAID-Controller ausgelegt, damit dieser alle Vorteile der SSD nutzen kann.
 
davon gehe ich bei Hetzner aus, dass die die richtigen SSDs einbauen beim RAID.

@marce:
danke für die Antwort.

Lt. Munin haben wir aktuell 10-14MB/s Throughput und ca. 1000 IOps (write?) auf dem Laufwerk - wenn ich das richtig lese (siehe Eingangsposting).

Müsste man wissen, was die "240 GB SATA 6 Gb/s Data Center Series SSD" so leisten kann (als einzelne Platte, weil RAID1; oder etwas mehr, wenn RAID10)
 
Raid 1 aus mehr als 2 Platten macht man selten, da dann die Brutto/Netto-Rechnung bezüglich Speicherplatz nicht mehr so gut ausfällt.
Das ist korrekt, allerdings haben wir sowas durchaus schon in Kundensystemen eingesetzt, in denen ein bestehendes RAID-1 mehr Datenausfallsicherheit erhalten sollte, wenn im Rahmen des Projekts kein ausreichendes Budget für ein DRBD vorhanden war. Man muss nun mal leider einsehen, dass durchaus mal zwei Platten unmittelbar hintereinander sterben können. Bei einer gewissen Anzahl an betreuten Systemen wird das auch eines Tages passieren :)

Auch ist die Rebuild-Performance eines solchen Arrays besser.

1000 IOPs wäre aus meiner Sicht ziemlich viel für "nur" 14MB/s
Nicht unbedingt bei Random IOPS. Gerade HDD-only-Systeme lassen sich auch hervorragend mit sehr wenig Durchsatz (aber vielen Random IOPS) stark auslasten. Wenn es dann noch ein Software-RAID5 ist, braucht man noch weniger Durchsatz um das System regelrecht lahmzulegen.

Ich würde mir die tatsächlichen Werte einmal mit atop ansehen, gerade die History-Funktionalität des Tools ist Gold wert.
 
lt. Anbieter it es ein Hardware-Raid5, welchen wir derzeit einsetzen - hier ist der aktuelle atop-Auszug:
dzt. ist etwa zu 65-70% soviel los, wie zu Spitzenzeiten - das künftige System sollte mindestens 150% (besser 200%+) aushalten (jetzt mal SSD-technisch gesehen)
Code:
PRC | sys    5.70s |  user  23.05s | #proc    300 |  #trun      4 | #tslpi   363 |  #tslpu     0 | #zombie    0 |  #exit      3 |
CPU | sys      49% |  user    227% | irq       6% |  idle    505% | wait     14% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       7% |  user     40% | irq       0% |  idle     52% | cpu001 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       9% |  user     28% | irq       5% |  idle     54% | cpu004 w  3% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       6% |  user     31% | irq       0% |  idle     61% | cpu005 w  2% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       6% |  user     29% | irq       0% |  idle     63% | cpu002 w  2% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     27% | irq       0% |  idle     66% | cpu007 w  2% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       6% |  user     25% | irq       0% |  idle     69% | cpu000 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     25% | irq       0% |  idle     69% | cpu003 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       6% |  user     21% | irq       0% |  idle     70% | cpu006 w  3% |  guest     0% | curf 2.10GHz |  curscal   ?% |
CPL | avg1    1.65 |  avg5    2.29 | avg15   2.64 |               | csw   120956 |  intr   90626 |              |  numcpu     8 |
MEM | tot    39.3G |  free    6.6G | cache  29.2G |  dirty  48.5M | buff  432.8M |  slab    1.3G |              |               |
SWP | tot   977.0M |  free  977.0M |              |               |              |               | vmcom   3.3G |  vmlim  20.6G |
DSK |          sda |  busy     20% | read       0 |  write   8510 | KiB/w     53 |  MBr/s   0.00 | MBw/s  44.74 |  avio 0.23 ms |
NET | transport    |  tcpi    2627 | tcpo    5201 |  udpi       3 | udpo       3 |  tcpao      6 | tcppo     93 |  tcprs     54 |
NET | network      |  ipi     2637 | ipo     5254 |  ipfrw      0 | deliv   2631 |               | icmpi      1 |  icmpo      0 |
NET | eth0      0% |  pcki    2597 | pcko    5214 |  si  325 Kbps | so 5477 Kbps |  erri       0 | erro       0 |  drpo       0 |
NET | lo      ---- |  pcki      40 | pcko      40 |  si   10 Kbps | so   10 Kbps |  erri       0 | erro       0 |  drpo       0 |
btw: warum steht da nichts unter "read", sondern nur unter "write"? bei Munin wird auch immer nur bei "write" etwas angezeigt. Oder verstehe ich da etwas falsch?

hier der Auszug "since boot":
Code:
PRC | sys  570m36s |  user 665m03s | #proc    330 |  #trun      2 | #tslpi   394 |  #tslpu     0 | #zombie    1 |  #exit      0 |
CPU | sys      39% |  user    180% | irq       4% |  idle    568% | wait      9% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       7% |  user     21% | irq       4% |  idle     66% | cpu004 w  2% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     23% | irq       0% |  idle     71% | cpu006 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     23% | irq       0% |  idle     71% | cpu005 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     23% | irq       0% |  idle     72% | cpu000 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       5% |  user     22% | irq       0% |  idle     72% | cpu007 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       4% |  user     23% | irq       0% |  idle     72% | cpu001 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       4% |  user     23% | irq       0% |  idle     72% | cpu003 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
cpu | sys       4% |  user     23% | irq       0% |  idle     72% | cpu002 w  1% |  guest     0% | curf 2.10GHz |  curscal   ?% |
CPL | avg1    3.02 |  avg5    2.59 | avg15   2.63 |               | csw 204310e4 |  intr 12742e5 |              |  numcpu     8 |
MEM | tot    39.3G |  free    6.2G | cache  29.5G |  dirty  36.9M | buff  432.8M |  slab    1.3G |              |               |
SWP | tot   977.0M |  free  977.0M |              |               |              |               | vmcom   4.0G |  vmlim  20.6G |
PAG | scan  605340 |               | stall      0 |               |              |  swin       0 |              |  swout      0 |
DSK |          sda |  busy     14% | read  415030 |  write 1296e5 | KiB/w     11 |  MBr/s   0.06 | MBw/s   7.53 |  avio 0.20 ms |
NET | transport    |  tcpi 51005e3 | tcpo 82891e3 |  udpi   95570 | udpo   95667 |  tcpao 139180 | tcppo 1721e3 |  tcprs 1223e3 |
NET | network      |  ipi 51600565 | ipo 84224084 |  ipfrw      0 | deliv 5111e4 |               | icmpi   8036 |  icmpo    771 |
NET | eth0      0% |  pcki 50171e3 | pcko 82795e3 |  si  283 Kbps | so 4477 Kbps |  erri       0 | erro       0 |  drpo       0 |
NET | lo      ---- |  pcki 1434197 | pcko 1434197 |  si   15 Kbps | so   15 Kbps |  erri       0 | erro       0 |  drpo       0 |
                                          *** system and process activity since boot ***
... da gibts etwas unter "read" zu sehen, wenn auch viel weniger als bei "write"

*edit*
als 240er SSDs kommen vermutlich diese hier zum Einsatz:
https://www-ssl.intel.com/content/w...rives/solid-state-drives-dc-s3100-series.html
 

Attachments

  • Bildschirmfoto 2016-06-03 um 22.28.47.png
    Bildschirmfoto 2016-06-03 um 22.28.47.png
    8.4 KB · Views: 137
Last edited by a moderator:

An eurer Stelle würde ich zuerst einmal beim zukünftigem Provider Hetzner nach den einzelnen technischen Daten zu den einzelnen Komponenten SSD-Platte in Bezug auf das Zusammenspiel Firmware und einzubauendem RAID-Controller und dem RAID-Controller selber nachfragen und die technischen Daten dann zum Wissensaustausch, um damit zukünftige Fehlinvestitionen zu minimieren, hier reinstellen.
 
Wobei ich echt sagen muss, wenn du aktuell über DB, Filesystem und sonstiges verteilt nur 1/3 des künftigen Arbeitspeichers belegt hast, würde ich persönlich ja für jede Anwendung das Caching entsprechend optimieren.

Viel bleibt da am Ende ja an Festplattenzugriffen gar nicht mehr...

Gruß
Markus
 
Wobei ich echt sagen muss, wenn du aktuell über DB, Filesystem und sonstiges verteilt nur 1/3 des künftigen Arbeitspeichers belegt hast, würde ich persönlich ja für jede Anwendung das Caching entsprechend optimieren.

Das war auch mein erster Gedanke.

Z. B. mit MySQL mal anfangen(der ist ja per Default so eingestellt dass er nur minimale RAM Resourcen braucht):

Dieses Script fand ich bisher am nützlichesten:

http://www.day32.com/MySQL/

Dieses Script ist noch etwas umfangreicher:

http://mysqltuner.com/

In Sachen PHP dann wenn möglich(Nicht jede Anwendung läuft damit) PHP 7(Hat Ubuntu 16.04 als Default ja drin) oder alternativ HHVM einsetzen, da die beiden wesentlich schneller als PHP 5 sind.

Hier auch mal ein Benchmark dazu:

HHVM vs PHP 7 vs PHP 5

Auch beim Webserver würde ich schauen, dass da evtl. NGINX zum Einsatz kommt oder alternativ ein gut eingestellter Apache mit mpm-worker und fcgid / php-fpm.
 
Last edited by a moderator:
Vielen Dank für die Antworten.

Noch ein paar Daten:
iostat -x:
Code:
Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.16   479.49    1.65  632.28    50.91  7328.88    23.28     4.35    6.85    0.43    6.87   0.20  12.88
munin Zeit in dem Zeitraum 959 beim write an (bei ca. 40% der in Zukunft geplanten Nutzung)

ioping -R /dev/sda:
Code:
--- /dev/sda (device 330.0 GiB) ioping statistics ---
11.1 k requests completed in 3.0 s, 4.1 k iops, 16.1 MiB/s
min/avg/max/mdev = 59 us / 242 us / 6.9 ms / 210 us
die jetzige SSD mit Hardware-RAID5 hat also 4100 IOPs beim Test geschafft.

---------------

php7 muss leider wegen Inkompatiblität einer der Anwedungen noch etwas warten.
mysqltuner & Co haben wir schon benutzt und basierend darauf optimiert (klar ist das ein laufender Prozess, das Optimieren)

Hier geht es mir aber eher darum, ob mit den Werten die SSDs mit einem RAID1 ans "IOPs-Limit" kommen könnten bei der oben angesprochenen Nutzung.
(abgesehen erstmal von einer eventuell noch besseren Nutzung des RAM durch versch. Caching-Methoden; RAM hätten wir dann ja 128GB)
 
Hast du mal eine Übersicht über einen längeren Zeitraum - inklusive Lastspitzen und ähnlichem?

Ich glaube jedoch aktuell nicht, dass du mit der von dir angesprochenen Belastung UND sauberer Konfiguration und Optimierung den Server auch nur ansatzweise auslasten wirst.

Ansonsten ist es doch eher wie bei einem möglichst leisen PC:
Jedes Watt was du nicht benötigst verbraucht keinen Strom und du musst weniger Aufwand in die Kühlung respektive Lärmerzeugung stecken.

Was sagt denn die Prüfung der MySQL-DB? Ich komme jetzt eher aus der PostgreSQL-Ecke - aber da kann durchaus mit der "Bufferhitrate" geschaut werden, ob zu viele Zugriffe auf Platte stattfinden oder der Cache-Wert optimal eingestellt ist.

Gruß
Markus
 
Ich glaube jedoch aktuell nicht, dass du mit der von dir angesprochenen Belastung UND sauberer Konfiguration und Optimierung den Server auch nur ansatzweise auslasten wirst.
meinst du das die CPU / RAM oder die SSDs (die IOPs, etc., nicht der Speicherplatz)
 
Also basierend auf den Aussagen aus deinem ersten Thema in diesem Forum hast du folgende Leistungsanforderungen:

Software:
- Wordpress (ca. 30-35% der Aufrufe)
- phpBB3 (ca. 5-10% der Aufrufe)
- Mediawiki (ca. 55-50% der Aufrufe)

Mindestens 200 Aufrufe / Minute und das schnell...

Wenn man jetzt phpBB3 mal ausklammert hast du einen oder mehrere Blogs, sowie ein Wiki, welches für 85% der Zugriffe zuständig sind. Abgesehen von Log-Einträgen / Überarbeitung bzw. Erstellen von Einträgen sollten also die meisten Zugriffe auf die Daten (Dateisystem / Datenbank) lesend sein.

Jede Komponenten, die du verwendest (Webserver, DB, xyz) lässt sich in irgendeiner Form mit einem Cache ausstatten, so dass ein sehr großer Anteil an Zugriffen aus dem RAM bearbeitet werden kann. Dazu kommt, dass du bei dem von dir genannten Server 3 Mal mehr RAM als Nutzdaten hast, so dass du hier aus den Vollen schöpfen kannst.

Daher bleibe ich dabei, wenn Caching und DB sauber konfiguriert sind bleiben bei deinen Anforderungen eine minimale Anzahl an Zugriffen auf die SSDs.

Gruß
Markus
 
Last edited by a moderator:
Ja, das sind die Daten.

Wenn ich dich nun richtig verstanden habe, dann reicht ein RAID1 mit den SSDs aus (aus reinen Performancegründen), da die Lese-/Schreibzugriffe nicht das Limit der Lese-/Schreibzugriffe der SSDs im RAID1 überschreiten sollten (sofern natürlich mit Caches gearbeitet wird.

Super, danke dir vielmals für die Klarstellung!
 
Back
Top