Precache to RAM

  • Thread starter Thread starter Deleted member 11691
  • Start date Start date
D

Deleted member 11691

Guest
Hallo,

kleine Frage in die Runde hier: Ist es möglich ein Raid mit einem RAM-Precache zu entlasten?
Derzeit habe ich einen Server mit 10x2TB Festplatten im RAID10 (insgesamt 10TB Speicherplatz) und 64GB RAM. Das Raid läuft schon und gut und auch sehr schnell, allerdings noch immer zu langsam für 4Gbit/s. SSDs möchte ich keine einsetzen, da zu teuer.
Ich möchte nun, dass Linux den RAM anspricht (Precaching bzw. Buffering) und die Daten dann gleichzeitig aus dem RAM auf die Festplatte schreibt. Ich weiß natürlich, dass, sobald der RAM voll ist, es nichts mehr nützt aber 64GB. Sobald also Daten (Bytes,Bits/Blöcke/was auch immer) auf die Festplatte geschrieben wurden, soll Linux den RAM dieser Daten wieder freigeben.

Normal: User -> Festplatte (ist natürlich langsam)
Vorhaben: User -> [RAM Buffer ->] Festplatte (ist bis 64GB an Daten schneller, wird aber auch gleichzeitig live auf die Festplatte kopiert)

Ich hoffe, ihr versteht, was ich damit meine und hoffe auf eine Antwort ob und wie dies möglich wäre.
 
Wenn ich dich richtig verstehe, suchst du sowas wie Flashcache, nur mit RAM statt SSD als Zwischenspeicher. Ist das soweit richtig?
Da wäre mir persönlich nichts bekannt. Nie von sowas gehört. :/

Grüße
 
Jap. Ich meine halt, dass der richtige RAM den Cache der Festplatten, jedoch vor dem RAID10, ergänzen/erweitern soll.
 
Mit FreeBSD und ZFS als Dateisystem wäre so etwas ohne Probleme möglich. Auch SSD als Caching- Devices sind möglich. ZFS unter Linux ist m.W. immer noch experimentell.

Falls es sich um einen reinen File-Sever handelt, wäre es eventl. sinnvoll, über einen Umstieg auf FreeBSD nachzudenken. Als Out-of-the-Box-Lösung könnte auch FreeNAS interessant sein.
 
Hallo,

als OS benutze ich Debian Squeeze. Ein Umstieg auf FreeBSD ist nicht möglich, da unsere Scripte, Programme, etc. nur für Debian/Ubuntu geschrieben wurden und diese unbedingt funktionstüchtig bleiben müssen, da sich sonst auf dem File- bzw. Backupserver sonst in kürzester Zeit alles zerlegen würde.
 
Vielleicht erzählst du noch ein bisschen zu den Anforderungen des Storages und den Anwendungsszenarien. Eine Beschreibung der "Umgebung" wäre ebenfalls hilfreich.

Write-Cache im Ram ist in jedem Fall (egal wie realisiert) mit extremer Vorsicht zu genießen. Crash das System oder fällt der Strom aus, endet es in Datenmüll.
Controller mit Caches haben deswegen die Möglichkeit für BBUs. Welchen Controller du einsetzt, welche Caches er anbietet und wie er konfiguriert ist hast du uns bisher vorenthalten. :rolleyes:
Ebenso ziehst du es nicht mal in Erwägung das Dateisystem zu nennen. :confused:

Direkt im Ram des Systems Schreiboperationen zu cachen, sollte man nur mit direkt angebundener USV in Betracht ziehen. Alles was irgendwo im Rechenzentrum rumsteht, kannst du für diesen Fall vergessen. Grund: Zwischen USV und Server hängen Verteiler(-dosen) und Sicherungen. Geht bei einem anderen Server das Netzteil kaputt und die Sicherung löst aus, steht dein Fileserver trotzdem ohne Strom da.
 
Hallo,

Filesystem ist ext3. Eine direkt angeschlossene USV existiert noch nicht, werde 'mal im RZ nachfragen, ob da noch Platz für eine ist. Gibt es eventuell soetwas wie ein Write-Back Cache. RAID-Controller ist ein Adaptec. Genaue Bezeichnung hab ich nicht im Kopf.
 
Unter Beachtung obigen Hinweises zur USV:
http://de.wikipedia.org/wiki/Ext3#Journaling-Stufen

Adaptec hat alles im Sortiment, von ganz klein bis ganz groß. Natürlich gibts da auch welche mit vernünftigen Caches.
Ohne Modellbezeichnung wird dir das aber niemand sagen können und ich hoffe mal, du bist selbst in der Lage dir die Datenblätter von Adaptec herauszusuchen und durchzulesen. ;)
 
Desweiteren wäre zu klären, ob die HDDs oder der Controller oder das Filesystem oder die Metadaten des RAID oder gar das Bussystem das Bottleneck darstellt.

Ebenfalls wichtig: Was ist Dir überhaupt zu langsam? Write- oder Read-IO?
 
Wenn ich dich richtig verstehe, suchst du sowas wie Flashcache, nur mit RAM statt SSD als Zwischenspeicher. Ist das soweit richtig?
Da wäre mir persönlich nichts bekannt. Nie von sowas gehört. :/
Flashcache erweitert den RAM-basierten Cache um die Stufe 'SSD'. RAM-basierter Read/Write-Cache ist nativ bei EXT-Dateisystemen moeglich.
ZFS hat eine Flashcache-aehnliche Loesung mit dem L2ARC - aber das ist auch wieder ne Stufe weiter unten als RAM.
Read-Cache wird IMMER im Dateisysem gepuffert, Write-Cache durch Mount-Optionen konfigurierbar.

Wie Firewire2002 schon schrieb mit Vorsicht zu geniessen; Mount-Optionen
noatime,nodiratime,data=writeback,barrier=0,nobh
Dabei noch das Kommando:
tune2fs -o journal_data_writeback /dev/sdXY


Wenn du nachts gut schlafen willst dann verwende nur:
noatime,nodiratime,data=writeback
Dadurch ignoriert er access-times (was bei den meisten Servern die absolute Mehrheit der Schreiboperationen ist) und puffert Schreiben.
Bei einem Stromausfall hast du dank Journal-Rollback keine FS-Korruption aber die Daten der letzten Sekunden vor Ausfall sind weg; in vielen Faellen verkraftbar.


Uebrigens ist eine SSD nicht zu teuer wenn die Alternative der Aufbau eines grossen und teuren Hardware-RAIDs mit zig Festplatten ist.
Preis/Leistung bei SSD als Cache ist exzellent.
 
ZFS hat eine Flashcache-aehnliche Loesung mit dem L2ARC
Fast ;)
L2ARC ist der zusätzliche Read-Cache. Write-Cache schimpft sich ZIL.
Eine SSD fürs Caching einzusetzen, kann im übrigen schon recht teuer werden. MLC SSDs sind da recht ungeeignet.
 
MLC SSDs sind da recht ungeeignet
Aktuelle SSD's wie die OCZ Vertex4 haben dank klugen waer-levelling eine recht lange Lebensdauer und afaik recht viele Ersatz-Sektoren.
Selbst wenn die SSD knapp 2 Jahre haelt, so ist man mit 300 Euro je Server-Generation (ich gehe mal von ~4 Jahren aus bevor es hoffnungslos veraltet ist) in einem akzeptablen Budget.

RRAM wird ja hoffentlich auch in paar Jahren herstellbar, bezahlbar und marktreif somit sind die Probleme der SSD welche auf die groteske Vergewaltigung von kondensator-aehnlichen Strukturen zurueckzufuehren sind demnaechst Vergangenheit.
 
Desweiteren wäre zu klären, ob die HDDs oder der Controller oder das Filesystem oder die Metadaten des RAID oder gar das Bussystem das Bottleneck darstellt.

Ebenfalls wichtig: Was ist Dir überhaupt zu langsam? Write- oder Read-IO?
Write-IO ist zu langsam
Die Read-IO brauche ich nur, wenn ich Backups wieder extrahieren möchte.

Wenn du nachts gut schlafen willst dann verwende nur:
[...]
Dadurch ignoriert er access-times (was bei den meisten Servern die absolute Mehrheit der Schreiboperationen ist) und puffert Schreiben.
Bei einem Stromausfall hast du dank Journal-Rollback keine FS-Korruption aber die Daten der letzten Sekunden vor Ausfall sind weg; in vielen Faellen verkraftbar.
Gut, das ist ja verkraftbar, da Backups sowieso dann gefahren werden, wenn ich noch wach bin (00:00-01:00). Gut werde das von Dir mal probieren...

/Edit: Nope, tut nicht:

Code:
root@bc1 ~ # mount / -o remount,rw,errors=remount-ro,noatime,nodiratime,barrier=0,nobh
mount: / not mounted already, or bad option
Fehler ist hier data=writeback, wenn ich das weglasse, funktioniert es. Das ist aber glaube ich nicht der Sinn dahinter, das weg zu lassen, oder? :(
 
Last edited by a moderator:
OT: eine 20GB Intel 313 (SLC-)SSD kostet keine 100Euro. Die ist ausreichend für z.B. 4GB ZIL und ~16GB L2ARC.
 
Back
Top