PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Partitionierung



martin
10.01.08, 21:27
Hallo,

ich hab da mal ne Frage zur Partitionierung meines Systems. Status quo sieht wie folgt aus:

1. Raid Controller
Level 1
2 x 73 GB, 15.000 rpm SAS
LINUX

2. Raid Controller
Level 5
3 x 146 GB, 15.000 rpm SAS
NOCH LEER

Bisher war das System nur als DB Server vorgesehen, nun aber wurde ich gebeten, zu prüfen, ob man den Rechner auch zusätzlich als Fileserver nutzen kann. Speicher Bedarf hierfür zusätzlich 600GB. Die Datenbank braucht ca. 100 GB.
Nun zu meiner Frage: Wie teile ich den Speicher des 2ten Controllers am besten ein? Macht es in Hinsicht auf die Performance einen Unterschied, ob ich die Datenbank und die Mitarbeiter-Daten auf eine Partition tue, oder für Datenbank und Daten jeweils eine eigene Partition erstelle. Am liebsten wäre mir natürlich wenn ich bei der Lösung mit nur einer Partition bleiben kann, damit ich mich jetzt nicht auf ein Verhältnis DB und Daten festlegen muss.

Oder wäre es doch ratsam einen zusätzlichen Server für die Daten zu holen?

Vielen Dank!

Martin

cane
10.01.08, 22:02
2. Raid Controller
Level 5
3 x 146 GB, 15.000 rpm SAS
NOCH LEER

[...]
Speicher Bedarf hierfür zusätzlich 600GB. Die Datenbank braucht ca. 100 GB.

Du hast mit den genannten Arrays gar keine 600 GB zur Verfügung --> Vorhaben unmöglich --> Platten kaufen :)

mfg
cane

martin
10.01.08, 23:11
Ja, ich weiß. Wenn ich keinen zusätzlichen Fileserver kaufe, muss ich Platten kaufen. Bei der aktuellen Konfiguration wäre das dann noch 3 x 146 GB.

Es geht mir aber erst mal um die Frage mit der Partitionierung.

cane
11.01.08, 00:13
Okay,



Oder wäre es doch ratsam einen zusätzlichen Server für die Daten zu holen?

das kann niemand ausser dir wissen - das hängt davon ab wieviel I/O deine Datenbank(en) brauchen.

Generell ist es sinnvoll alle 6 Platten in einen RAID Verbund zu packen da mit der Anzahl der Spindeln die möglichen I/O's zunehmen.

Etwas anderes ist es wenn die Fileserver Funktionalität ans I/O Limit geht - dann könnte es sinnvoller sein einen eigenen Array für die Datenbank zu verwenden der vom Fileserver Array nicht beeinflusst wird. Hier ist aber wiederum fraglich ob nicht eher die Netzwerkanbindung das Bottleneck ist. Das wiederum könnte man durch QoS für die datenbankanbindung, sofern diese über Netz erfolgt, lösen.

--> Es gibt kein Allgemeinrezept - nur Du kannst messen, testen oder wissen was optimal ist.

mfg
cane

bla!zilla
11.01.08, 08:33
Überlegen wir doch mal.... RAID 5 ist für eine DB schon mal schlecht. Eine Datenbank macht i.d.R. sog. Short Writes, in einem kompletten Stripe von drei Blöcken (drei Platten, zwei Datenblöcke, ein Parityblock) wird also i.d.R. nur einer geändert. Ein logischer Write endet in vier physikalischen I/Os (Block lesen, Parity lesen, Partiy neu berechnen, Block_Neu schreiben und Partiy_Neu schreiben). Schon Mist... Dazu kommt das deine SAS Platten im besten Fall round about 660 IOPS machen. Bei RAID 1 bleiben dir bei einem Write immer noch 220 IOPS (zwei Platten plus Spare). Bei RAID 5 mit drei Platten nur ca. 165 I/Os. Es ist schon etwas komplizierter, aber das gibt einem eine ganz gute Vorstellung davon. Bei Lesen sieht es anders aus. Da geht es dann etwas in Richtung RAID 5. Ist aber auch unfair, da wir hier zwei mit drei Platten vergleichen.

Nun hat du aber zwei Anwendungen: Datenbanken machen oft Short Write, Fileserver eher Long Writes. Wenn du Leistung brauchst, trenne die Anwendungen und verwende lieber 72 GB Platten, und dafür die doppelte Anzahl. Mehr Spindeln = Mehr IOPS.

Ich würde beide Anwendungen nicht auf ein Array legen, zudem ist das RAID 5 suboptimal für Datenbanken. Read- und Write-Caches auf dem Controller können das etwas leveln, aber nicht bis zum Ende.

marce
11.01.08, 08:57
Und als Tipp: Leg die DB-Logs ja nicht auf das gleiche Raidset, auf dem die Daten drauf sind...

cane
11.01.08, 12:12
@bla!zilla

Top post :)
Bekommt man eigentlich irgendwo online Whitepapers die soetwas ähnlich detailliert und praxisnah abhandeln?

Edited:
Kris Koehntopp hat auch ein paar nette Erklärungen in seinem Blog: http://blog.koehntopp.de/archives/1711-RAID-5.html

mfg
cane

bla!zilla
11.01.08, 12:15
Whitepapers dazu habe ich bisher nicht gesehen. Bei Adaptec ist mir mal ein Vergleich von RAID 5 vs. RAID 10 über den Weg gelaufen. Der Rest ist eine bunte Ansammung von in der Praxis gesammelten Erfahrungen, KnowHow aus Vorlesungen, den Weiten des Internets und von Hersteller. :)

martin
11.01.08, 13:00
Hallo bla!zilla,

Du scheinst dich ja echt gut auszukennen. Ich hatte vergessen zu erwähnen, dass es sich um ein OLAP system handelt. Geschrieben wird zu 99% einmal im Quartal. Darum habe ich mich damals für Raid5 entschieden.
An der Platten-Konfiguration kann ich erst mal nicht viel ändern, höchstens 2-3 zukaufen.
Wenn der Fileserver eher long writes macht, kann ich ihn dann auch auf das 2te array legen?

Optional könnte ich die DB auf das erste Array mit Raid 1 legen, allerdings ist da schon das BS mit Swap drauf. Was meinst Du?

marce
11.01.08, 13:08
Daten uns System solltest Du getrennt halten.

Ansonsten: DBs schreiben auch, wenn nur gelesen wird - deswegen ja auch die Logs der DB am besten auf ein separates RaidSet.

bla!zilla
11.01.08, 13:26
Ich hatte vergessen zu erwähnen, dass es sich um ein OLAP system handelt. Geschrieben wird zu 99% einmal im Quartal. Darum habe ich mich damals für Raid5 entschieden.

Die Info wäre nett gewesen. Bei einem OLAP System kann man ruhig RAID 5 wählen, da hier eindeutig mehr gelesen, als geschrieben wird. Faustregel: OLAP = RAID 5, OLTP = RAID 1+0.



An der Platten-Konfiguration kann ich erst mal nicht viel ändern, höchstens 2-3 zukaufen.

Ja, auf jeden Fall machen!



Wenn der Fileserver eher long writes macht, kann ich ihn dann auch auf das 2te array legen?

Je nach Server würde ich die PLatten in ein Array packen und dann zwei logische Laufwerke darauf anlegen. So wird das z.B. bei Smart Array Controllern von HP gehandhabt. Ein Array ist nur ein Zusammenschluss von Platten, ein logisches Laufwerk quasi "das RAID".

Lieber viele kleine Spindeln, als wenige große Spindeln.



Optional könnte ich die DB auf das erste Array mit Raid 1 legen, allerdings ist da schon das BS mit Swap drauf. Was meinst Du?

Ganz schlechte Idee.


Daten uns System solltest Du getrennt halten.


Absolut richtig.



Ansonsten: DBs schreiben auch, wenn nur gelesen wird - deswegen ja auch die Logs der DB am besten auf ein separates RaidSet.

Bei OLAP ist das aber relativ. OLAP DBs werden ja i.d.R. nur einmal gefüllt und dann werden nur noch Anfragen darauf losgelassen. Daher kann man z.B. das schreiben von REDO Logs abschalten (bei Oracle).

marce
11.01.08, 13:32
Da würde ich vorher mal das jeweilige System nach überprüfen - z.T. werden dort ja für die Abfrage "etwas größere" dynamische Tabellen angelegt um irgendwelche temp. Subqueries unterzubringen...

bla!zilla
11.01.08, 13:38
Ja, korrekt. REDO würde ich trotzdem abschalten. Temp-Tables kann man zur Not auch auf schnellere Disks auslagern. Aber: Da OLAP Systeme i.d.R. nicht sooo performancekritisch sind wie z.B. ein OLTP, sehen Anwender viele davon ab. Trotzdem hast du Recht mit der Aussage. Hängt halt immer von den Anforderungen ab. :)

martin
11.01.08, 13:41
Wow, Dich könnten wir hier gut gebrauchen ;-)

Also ist meine Konfiguration für die ursprüngliche Anforderung, also an ein OLAP System, gar nicht so verkehrt? Naja, ich hätte besser 76er Platten nehmen sollen, aber der Preisunterschied war bei Dell nicht so groß.

Dass ich Linux auf ein Raid 1 gepackt habe, was hälst Du davon: ok oder eher suboptimal?

Vielleicht kann ich noch mal bei meinem Chef 1000-2000 für einen kleinen FileServer rausschlagen. Bekommt man mit dem Geld noch was vertretbares? Bzw. gibts da ne Lösung, dass ich meinen jetzigen Server irgendwie Plattenplatzmässig extern erweitern kann?

Der Traffic wird nicht soo hoch sein. Haben ca. 20 Mitarbeiter die dort ihre Projekte speichern.

bla!zilla
11.01.08, 13:52
Wow, Dich könnten wir hier gut gebrauchen ;-)

Ihr könnt mich über meinen Arbeitgeber buchen. :D



Also ist meine Konfiguration für die ursprüngliche Anforderung, also an ein OLAP System, gar nicht so verkehrt? Naja, ich hätte besser 76er Platten nehmen sollen, aber der Preisunterschied war bei Dell nicht so groß.


Verstehe. Wichtig ist: Mehr Platten = mehr IOPS.



Dass ich Linux auf ein Raid 1 gepackt habe, was hälst Du davon: ok oder eher suboptimal?


Macht auf jeden Fall Sinn! Linux sollte mit dem Controller in der DELL Kiste umgehen können, die PERCs sind ganz gut supported.



Vielleicht kann ich noch mal bei meinem Chef 1000-2000 für einen kleinen FileServer rausschlagen. Bekommt man mit dem Geld noch was vertretbares? Bzw. gibts da ne Lösung, dass ich meinen jetzigen Server irgendwie Plattenplatzmässig extern erweitern kann?


Steck das Geld in zusätzliche Platten und erweiter das RAID 5 mit drei Platten auf 6 oder mehr.



Der Traffic wird nicht soo hoch sein. Haben ca. 20 Mitarbeiter die dort ihre Projekte speichern.

Das ist relativ. :) Ich habe DB Server gesehen die größer waren, auf dem weniger Leute georgelt haben und die trotzdem nicht mit der Arbeit nachkamen. :)

Welche DB kommt zum Einsatz, wie sieht der Rest vom Server aus?

martin
11.01.08, 13:55
Nur MySQl ist drauf. BS ist SLES 10.

EDIT: Achso, die Konfig :D

8 GB Ram, 2.66 Quad Core, Die Platten halt und zwei Netzwerkkarten

bla!zilla
11.01.08, 14:17
Bei MySQL lässt sich viel optimieren, es macht auf jeden Fall Sinn mal mit der Storage-Engine zu spielen. MyISAM kann bei solchen Konstrukten oft performanter als InnoDB sein.

martin
12.01.08, 14:00
Ich wollt gern noch mal kurz auf die Partitionierung zurückkommen. Von der Administration her wärs mir lieber, wenn ich aus dem 2ten Controller eine einzige machen kann, ohne große Verluste bzgl. der Performance. Also DB und Daten auf eine Partition mit Level5.

Habe ich Dich richtig verstanden, dass wenn ich mehrere Partitionen an einem Controller habe auch für jede Partition ein eigenes Raid Level bestimmen kann, oder ist das Level an den Controller gebunden?

Dell empfiehlt lvm einzusetzen, so wie sie es auf dem ersten Controller auch gemacht haben. Macht das in meinem Fall Sinn?

Danke!

martin
12.01.08, 14:20
Edit: Welches Dateisystem wäre eigentlich optimal. Dell setzt ja voll auf Reiser

marce
12.01.08, 17:06
Ich wollt gern noch mal kurz auf die Partitionierung zurückkommen. Von der Administration her wärs mir lieber, wenn ich aus dem 2ten Controller eine einzige machen kann, ohne große Verluste bzgl. der Performance. Also DB und Daten auf eine Partition mit Level5.

Habe ich Dich richtig verstanden, dass wenn ich mehrere Partitionen an einem Controller habe auch für jede Partition ein eigenes Raid Level bestimmen kann, oder ist das Level an den Controller gebunden?

Dell empfiehlt lvm einzusetzen, so wie sie es auf dem ersten Controller auch gemacht haben. Macht das in meinem Fall Sinn?

Danke!
Du würfelst hier die Begriffe ziemlich durcheinander...

Der Kontroller liefert zuerst mal logische Festplatten an das OS - und je nach Controller können das div. RaidSets mit div. Raidleveln sein. Auf diesen Festplatten kann nun das OS Partitionen (reale oder über LVM) erstellen, diese wiederum werden dann mit einem Dateisystem formatiert.

Welches Du da nimmst ist "relativ" egal - natürlich kann man das Dateisystem anhand der speziellen Anforderungen auswählen (evtl. Vergrößern im Betrieb, Journaling ja/nein, Performance bei großen oder kleinen Dateien, Beschränkungen, sonstige Eigenheiten, Unterstützung durch andere OS, ...).

ReiserFS an sich ist ok, ist gerade nur etwas aus der Mode gekommen...

bla!zilla
12.01.08, 17:39
Ich wollt gern noch mal kurz auf die Partitionierung zurückkommen. Von der Administration her wärs mir lieber, wenn ich aus dem 2ten Controller eine einzige machen kann, ohne große Verluste bzgl. der Performance. Also DB und Daten auf eine Partition mit Level5.

Im Prinzip spricht nichts dagegen, sofern die Performance nicht darunter leidet. Optimal ist sicherlich etwas anderes.



Habe ich Dich richtig verstanden, dass wenn ich mehrere Partitionen an einem Controller habe auch für jede Partition ein eigenes Raid Level bestimmen kann, oder ist das Level an den Controller gebunden?


Ich weiß nicht genau wie das die PERCs machen, schon lange nichts mehr mit den Dingern gemacht. Ein RAID Controller liefert an das Betriebssystem nur eine virtuelle Festplatte. Die HP Smart Array Controller finden Platten zu einem Array zusammen. In diesem Pool an Speicher kann ich logische Laufwerke anlegen. Diese haben ein definiertes RAID Level. Dieses logische Laufwerk wird an das OS präsentiert. Du kannst also auf einem Verbund von vier Platten ein RAID 1+0 anlegen und ein RAID 5. Hängt immer vom Einsatzzweck ab.



Dell empfiehlt lvm einzusetzen, so wie sie es auf dem ersten Controller auch gemacht haben. Macht das in meinem Fall Sinn?


LVM ist immer gut. Für das Betriebssystem würde ich nicht machen, aber für Daten und Applikationen auf jeden Fall.


Edit: Welches Dateisystem wäre eigentlich optimal. Dell setzt ja voll auf Reiser

ext3 oder XFS. ReiserFS würde ich nicht mehr einsetzen, die Zukunft ist ungewiss. JFS ist noch recht buggy.

cane
13.01.08, 07:37
Edit: Welches Dateisystem wäre eigentlich optimal. Dell setzt ja voll auf Reiser

ReiserFS sollte man IMO generell nicht verwenden, ich habe in der Vergangenheit abseits von theoretischem Performancegeblubber nur schlechte Erfahrungen gemacht.

Die Krönung ist das beim Versuch ein ReiserFS Dateisystem zu reparieren fast immer irgendwas in die Fritten geht, wird man zu einem –rebuild-tree aufgefordert hilft auch dem Atheisten nur noch Beten ;)

Sagt eigentlich alles:
http://www.google.de/search?q=reiser+fsck&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:de:official&client=firefox-a

mfg
cane