Dateisystem zur Ablage sehr vieler Dateien unter Linux

15/08/2012 - 19:51 von Jens Sieckmann | Report spam
Hallo zusammen,

mein Anliegen ist recht "interdisziplinàr" oder sagen wir mal so. Ich
kann es nicht eindeutig in eine spezielle Newsgroup verorten.

Ich habe einige scheinbar simple Anforderungen an eine "storage engine"
(ich nenne es mal so). unter Linux. Es geht darum, eine große Menge an
Dateien (zunàchst nur XML) in einem Dateisystem/Cloud/Whatever abzulegen
und von dort wieder abholen zu können.

Die Dateien kommen z.B. über ein Dienstprogramm (selbst entwickelt in
PHP). Vom Dienstprogramm aus muss also die storage enginge angesprochen
werden können.

Es handelt sich um rund 1 Mio. Dateien tàglich, die ca. 1 Monat
aufbewahrt werden müssen. Die Dateien sind in im Schnitt kaum größer als
10 KB. Macht also eine Gesamtgröße von gut 300 GB. Zu Engpasszeiten
müssen 40 Dateien pro Sekunde geschrieben und mindestens genauso viele
gelesen werden können. Die Kapazitàt soll in einem zweiten Schritt noch
vergrößert werden (reden wir hier mal von einigen Terrabyte, die
Anforderung an die Lese-/Schreibgeschwindigkeit bleibt aber so).

Wie kann man so etwas realisieren? Gibt es etwas "Fertiges" (Hard- und
Software), das nur installiert werden muss? Oder kann man ein verteiltes
Dateisystem wie HDFS einsetzen, das auf bestehender Hardware aufsetzt?
Muss man etwas bei der Hardware beachten oder kann meine spezielle
Hardware samt Konfiguration empfehlen (SSD, Raid etc.)?

Man könnte auch ein Standard-Dateisystem einrichten und muss dann "nur"
auf die Verteilung der Dateien in verschiedene Verzeichnisse achten,
damit das Lesen und Schreiben von Verzeichnissen mit 100.000 und mehr
Dateien nicht ewig dauert. Gibt es vielleicht dafür eine fertige
Software-Lösung? Als PHP-Entwickler habe ich mich in dieser Richtung mal
bei Zend umgeschaut. Die haben einen Zend_Cache, der die Aufteilung der
Dateien in Verzeichnisse macht, aber bei einigen tausend Dateien schon
sehr langsam wird.

Voraussetzung ist, dass kein externer Anbieter zum Einsatz kommt. Damit
meine ich sowas wie Amazon 3S (also eine Inhouse-Lösung).

Danke,
Jens
 

Lesen sie die antworten

#1 Tim Ritberg
15/08/2012 - 20:18 | Warnen spam
Am 15.08.2012 19:51, schrieb Jens Sieckmann:
Hallo zusammen,

mein Anliegen ist recht "interdisziplinàr" oder sagen wir mal so. Ich
kann es nicht eindeutig in eine spezielle Newsgroup verorten.

Ich habe einige scheinbar simple Anforderungen an eine "storage engine"
(ich nenne es mal so). unter Linux. Es geht darum, eine große Menge an
Dateien (zunàchst nur XML) in einem Dateisystem/Cloud/Whatever abzulegen
und von dort wieder abholen zu können.

Die Dateien kommen z.B. über ein Dienstprogramm (selbst entwickelt in
PHP). Vom Dienstprogramm aus muss also die storage enginge angesprochen
werden können.

Es handelt sich um rund 1 Mio. Dateien tàglich, die ca. 1 Monat
aufbewahrt werden müssen. Die Dateien sind in im Schnitt kaum größer als
10 KB. Macht also eine Gesamtgröße von gut 300 GB. Zu Engpasszeiten
müssen 40 Dateien pro Sekunde geschrieben und mindestens genauso viele
gelesen werden können. Die Kapazitàt soll in einem zweiten Schritt noch
vergrößert werden (reden wir hier mal von einigen Terrabyte, die
Anforderung an die Lese-/Schreibgeschwindigkeit bleibt aber so).

Wie kann man so etwas realisieren? Gibt es etwas "Fertiges" (Hard- und
Software), das nur installiert werden muss? Oder kann man ein verteiltes
Dateisystem wie HDFS einsetzen, das auf bestehender Hardware aufsetzt?
Muss man etwas bei der Hardware beachten oder kann meine spezielle
Hardware samt Konfiguration empfehlen (SSD, Raid etc.)?


Ja RAID; Raid 5 wàre Standard, für mehr Power und Kosten Raid 10.


Man könnte auch ein Standard-Dateisystem einrichten und muss dann "nur"
auf die Verteilung der Dateien in verschiedene Verzeichnisse achten,
damit das Lesen und Schreiben von Verzeichnissen mit 100.000 und mehr
Dateien nicht ewig dauert. Gibt es vielleicht dafür eine fertige
Software-Lösung? Als PHP-Entwickler habe ich mich in dieser Richtung mal
bei Zend umgeschaut. Die haben einen Zend_Cache, der die Aufteilung der
Dateien in Verzeichnisse macht, aber bei einigen tausend Dateien schon
sehr langsam wird.

Voraussetzung ist, dass kein externer Anbieter zum Einsatz kommt. Damit
meine ich sowas wie Amazon 3S (also eine Inhouse-Lösung).


Ein bis zwei GB zusàtzlicher freier RAM hilft auch. Der wird dann als
Cache benutzt, damit wird das noch viel flotter.

Ähnliche fragen