• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Geschachtelte Netzwerk-Protokolle (cifs -> nfs)

gehrke

Administrator
Teammitglied
Moin *,

ich habe hier ein Problem, welches ich nicht so genau einem Themenbereich zuordnen kann und lade es erstmal unter 'Netzwerk' ab. Kandidaten sind Netzwerk oder KVM oder Samba oder NFS. Es ist etwas komplizierter, daher muss ich leider vorweg etwas ausholen...

Und um noch weiter auszuholen: Ich habe dieses Thema zuvor schon hier http://www.linux-forum.de/geschachtelte-netzwerk-protokolle-cifs-nfs-2299091.html gepostet, aber bislang keine Antwort bekommen. Da mir das Thema wichtig ist, war ich zu einem Crossposting gezwungen.

Ich habe einen TechniSat TV 'Multyvision', welcher Inhalte aus dem LAN darstellen kann. Dabei stehen CIFS und DLNA(UPNP) als Protokolle zur Auswahl. Ich habe auf einem Server (CentOS 6.2) eine fette Multimedia-Sammlung (~4 TB).

Bei meinen ersten Versuchen habe ich festgestellt, dass das TV nicht mit der Samba-Version von CentOS 6.2 zurechtkommt, sondern auf einer älteren Version besteht (ein TCP-Dump zeigte, dass dort als CIFS-Client ein 'FUSION_CIFS_DEMO' verbaut ist - Google sagt, das Problem mit neueren Samba-Versionen haben andere auch bei diesem TV).

Da das Samba auf dem Server aber an anderer Stelle genutzt wird und ich das nicht anfassen wollte, habe ich eine virtuelle Maschine auf Basis von KVM aufgebaut, in welcher CentOS 5.7 mit Samba 3.0.33-3.29.el5_6.2 läuft. TV und diese VM liegen in einem separaten Netzwerk (172.16.13.0/24). Das funktioniert prima, denn das TV zeigt alle Formate (Video, Bilder, Musik) problemlos mit ausreichender Performance von dieser VM an, solange die Daten lokal auf der VM liegen.

Aber die Daten liegen auf dem nativen KVM-Host und nicht im Dateisystem der virtuellen Maschine. Das muss auch so bleiben, denn sie werden dort verwendet. Eine stumpfe Kopie verbietet sich aus vielen Gründen, nicht zuletzt weil wir hier über Terrabytes reden.

Also musste ich eine Lösung finden, die Daten in die VM als Referenz hineinzubekommen. Dazu sind mir zwei Wege eingefallen: Ein Cluster-Dateisystem (OCFS2 + Co.) oder die Anbindung über NFS. Ein Cluster-Dateisystem habe ich mir nicht zugetraut. Da die Daten eh schon über NFSv4 vom Host verteilt werden, habe ich diese Lösung versucht, wobei hier zwei Netzwerk-Protokolle hintereinander geschaltet werden müssen: NFS auf dem Host und Samba/CIFS auf der VM. Gewisse Einbussen in Sachen Performance würde ich da durchaus erwarten.

Prinzipiell funktioniert das Verfahren, aber ich habe ganz seltsame Performance-Messungen gemacht. Ach ja, und das TV weigert sich, Inhalte von diesem Samba-Share anzuzeigen. Die Files werden zwar gelistet, aber nicht angezeigt. Wobei ein zweites Samba-Share mit lokalen Daten bei exakt gleicher Konfiguration auf dem selben Server funktioniert.
Warum ich dann behaupte, dass das prinzipiell funktioniert? Weil ich ein OpenSUSE-Notebook in das 13er-Netz hängen kann und dort fehlerfrei mit smbclient oder über Dolphin (smb://vm1/...) auf die Files zugreifen kann, wenn auch etwas lahm.


Derzeit bin ich ziemlich ratlos. Ein Ansatzpunkt sind die Messwerte zur Performance, die für mich teilweise verwirrend sind.

Der KVM-Host heisst 'j4', die virtuelle Maschine 'vm1' und das OpenSUSE-Notebook 'j3'.

Auf vm1 ist das NFS von j4 so gemountet:
Code:
[root@vm1 ~]# grep 'j4' /etc/fstab 
j4-private:/            /var/spool/samba/nfs    nfs4  defaults           0 0

[root@j4 ~]# cat /etc/exports 
/home/paul/nfs  172.16.11.0/24(rw,sync,fsid=0)
/home/paul/nfs  172.16.17.0/24(rw,sync,fsid=0)
/home/paul/nfs-test 172.16.13.0/24(rw,sync,fsid=0)

Die smb.conf enthält zwei Shares, einmal mit dem lokalen Dateisystem und zum anderen mit dem gemounteten NFS. Sonst ist alles identisch:
Code:
       [no-nfs]
       comment = Private Videos und Fotos 
       path = /var/spool/samba/no-nfs
       public = yes
       writable = no
       printable = no
        guest ok = yes
       browseable = yes
       read only = No

       [nfs]
       comment = Private Videos und Fotos
       path = /var/spool/samba/nfs/
       public = yes
       writable = no
       printable = no
        guest ok = yes
       browseable = yes
       read only = No

Code:
[root@j4 ~]# ls -ltar /home/paul/nfs-test/
-rw-rw-r--.  1 paul private     987141 22. Dez 2011  DSCF5107.JPG                                                                                            
-rw-r--r--.  1 paul private    3837738 28. Dez 2011  07 - Meeting Across the River.mp3                                                                       
-rw-r--r--.  1 paul private 3109984256  4. Nov 20:59 209_2012.08.23_11-03-59.mpg

Code:
[root@vm1 ~]# ls -ltar /var/spool/samba/nfs
-rw-rw-r-- 1 paul private     987141 22. Dez 2011  DSCF5107.JPG
-rw-r--r-- 1 paul private    3837738 28. Dez 2011  07 - Meeting Across the River.mp3
-rw-r--r-- 1 paul private 3109984256  4. Nov 20:59 209_2012.08.23_11-03-59.mpg

Jetzt zu den Messwerten:

1. Reiner NFS-Zugriff:
Code:
[root@vm1 samba]# time cp nfs/209_2012.08.23_11-03-59.mpg no-nfs/
real    16m36.143s
user    0m0.408s
sys     0m10.560s

[root@vm1 samba]# rpm -q nfs-utils
nfs-utils-1.0.9-60.el5

2. Reiner CIFS-Zugriff vom Notebook:
Code:
paul@j3:~> time smbclient //vm1/no-nfs/ --user=anonymous --no-pass -c 'get 209_2012.08.23_11-03-59.mpg'
Anonymous login successful
Domain=[GEHRKE] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
getting file \209_2012.08.23_11-03-59.mpg of size 3109984256 as 209_2012.08.23_11-03-59.mpg (9551,2 KiloBytes/sec) (average 9551,2 KiloBytes/sec)
real    5m19.081s
user    0m9.134s
sys     0m31.151s

3. Geschachtelte Protokolle:
Code:
paul@j3:~> time smbclient //vm1/nfs/ --user=anonymous --no-pass -c 'get 209_2012.08.23_11-03-59.mpg'
Anonymous login successful
Domain=[GEHRKE] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
getting file \209_2012.08.23_11-03-59.mpg of size 3109984256 as 209_2012.08.23_11-03-59.mpg (5414,1 KiloBytes/sec) (average 5414,1 KiloBytes/sec)
real    9m21.791s
user    0m9.779s
sys     0m31.744s

4. SCP in die andere Richtung:
Code:
[root@j4 ~]# time scp -i /home/paul/.ssh/id_rsa /home/paul/nfs/video/multyvision/209_2012.08.23_11-03-59.mpg root@vm1:/var/spool/samba/no-nfs
Enter passphrase for key '/home/paul/.ssh/id_rsa': 
209_2012.08.23_11-03-59.mpg                                                                         100% 2966MB   3.7MB/s   13:23    
real    13m35.002s
user    0m18.256s
sys     0m8.712s

5. Reiner NFS-Zugriff auf anderem System/Netz:
Code:
paul@j3:~> time cp j4.nfs/video/multyvision/209_2012.08.23_11-03-59.mpg .
real    4m26.593s
user    0m0.032s
sys     0m10.718s

Insbesondere den Vergleich von Fall 1 und 3 finde ich fragwürdig. Wie kann es sein, dass in Fall 1 die Kopie via NFS 16 Minuten dauert, aber der vermeintliche Umweg bei Fall 3 mit 9 Minuten deutlich schneller ist, obwohl dort ja in Teilen der selbe Weg eingeschlagen wird, nur mit einer externen Station zusätzlich.

Code:
Fall 1:                    cp@vm1 -> NFS-Client@vm1 -> NFS-Server@j4 : 16 Min
Fall 3: smbclient@j3 -> samba@vm1 -> NFS-Client@vm1 -> NFS-Server@j4 :  9 Min

BTW: Alle Zeitmessungen habe ich mehrfach durchgeführt.


Bitte um Hilfe!
TNX

cu, Paul
 

spoensche

Moderator
Teammitglied
Je nach dem welche KVM Version bei dir werkelt, kannst du virtfs verwenden. Mit virtfs können Gast und Host Dateien austauschen.
 
OP
gehrke

gehrke

Administrator
Teammitglied
Moin spoensche

spoensche schrieb:
Je nach dem welche KVM Version bei dir werkelt, kannst du virtfs verwenden. Mit virtfs können Gast und Host Dateien austauschen.
Wow, das ist auf den ersten Blick ziemlich genau das, was ich ursprünglich machen wollte. Das will ich versuchen...

Bis hierhin vielen Dank!

cu, Paul
 
OP
gehrke

gehrke

Administrator
Teammitglied
gehrke schrieb:
spoensche schrieb:
Je nach dem welche KVM Version bei dir werkelt, kannst du virtfs verwenden. Mit virtfs können Gast und Host Dateien austauschen.
Wow, das ist auf den ersten Blick ziemlich genau das, was ich ursprünglich machen wollte. Das will ich versuchen...
Das ist leider derzeit keine Option für mich, weil nicht von CentOS supported. :-(

Irgendwelche anderen Vorschläge/Hinweise???
TNX


cu, Paul
 
OP
gehrke

gehrke

Administrator
Teammitglied
gehrke schrieb:
Das ist leider derzeit keine Option für mich, weil nicht von CentOS supported. :-(
Irgendwelche anderen Vorschläge/Hinweise???
Mangels weiterer Vorschläge, eigener Inspiration und Geduld habe ich die Lösung nicht mehr weiter verfolgt.

Alternativ habe ich nun nativ auf dem Host 'j4' 'minidlna' am Laufen, das funktioniert quasi out-of-the-box mit diesem TV und alle sind glücklich. Nur mein Selbstwertgefühl ist arg beeinträchtigt ob des Scheiterns.


cu, Paul
 

spoensche

Moderator
Teammitglied
Dein Selbstwertgefühl brauch nicht beinträchtig sein. Die von CentOS mitgelieferte KVM Version unterstüzt virtfs nicht bzw. ist noch nicht implementiert gewesen und aher kannst du überhaupt nicht gescheitert sein.

Für die Dateifreigabe zwischen Linux Rechnern verwendest du am besten NFS. Samba brauchst du nur wenn so ein Fenstersystem auf die Daten zugreifen will.

Für NFS benötigst du auf dem KVM-Server:
Pakete:
- Portmapper
- NFS-Server

Für die Client VM:
NFS-Client

Falls von deiner Seite aus noch Interesse vorhanden ist, helfe ich ir gerne.
 
OP
gehrke

gehrke

Administrator
Teammitglied
Moin spoensche

spoensche schrieb:
Dein Selbstwertgefühl brauch nicht beinträchtig sein. Die von CentOS mitgelieferte KVM Version unterstüzt virtfs nicht bzw. ist noch nicht implementiert gewesen und aher kannst du überhaupt nicht gescheitert sein.

Für die Dateifreigabe zwischen Linux Rechnern verwendest du am besten NFS. Samba brauchst du nur wenn so ein Fenstersystem auf die Daten zugreifen will.

SMB/CIFS war eine von zwei Möglichkeiten, das Zeug auf das TV zu transportieren. Die andere war DLNA, was sich im Nachhinein als die bessere Wahl herausgestellt hat.

spoensche schrieb:
Für NFS benötigst du auf dem KVM-Server:
Pakete:
[...]
Falls von deiner Seite aus noch Interesse vorhanden ist, helfe ich ir gerne.

Das ist soweit schon klar und läuft hier ja auch schon seit geraumer Zeit. Wie geschrieben funktionierte das ja soweit auch alles, sogar die hintereinander geschalteten Protokolle funktionierten mit 'nem smbclient recht gut. Nur leider nicht mit dem verdammten TV.

Ich werde in diese Lösung keine Energie und Zeit mehr investieren, da minidlna eine scheinbar bessere (insbesondere einfachere) Lösung bietet.

Allerdings werde ich sicherlich eher früher als später an anderer Stelle wieder vor der Problematik stehen, Daten vom KVM-Host unter CentOS (6.x) in eine VM hineinzureichen. VirtFS wäre hier echt eine interessante Technik gewesen.
Wenn hierzu jemand eine Chance oder Alternativen siehst, wäre ich für einen Tipp sehr dankbar.
TNX

cu, Paul
 
Oben