Nehmen wir an, ich habe ein paar tausend große Dateien (jeweils 1-800 MB), auf die alle nach dem Zufallsprinzip zugegriffen wird, wobei auf neu hochgeladene Dateien sehr häufig zugegriffen wird. Mit der Zeit fallen die Zugriffszeiten umgekehrt quadratisch ab, aber dort Möglicherweise handelt es sich um zufällige Spitzen bei der Verwendung älterer Dateien.
Der Gesamtdurchsatz liegt im Bereich von 2 bis 4 Gbit.
Ich bin auf der Suche nach einer selbst gehosteten Lösung, nicht nach den Amazon-Angeboten, da diese viel zu teuer sind.
Was ich grob im Sinn hatte, ist Folgendes:
Teurer "Hauptserver" mit mehreren SAS-Laufwerken (oder SSDs) mit 15.000 U / min, auf denen neue Dateien gehostet werden, die gerade auf die Site hochgeladen wurden. Sobald die Download-Rate sinkt (oder die Datei ein bestimmtes Alter erreicht), wird sie auf einen der billigeren Archivknoten verschoben.
BEARBEITEN: Dateien sollen über HTTP an eine Vielzahl von Benutzern geliefert werden. Auf den Servern wird FC5 ausgeführt. Benötigen Sie meistens Lesezugriff, aber Schreiben ist auch wichtig.
Im Moment habe ich ein einfaches 2-Server-Setup mit maximal einem Gbit und ich werde verrückt nach E / A. Die Box ist mit 4K-Blöcken formatiert. Würde eine Erhöhung auf 1024K einen enormen Einfluss haben?
Antworten:
Wenn Sie diese Daten nur lokal bereitstellen, können Sie mithilfe von Standardkomponenten problemlos einen einzelnen Server mit einigen Terabyte Speicherplatz zusammenstellen. Wenn Sie ein paar Gigabit-Netzwerkkarten zusammenstellen, erhalten Sie möglicherweise den Netzwerkdurchsatz.
Wenn der Inhalt über größere Entfernungen bereitgestellt werden muss, ist es möglicherweise besser, die Daten über mehrere Felder zu replizieren. Wenn Sie es sich leisten können, können Sie die Daten vollständig replizieren. Wenn Dateien nie überschrieben werden, können grobe, auf Zeitstempeln basierende Replikationsskripte funktionieren.
Andernfalls könnten Sie sich parallele Dateisystemimplementierungen ansehen. Wenn Sie eine kostenlose Version wünschen, können Sie sich Lustre (für Linux) oder Hadoop (Multiplattform) ansehen.
quelle
All dies ist von Bedeutung:
1) viel RAM
2) mehrere Netzwerkkarten und / oder Frontends, um Engpässe zu reduzieren
3) Reverse-Proxy-Server wie Squid (siehe z. B. http://www.visolve.com/squid/whitepapers/reverseproxy.php ) oder Varnish
4) RAID-Setup für Festplatten (Streifen- oder Streifen / Spiegel-Kombination möglicherweise)
5) Auswahl des richtigen Dateisystems und, ja, der Blockgröße. XFS war früher eine gute Leistung für große Datenmengen, wahrscheinlich ist ZFS jetzt besser.
Das alles sollte helfen. Wie viel und was davon implementiert werden muss, sollten Sie in der Lage sein, basierend auf Ihren Zielanforderungen zu berechnen (dh die gesamte Nettobandbreite, die Sie nutzen möchten, den Durchsatz einer einzelnen Karte, den maximalen Durchsatz Ihrer Festplatten, die nicht überfallen und überfallen wurden usw.).
quelle
Was Sie vorschlagen, ist eine automatisierte abgestufte Speicherlösung. Dies ist keine triviale Leistung. Einige High-End-Speicheranbieter wie EMC werben für automatisierte Tiering-Lösungen, sind jedoch auf Top-End-LAN-Lösungen für Unternehmen ausgerichtet und haben einen entsprechenden Preis.
Sie sollten sich das ZFS-Speichersystem von Sun ansehen, da es die Art von Funktionen ankündigt, nach denen Sie suchen, und möglicherweise auch näher am Preis liegt.
http://blogs.oracle.com/studler/entry/zfs_and_the_hybrid_storage
quelle
Wenn Sie keine gestufte DIY-Speicheroption wünschen (wenn ich die Dateisystemverwaltungsaufgabe in Windows 2008 R2 verwenden müsste), würde ich Ihnen wärmstens empfehlen, sich eine Lösung von Compellent anzusehen. Sie würden keine zusätzlichen Knoten (per se) für eine kostengünstigere Speicherung benötigen, da Sie einfach einige schnelle Festplatten und einige kostengünstige langsame Festplatten über das Betriebssystem Ihrer Wahl von der San installieren würden. Das OOB-Feature- Set von Compellent ist zugriffsbasiertes HSM. Diese Lösung bietet auch Skalierbarkeit. Derzeit ist dieser Ansatz möglicherweise teuer (und Sie haben keine Zukunftsaussichten angegeben), aber langfristig ist er möglicherweise kostengünstiger als der Versuch, eine Rolle für Ihre eigene Lösung zu verwalten und zu warten.
quelle
Nicht klar, auf welchem Betriebssystem Sie arbeiten? Oder wenn Sie vorhaben, diese Dateien automatisch zu verschieben oder ein Skript zu schreiben, um sie für Sie zu verwalten? Wenn Sie "Zugriff" sagen, meinen Sie dies über das Web (HTTP) oder eine andere Methode?
Ich habe an einer Social-Networking-Site gearbeitet, die ein "Schließfach" für Dateien hatte. Als die Site wuchs, verbrannten wir ungefähr 200 GB pro Tag im Speicher.
Wir haben die ausgelasteten Dateien mithilfe von Webstatistiken verfolgt, die jede Nacht ausgeführt wurden. Wenn eine Datei in der Liste der Top-Dateien aufgeführt ist, aktualisiert das Skript die Datenbank und setzt die Datei auf "hohe Priorität". Dadurch wurde die Web-App angewiesen, die URL mit hoher Priorität zu verwenden und zu kopieren, um sicherzustellen, dass sich die Datei auf dem Schnellspeichersystem befindet.
Dies funktionierte ziemlich gut, bis sie sich eine skalierbare SAN-Lösung leisten konnten.
quelle
Ich habe noch nicht genug Details gehört, aber wenn ich weiß, was ich weiß, würde ich mir einen einfachen 1U-Server (oder zwei für HA) mit viel RAM ansehen, auf dem ein Betriebssystem / eine Speichersoftware Ihrer Wahl ausgeführt wird, das mit einem Xiotech Emprise 5000 verbunden ist. Angenommen, Sie können einen guten Arbeitssatz in den Speicher einbauen, dann sind die IOPS, die es bis zu den Spindeln schaffen, ziemlich breite zufällige E / A, und genau das kann die Box am besten. Sie könnten wahrscheinlich eine Kombination aus einem Server (64 GB) und einem Array (2,4 TB) für eine Berührung unter 20 KB ausführen.
quelle
Genau das tun wir mit unseren VoD-Servern, bei denen wir viele nicht gruppierte Server mit viel Speicher verwenden, um als Cache für die lokalen Festplatten zu fungieren, bei denen es sich wiederum um mehrere SAS-verbundene 25 x 2,5 "15krpm-Festplatten handelt. Diese werden dann über beide gestreamt 1-Gbit-NICs oder zwei 10-Gbit-NICs. Wir haben lange Zeit damit verbracht, die PCIe-Steckplatz- / SAS-HBA-Positionen sowie die Einstellungen für RAID-Cluster- und Festplattenblockgröße usw. zu korrigieren.
quelle
Interessantes Problem. Sieht so aus, als würden Sie eine Reihe von Raubkopien hosten: P.
Spaß beiseite, ich denke, Ihre Lösung könnte als guter Ausgangspunkt dienen. Es ist die Art von Problem, mit der Sie vertraut sein möchten, bevor Sie eine Lösung entwickeln, die entweder zu teuer oder zu begrenzt ist.
Ich würde so etwas tun:
(Wenn es funktioniert, kann ich die Server haben, wenn Sie damit fertig sind? Ich habe ein paar spikierende Experimente mit neuronalen Netzen, die ich gerne ausführen würde.)
quelle