it-swarm.com.de

Welches Netzwerk-File-Sharing-Protokoll bietet die beste Leistung und Zuverlässigkeit?

Wir haben ein Setup mit einigen Webservern, die einen Lastenausgleich aufweisen. Wir möchten eine Art gemeinsam genutzten Netzwerkspeicher, auf den alle Webserver zugreifen können. Es wird als Speicherort für von Benutzern hochgeladene Dateien verwendet. Alles läuft unter Linux.

Sollten wir NFS, CIFS, SMB, Fuse + SFTP, Fuse + FTP verwenden? Es gibt so viele Möglichkeiten für Netzwerk-Filesharing-Protokolle, dass es sehr schwierig ist, eines auszuwählen. Grundsätzlich möchten wir diese eine Freigabe nur dauerhaft auf mehreren Computern bereitstellen. Sicherheitsfunktionen sind weniger bedenklich, da nur von den Servern, auf denen sie bereitgestellt werden, auf das Netzwerk zugegriffen werden kann. Wir wollen nur, dass es zuverlässig und schnell funktioniert.

Welches sollen wir verwenden?

37
Apreche

Ich stimme für NFS.

NFSv4.1 hat die Funktion Parallel NFS pNFS hinzugefügt, die den parallelen Datenzugriff ermöglicht. Ich frage mich, welche Art von Clients den Speicher verwenden, wenn nur Unix-ähnlich, dann würde ich mich aufgrund der Leistungsdaten für NFS entscheiden.

29
Istvan

Die kurze Antwort lautet NFS verwenden. Nach diesem Shootout und meiner eigenen Erfahrung ist es schneller.

Aber Sie haben mehr Möglichkeiten! Sie sollten einen Cluster in Betracht ziehen FS wie GFS, ein Dateisystem, auf das mehrere Computer gleichzeitig zugreifen können. Grundsätzlich teilen Sie ein Blockgerät über iSCSI, ein GFS-Dateisystem. Alle Clients (Initiatoren in iSCSI) Sprachausgabe) kann lesen und schreiben. Redhat hat ein Whitepaper . Sie können auch den Cluster von Oracle verwenden FS OCFS um dasselbe zu verwalten.

Das Redhat-Papier macht einen guten Job und listet die Vor- und Nachteile eines Clusters auf FS vs NFS. Grundsätzlich ist GFS wahrscheinlich die Mühe wert, wenn Sie viel Skalierbarkeit wünschen. Auch das GFS Beispiel verwendet einen Fibre Channel SAN als Beispiel, aber das könnte genauso gut ein RAID-, DAS- oder iSCSI-SAN sein.

Stellen Sie zum Schluss sicher, dass Sie sich mit Jumbo-Frames befassen. Wenn die Datenintegrität kritisch ist, verwenden Sie die CRC32-Prüfsumme, wenn Sie iSCSI mit Jumbo-Frames verwenden.

21

Wir haben einen Webcluster mit 2 Servern zum Lastausgleich. Wir haben die folgenden Methoden zum Synchronisieren von Inhalten zwischen den Servern ausprobiert:

  • Lokale Laufwerke auf jedem Server werden alle 10 Minuten mit RSYNC synchronisiert
  • Eine zentrale CIFS (SAMBA) Freigabe für beide Server
  • Eine zentrale NFS Freigabe für beide Server
  • Ein gemeinsam genutztes Laufwerk SAN läuft OCFS2 hat beide Server gemountet

Die RSYNC Lösung war die einfachste, aber es dauerte 10 Minuten, bis Änderungen angezeigt wurden und RSYNC die Server so stark belastete, dass wir sie mit benutzerdefinierten Drosseln drosseln mussten Skript, um es jede Sekunde anzuhalten. Wir beschränkten uns auch darauf, nur auf das Quelllaufwerk zu schreiben.

Das gemeinsam genutzte Laufwerk mit der schnellsten Leistung war das Clusterlaufwerk OCFS2, bis es verrückt wurde und den Cluster zum Absturz brachte. Wir konnten mit OCFS2 keine Stabilität aufrechterhalten. Sobald mehr als ein Server auf dieselben Dateien zugreift, steigt die Last über das Dach und die Server werden neu gestartet. Dies kann ein Trainingsfehler unsererseits sein.

Das nächstbeste war NFS . Es war extrem stabil und fehlertolerant. Dies ist unser aktuelles Setup.

SMB (CIFS) hatte einige Sperrprobleme. Insbesondere Änderungen an Dateien auf dem SMB Server wurden von den Webservern nicht gesehen. SMB neigte auch dazu, beim Failover des SMB Server

nsere Schlussfolgerung war, dass OCFS2 das größte Potenzial hat, aber eine Menge Analyse erfordert, bevor es in der Produktion verwendet wird. Wenn Sie etwas Unkompliziertes und Zuverlässiges wünschen, würde ich einen NFS-Servercluster mit Heartbeat für das Failover empfehlen.

18
Mark Porter

Ich schlage Ihnen POHMELFS vor - es wurde vom russischen Programmierer Evgeniy Polyakov erstellt und ist sehr, sehr schnell.

5
Mateusz Kozak

In Bezug auf Zuverlässigkeit und Sicherheit scheint CIFS (auch bekannt als Samba), aber NFS "viel leichter" zu sein, und bei sorgfältiger Konfiguration ist es möglich, Ihre wertvollen Daten nicht vollständig jedem anderen Computer im Netzwerk zugänglich zu machen ;-)

Keine Beleidigung für das Fuse-Zeug, aber es scheint immer noch ... frisch zu sein, wenn Sie wissen, was ich meine. Ich weiß noch nicht, ob ich ihm vertraue, aber das könnte sein, dass ich ein alter Nebel bin, aber alter Fogeyismus ist manchmal gerechtfertigt, wenn es um wertvolle Unternehmensdaten geht.

Wenn Sie eine Freigabe dauerhaft auf mehreren Computern bereitstellen möchten und mit einigen der Verrücktheiten (meistens UID/GID-Probleme) mitspielen können, verwenden Sie NFS. Ich benutze es und habe es seit vielen Jahren.

3
Matt Simmons

NFS. Es hat sich bewährt und Sie können ein absolut solides Setup haben. Die GFS-Leistung ist im Allgemeinen schlecht, insbesondere auf Dateisystemen mit einer großen Anzahl kleiner Dateien. Ich habe OCFS nicht verwendet, aber ich bin generell verärgert über das Konzept des Cluster-Dateisystems. Dann gibt es Lustre, aber das ist eine weitere Dose Würmer ...

2
Shawn

Ich könnte etwas spät dran sein. Wir verwenden einen MD3220 Dell-Speicher mit Cluster-Dual-Port. Unser Gerät verfügt über 2 Controller, falls einer nach dem zweiten ausfällt, läuft es weiter, bis wir das Problem behoben haben. Da Festplatte, Lüfter, Netzteil und Controller Hotswap sind, ersetzen wir Teile ein und aus. Ab Format verwenden wir NFS.

1
Kevin Zafari

Ich würde von NFS abraten. Einfach ausgedrückt: Wir hatten eine Webserverfarm, in der JBoss, Apache, Tomcat und Oracle NFS-Freigaben für allgemeine Konfigurationsdateien und die Protokollierung verwendeten.

Als die NFS-Freigabe verschwand (zugegebenermaßen ein seltenes Ereignis), brach das Ganze einfach zusammen (wirklich vorhersehbar, und ich riet den "Entwicklern" von dieser Abkürzung für die Konfigurationszeit ab).

Es scheint ein Problem mit der von uns verwendeten NFS-Version zu geben, dass der Client, wenn das Ziel während eines Schreibvorgangs verschwindet, in eine nie endende Warteschleife fällt und darauf wartet, dass das NFS-Ziel zurückkommt. Selbst wenn die NFS-Box wieder angeschlossen wurde, endete die Schleife immer noch nicht.

Wir verwendeten eine Mischung aus RHEL 3,4,5. Der Speicher befand sich auf RHEL4, die Server auf RHEL5, das Speichernetzwerk war ein separates LAN und lief nicht auf vlans.

Wenn es ein Frontend mit Lastenausgleich gibt, das einen einzelnen Speicher überprüft - würde dies nicht zu einem Engpass für Ihr System führen?

Haben Sie eine schreibgeschützte iSCSI-Verbindung zu Ihrem Speicher mit einem ereignisgesteuerten Skript in Betracht gezogen, um die hochgeladene Datei beim Hochladen einer Datei über FTP/SCP in den Speicher zu verschieben?

Das einzige Mal, dass ich einen erfolgreichen zentralen Speicher für mehrere Leseköpfe implementiert habe, war ein EMV-Speicherarray ... Alle anderen kostengünstigen Versuche hatten ihre Nachteile.

1
Iain

Betrachtet man GFS? GFS ist ein Cluster-Dateisystem und meiner Erfahrung nach ziemlich zuverlässig. Es kann mehr als ein Tagebuch haben, es skaliert ziemlich gut

Sie müssten jedoch einige Clusterdienste installieren, und GFS ist nicht genau für seine Schnelligkeit bekannt. Otoh, es war immer schnell genug für mich, aber ymmv.

1
wzzrd

Sie wären nicht in der Lage, ein verteiltes FS wie GFS, und iSCSI ist übertrieben.

Wenn Sie einfach wollen, gehen Sie mit NFS. Es ist einfach und schnell und mit weichen Halterungen ziemlich robust. Deaktivieren Sie auch den gesamten dazugehörigen Sperrmüll. Ich habe Linux-Desktops, die alle ihre Home-Verzeichnisse und Anwendungen von NFS abrufen, es funktioniert gut.

Wenn Sie eine unglaubliche Geschwindigkeit wünschen, wählen Sie Lustre, das wesentlich einfacher als GFS einzurichten ist und RAID NFS sehr ähnlich ist. Wir verwenden Lustre für unsere Cluster.

1
Jim Zajkowski

Einfache Antwort +1 für NFS. Ich habe NFS-Aktien, die seit Jahren ohne Ausgabe montiert wurden.

Wenn Sie auf der Suche nach hoher Zuverlässigkeit sind, sollten Sie DRBD auch für ein verteiltes NFS-Dateisystem mit automatischem Failover in den Mix aufnehmen.

Die einzige andere Option (mit der ich vertraut bin) ist iSCSI, aber die Konfiguration kann schwierig sein ...

0
Rob Dudley

Auf einer großen Serverfarm haben mehrere Millionen Benutzer HTML-Seiten erstellt. NFS hat nicht so gut funktioniert, also haben wir sie in eine MySQL-Tabelle gestellt. Der Overhead im Vergleich zum Durchlaufen eines Verzeichnisbaums war ungefähr gleich.

0
Bill

Ich würde die Warnung wiederholen, die einige gegen NFS gegeben haben - obwohl NFS wahrscheinlich die beste Wahl ist (so seltsam das klingt).

Ich hatte einen NFS-Client, den ich zum Herunterfahren vom AC trennen musste, weil der NFS-Server verschwunden war und der Client (im Kernel) das Entsperren oder Herunterfahren verweigerte, weil der NFS-Server nicht mehr vorhanden war.

Um es richtig zu machen, würde ich durchgehend auf NFSv4 bestehen, mich an TCP -Verbindungen) halten, Jumbo-Frames verwenden und einen NFS-Cluster verwenden. Sie können es sich nicht leisten, Ihren NFS-Server verschwinden zu lassen.

0
Mei

Sie haben eine Reihe von Optionen mit einer Vielzahl von Kosten. Shared SAN mit FC, iSCSI oder einer der neueren Ergänzungen. In jedem Fall kann die Einrichtung teuer sein und Sie müssen immer noch ein clusterfähiges Dateisystem ausführen. Clustered-Dateisysteme sind eine Welt Für jede Hoffnung auf Erfolg benötigen Sie separate Hochgeschwindigkeitsnetzwerke mit geringer Latenz für die Clusterkommunikation und Daten. Selbst dann treten wahrscheinlich Störungen auf, die dazu führen, dass ein Knoten umzäunt und getötet wird.

Das einzige Cluster-Dateisystem, auf das ich gestoßen bin und das problemlos funktioniert, ist VMFS. Aber das ist so spezialisiert, dass es keinen Nutzen hätte, selbst wenn es für den allgemeinen Gebrauch verfügbar wäre.

NFS ist wahrscheinlich der richtige Weg für Ihr Setup. Wenn Sie sich Sorgen über die Ausfallsicherheit machen, benötigen Sie eine geeignete NFS-Clusterbox. Sie können ein Homebrew-Setup durchführen, würden aber das obige Problem treffen. Die beste Wahl (wenn Sie das Geld haben) sind geclusterte NetApp-Filer. Es ist eine teure Option, aber das Clustering funktioniert problemlos. Nicht nur das, sie sind sehr schnell.

0
goo

GFS ist ein ernsthaft schwarzer Voodoo. Der Arbeitsaufwand, der erforderlich ist, um einen einfachen Cluster mit zwei Clients zum Laufen zu bringen, ist im Vergleich zu den Alternativen erstaunlich. OCFS2 ist viel einfacher bereitzustellen, aber sehr wählerisch, wenn es um die Kernelmodulversionen geht, die auf allen angeschlossenen Servern verwendet werden - und das ist erst der Anfang.

Wenn Sie nicht wirklich die Art von Zugriff auf niedriger Ebene benötigen, die ein Cluster-Dateisystem bietet, ist NFS oder CIFS wahrscheinlich alles, was Sie benötigen.

0
allaryin

Wenn Sie bereits überall Webserver haben und diese gut ausführen können, sollten Sie WebDAV in Betracht ziehen.

0
pjz