PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeitsproblem



ottscho
13.12.07, 09:53
Hallo zusammen,

im folgenden Umfeld wird gearbeitet.
SLES10 Server (Suse Linux Enterprise Server) welcher über ISCSI ein Array eingebunden hat. Clients, welche über NFS auf den Server => Array zugreifen.

Problem_
Nun habe ich eine Ordner mit jede Menge Unterordnern und Dateien, welcher sich auf dem Array befindet, welches ja per ISCSI eingebunden ist. Lösche ich nun über den Server den Ordner, geht es ganz normal. Sprich die Geschwindigkeit ist GUT!

Über den SLES10 Server gibt es einige NFS Freigaben mit der Standardkofiguration, RW-Filesystem.
Logo ich mich nun auf dem Client ein, und lösche den selben Ordner über den NFS-mount, welcher sich auf dem Array befindet, so ist die Zeit des löschens unertragbar. Viel viel zu langsam....

Gebe ich allerdings über den SLES10 Server einen lokalen Ordner frei, welcher sich lokal auf der SCSI Platte im Server befindet. So funktioniert das Löschen über den Client einwandfrei.

Lösungsansatz:
Das Problem muss irgendwie mit dem Zusammenspiel von NFS und ISCSI zusammen hängen. Aber ich kann es mir nicht ganz erklären. Der ISCSI Zugriff vom Server zum Array funktioniert ja einwandfrei.

Danke für eure Infos und Hilfe.
Gruß
ottscho

bla!zilla
13.12.07, 11:05
im folgenden Umfeld wird gearbeitet.
SLES10 Server (Suse Linux Enterprise Server) welcher über ISCSI ein Array eingebunden hat. Clients, welche über NFS auf den Server => Array zugreifen.


Was für ein Server?
Was für ein Array?
Was für ein iSCSI HBA? Oder ist es ein Software-Initiator?
Anbindung über dediziertes Netzwerk oder direkt?



Problem_
Nun habe ich eine Ordner mit jede Menge Unterordnern und Dateien, welcher sich auf dem Array befindet, welches ja per ISCSI eingebunden ist. Lösche ich nun über den Server den Ordner, geht es ganz normal. Sprich die Geschwindigkeit ist GUT!


Welches Dateisystem?
Wie groß sind die Dateien im Schnitt?



Über den SLES10 Server gibt es einige NFS Freigaben mit der Standardkofiguration, RW-Filesystem.
Logo ich mich nun auf dem Client ein, und lösche den selben Ordner über den NFS-mount, welcher sich auf dem Array befindet, so ist die Zeit des löschens unertragbar. Viel viel zu langsam....


Bitte mal den Eintrag aus der /etc/exports posten.



Gebe ich allerdings über den SLES10 Server einen lokalen Ordner frei, welcher sich lokal auf der SCSI Platte im Server befindet. So funktioniert das Löschen über den Client einwandfrei.


Was heißt freigeben? Samba? NFS? Bitte detaillierter beschreiben. Welche Version von NFS wird verwendet? TCP? UDP?

Versuche bitte folgendes:

Mittels dd mal 10240 4kb Blöcke unter dem SLES auf das iSCSI System nageln. MB/s notieren. Dann das ganze mittels dd wieder lesen, also 10240 4kb Blöcke aus der erstellten Datei lesen und nach /dev/zero schreiben.

Dann das gleiche über NFS von einem Client aus. Dann haben wir mal Werte für sequential read und write über iSCSI und per NFS.

ottscho
13.12.07, 13:05
Was für ein Server?
Was für ein Array?
Was für ein iSCSI HBA? Oder ist es ein Software-Initiator?
Anbindung über dediziertes Netzwerk oder direkt?

Server: FSC PIMERGY RX300S3 Xeon 5100 mit 4 GB RAM
Array: Promise RAID-System VTrak M610i
Angeschlossen über 1Gbit Cat6 Kabel direkt ohne Switch, über Software-Inititator von Suse Linux Enterprise Server.



Welches Dateisystem?
Wie groß sind die Dateien im Schnitt?

Ext3, die Dateien würde ich sagen haben ca. 1 MB im Schnitt, aber sind sehr viele in den jeweiligen Ordnern und Unterordnern.


Bitte mal den Eintrag aus der /etc/exports posten.




/mnt/iscsi0/genesis *(fsid=0,rw,sync,root_squash)
/mnt/iscsi0/dbs_genesis *(rw,sync,root_squash)
/mnt/iscsi0/temp *(rw,sync,root_squash)
/opt/install/iso *(rw,sync,root_squash)



Was heißt freigeben? Samba? NFS? Bitte detaillierter beschreiben. Welche Version von NFS wird verwendet? TCP? UDP?


NFS-server-libary 1.1.57
yast-nfs-server 2.13.8
nfs-utils 1.0.7
nfsidmap 0.12

Zum Versuch:

Server <=> Array



srvlx01:~ # dd if=/opt/install/iso/OES2_x86_64.iso of=/mnt/iscsi0/temp/OES2_x86_64.iso bs=4000k count=10240
107+1 records in
107+1 records out
438771712 bytes (439 MB) copied, 1.62353 seconds, 270 MB/s
srvlx01:~ #




srvlx01:~ # dd if=/mnt/iscsi0/temp/OES2_x86_64.iso of=/dev/zero bs=4000k count=10240
107+1 records in
107+1 records out
438771712 bytes (439 MB) copied, 0.338143 seconds, 1.3 GB/s
srvlx01:~ #


Client <=> Server(lokal)



tw81:~> dd if=/home/kobialkaph/OES2_x86_64.iso of=/mnt/test/OES2_x86_64.iso bs=4000k count=10240
107+1 Datensätze ein
107+1 Datensätze aus
438771712 Bytes (439 MB) kopiert, 51,4045 Sekunden, 8,5 MB/s
tw81:~>




tw81:~> dd of=/dev/zero if=/mnt/test/OES2_x86_64.iso bs=4000k count=10240107+1 Datensätze ein
107+1 Datensätze aus
438771712 Bytes (439 MB) kopiert, 37,5134 Sekunden, 11,7 MB/s
tw81:~>


Client <=> Server(Array)



tw81:~> dd of=/dev/zero if=/mnt/temp/OES2_x86_64.iso bs=4000k count=10240107+1 Datensätze ein
107+1 Datensätze aus
438771712 Bytes (439 MB) kopiert, 37,5134 Sekunden, 11,7 MB/s
tw81:~>


Bleibt nach dem Befehl stehen, passiert nichts mehr. Nach 45. Min. habe ich den Rechner neu gestartet, da er sich völlig aufgehängt hatte.

bla!zilla
13.12.07, 13:11
Die Daten beim Test Client - Server (lokal) lagen auf der lokalen Platte des Servers, korrekt? Zugriff per NFS von einem Client aus, richtig?

Sieht schwer nach einem NFS Problem aus. Setz mal rsize und wsize beim mounten des NFS Shares am Client.

ottscho
13.12.07, 13:26
Die Daten beim Test Client - Server (lokal) lagen auf der lokalen Platte des Servers, korrekt? Zugriff per NFS von einem Client aus, richtig?

Sieht schwer nach einem NFS Problem aus. Setz mal rsize und wsize beim mounten des NFS Shares am Client.

richtig, die Daten lagen auf dem Server lokal. Und der Zugriff per NFS war vom Client aus. Aber hier funktoniert es ja. Nur der Zugriff vom Client, über NFS auf das Array geht nicht richtig.

Brauche ich bei rsize und wsize noch irgendwelche angaben?

edit.
so sieht nun der Abschnitt in der fstab aus:


192.92.130.19:/mnt/iscsi0/dbs_genesis /dbs_genesis rsize=8192,wsize=8192 0 0

marce
13.12.07, 13:29
Wie istdenn der Client an den Server angebunden? GB oder 100MBit-Netz?

ottscho
13.12.07, 13:33
Wie istdenn der Client an den Server angebunden? GB oder 100MBit-Netz?
Der Client an den Server 100Mbits und der Server an das Array 1GBit.

bla!zilla
13.12.07, 13:42
Na ja, so kann man das nicht vergleichen: iSCSI ist blockbasiert, NFS filebasiert. Da ist schon etwas mehr zwischen als nur das Protokoll und ein Kabel. Läuft das alles für die gleiche NIC, über die gleiche IP? Wenn ja, das mal bitte trennen!

ottscho
13.12.07, 14:00
NEIN, läuft alles über verschiedene:

Server NIC1 IP 192.168.2.19 <=> Array NIC 192.168.2.1
Server NIC2 IP 192.92.130.19 <=> Client NIC 192.92.130.245


Habe habe gerade noch gemerkt, das alles was vom Array weg geht, auch schnell geht.

Beispiel:
Habe vom Array was auf den Client per NFS kopiert. Ging sehr schnell. Danach habe ich es mit dd versucht:



dd if=/dbs_genesis/jobs/OS.iso of=/home/kobialkaph/OS.iso bs=4000k count=10240
107+1 Datensätze ein
107+1 Dasensätze aus
438771712 Bytes (439 MB) kopiert, 7,38163 Sekunden, 59,5 MB/s


Einwandfreie Zeiten würde ich sagen.

nun habe ich veruscht auf dem Array was zu löschen:
rm -Rv /mnt/gbd_genesis/jobs/test_edv
(natürlich auch über NFS)

hier kann ich zuschauen, wie er etwas im 2-3 Sekundentakt die Dateien im Ordner löscht.

Im Moment versuch ich jetzt noch mit dd ein Kopiervorgang. Bis jetzt läuft es noch ohne Ergebnis (ca. schon 10 min.)


dd if=/home/kobialkaph/OS.iso of=/dbs_genesis/jobs/OS.iso bs=4000k count=10240

marce
13.12.07, 14:02
öhm, 100MBit-Netz vom Client auf den Server und Du bekommst 59MB/s Übertragungsraten? Da dürfte wohl der lokale BS-Cache dran Schuld sein...

bla!zilla
13.12.07, 14:10
Gleicher Effekt auch bei Verwendung von SMB / CIFS?

ottscho
13.12.07, 14:20
öhm, 100MBit-Netz vom Client auf den Server und Du bekommst 59MB/s Übertragungsraten? Da dürfte wohl der lokale BS-Cache dran Schuld sein...

BS-Cache? Kann ich nicht viel zusagen. Ist im Moment eine Testumgebung.

Server hängt mit 1Gbit an einem Switch, Switch hängt mir 100MBit einem einem anderen Switch, und Client hängt mit 100MBit am besagtem Switch.

Die Frage ist ja, was das iSCSI Array an Übertagung kann ;)

bla!zilla
13.12.07, 14:25
Du hast aber kein Problem mit dem iSCSI Kram, sondern entweder mit NFS, oder dem Rest deiner Serverkonfiguration.

ottscho
13.12.07, 14:38
SMB bzw. CIFS habe ich nicht installiert.
Benötige ich nicht, da nur Linux Clients auf den Server zugreifen.

Soll ich es nun extra für den Test installieren, oder gibt es noch andere Möglichkeiten?

bla!zilla
13.12.07, 14:50
Extra installieren. Ist doch ein Testumgebung und du hast ein Problem. Der Zweck heiligt die Mittel. Wir können aber auch gerne weiter im Dunkeln rumstochern.

ottscho
13.12.07, 15:24
Extra installieren. Ist doch ein Testumgebung und du hast ein Problem. Der Zweck heiligt die Mittel. Wir können aber auch gerne weiter im Dunkeln rumstochern.

so, habe nun über den SambaServer eine Freigabe eingerichtet und per CIFS gemountet:


tw81:~> dd if=/mnt/test/jobs/OES2_x86_64.iso of=/dev/zero bs=4000k count=10240
39+1 Datensätze ein
39+1 Datensätze aus
161083392 Bytes (161 MB) kopiert, 15,7577 Sekunden, 10,2 MB/s


Das löschen per hand, rm -Rv etc. funktioniert nun auch einwandfrei.

bla!zilla
13.12.07, 15:27
Dann hast du ein Problem mit NFS: Teste mal die rsize und wsize Parameter. Versuch mal NFS über TCP statt UDP.

ottscho
13.12.07, 15:44
Dann hast du ein Problem mit NFS: Teste mal die rsize und wsize Parameter. Versuch mal NFS über TCP statt UDP.

Danke für deine Unterstützung.
Wo stelle ich bei NFS das Protokoll ein? Ich hab die Freigabe über YAST/NFS-Server erstellt.

Die rsize und wsize Werte kann ich nur auf dem Client testen, oder lässt sich da auf dem NFS-Server noch was machen?

bla!zilla
13.12.07, 15:49
Genau, rsize und wsize mal anpassen und testen. Teste async in der /etc/exports und eat this: *klick* (http://www.novell.com/coolsolutions/feature/17581.html)

ottscho
13.12.07, 16:00
Teste async in der /etc/exports
Du hast einen Orden verdient :) :)



root@tw81:/mnt/NFS/jobs# dd if=/mnt/NFS/jobs/OES2_x86_64.iso of=/dev/zero bs=4000k count=10240
39+1 Datensätze ein
39+1 Datensätze aus
161083392 Bytes (161 MB) kopiert, 14,0123 Sekunden, 11,5 MB/s
root@tw81:/mnt/NFS/jobs#

bla!zilla
13.12.07, 16:04
Damit geht es auch beim löschen schnell?

ottscho
13.12.07, 16:19
Damit geht es auch beim löschen schnell?

ja, damit geht es auch beim löschen schnell.
aber ich verstehe den Zusammenhang noch nicht ganz.

Client<=NFS=>Server lokal, hat alles einwandfrei mit der default NFS Freigabe funktioniert.

Client<=NFS=>Server Array, brauche ich die Option "async" für einen guten Datendurchsatz.

bla!zilla
13.12.07, 16:26
Schau dir den Traffic mal per Wireshark o.ä. an. Bei sync muss jeder Block, der auf dem Array landet, direkt bestätigt werden. Bei async geht das mit mehreren Blöcken. Da das auch über IP geht summiert sich das alles hoch. Möglicherweise auch ein Problem mit den Netzwerkkartentreibern, der TOE der NIC o.ä.

ottscho
14.12.07, 07:48
Danke für deine Hilfe.
Werde ich mir mal anschauen. Die Netzwerkkarten müssen sowieso noch mal unkonfiguriert werden. Ich weiß nur noch nicht, wie ich es anstellen muss.

Hast du eine Ahnung, wie ich aus 2 Netzwerkarten ein Team machen kann?

bla!zilla
14.12.07, 08:23
Stichwort Bonding. Google mal danach. Ist recht easy.

ottscho
14.12.07, 09:32
danke, ich habe hier diesen Artikel gefunden
http://www.informatik.uni-bremen.de/~mwiesner/howto-multinic.html

Aber es ist doch ziemlich komplex. Hast du mir evtl. einen anderen Link, wo das "Bonding" gut und verständlich beschrieben ist?

Danke dir

edit. hab noch was gefunden ;)
http://www.linuxforen.de/forums/archive/index.php/t-217116.html

Ich denke damit komme ich klar