dhcp/dns/nfs shared directories: bestanden openen traag

Pagina: 1
Acties:

  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Ik heb een klein netwerkje draaien met een Ubuntu 8.04.1 server en clients. Users staan in een ldap directory op de server en ook de automount points staan in dezelfde ldap. De homedirectories worden via nfs gemount (hetzelfde geldt voor een aantal gesharede directories).

Nu heb ik een tijdje geleden een eigen dns server opgezet en heb ik de dhcp server aangepast zodat de dns aangepast wordt zodra een ip adres uitgedeelt wordt. Dit lijkt goed redelijk te werken:
  • pingen naar server van client: gaat snel, zowel met ip adres als met hostname
  • pingen van server naar client: idem dit gaat traag op hostname (tijd tussen pings is lang), hoewel het commando `host clientname' het juiste ip adres terug geeft, overigens denk ik niet dat dit het probleem is, eerder werkte dit wel zoals het zou moeten en toen had ik het probleem ook.
  • mounten van homedir bij het inloggen op een client: gaat snel
Hiervoor gebruikte ik wins en functioneerde mijn server als winbind server (met behulp van samba). Toen ging pingen op hostname langzaam (of liever gezegd: de tijd tussen twee pings was lang) en ook het automounten van nfs directories was vreselijk traag. Deze problemen zijn nu opgelost sinds ik een eigen dns server gebruik.

Er is echter een probleem voor in de plaats gekomen:
als ik op een client, in een programma (voorbeelden: firefox, the gimp, blender) via het menu een bestand wil openen, dan duurt het ongeveer 20 seconden voordat ik het bestandsselectie scherm voor mijn neus krijg. Dit is natuurlijk vreselijk irritant. Zodra het scherm open is, gaat browsen gewoon snel.

Browsen via de commandline of met nautilus gaat altijd snel, hier hoef ik niet eerst te wachten. Ik heb al gezocht op google, maar ik kan hier niets over vinden. Bij alles wat ik kan vinden gaat alles traag. Bij mij is het echter alleen het openen van een bestand via 'File -> Open' (hetzelfde geld overigens voor: File -> Save as' of andere bewerkingen waarvoor je een file browser binnen een programma nodig hebt, zoals een download in firefox opslaan).

Ik zit een beetje met mijn handen in het haar, het netwerk lijkt goed te werken, maar blijkbaar is er toch nog ergens iets mis. Heeft iemand een idee wat dit kan zijn? Hieronder nog enkele configuratie bestanden die van toepassing zouden kunnen zijn, als er nog wat mist zal ik dat nog toevoegen in de topic start.

automountInformation uit ldap:
-rw,hard,intr,nodev,exec,nosuid,rsize=8192,wsize=8192 server:/samba/home/username


/etc/exports van de server:
# NFSv3 exports for Linux Domain logons
/samba/home     192.168.0.0/24(rw,no_root_squash,subtree_check,sync)
/samba/share    192.168.0.0/24(rw,no_root_squash,subtree_check,sync)


/etc/nsswitch.conf van de client:
passwd:         files ldap
group:          files ldap
shadow:         files ldap
automount:      files ldap
netgroup:       ldap

hosts:          dns files mdns4_minimal [NOTFOUND=return] mdns4
networks:       nis files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

The Flying Dutchman


  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Een voorzichtig kickje, is er niemand die dergelijke problemen herkent?
Dus in alle softwarepaketten gaat het openen van een file browser venster traag (20 tot 30 seconden), daarna is er niets aan de hand en kun je vlot door bestanden bladeren. Voor zover ik kan zien heeft het waarschijnlijk iets met dns of nfs te maken.

The Flying Dutchman


Verwijderd

Heb je dit al geprobeerd:

hosts: files dns

Dan kijkt linux eerst in /etc/hosts alvorens de DNS te proberen. Vooral met de resolution van bijv localhost lijkt me dit wenselijk.

Het zou denk ik niet voor problemen mogen zorgen in dit geval, maar heb je reverse DNS ingesteld ? Werkt dig -x 192.168.X.X ?

Hebben al je clients een IP en hostname gekregen van je DHCP server die bekend is in de DNS, ws001.internal.blah.nl oid ? Een handige server applicatie om dit mee te regelen is http://sourceforge.net/projects/dhcp-dns-server/ . Natuurlijk kan je ook ISC DHCP en ISC BIND gebruiken met DDNS maar dat is lastiger in te stellen.

  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Dat lijkt me inderdaad wel een iets betere volgorde. Ik heb het even aangepast, maar het lijkt niet te helpen.
Ik gebruik dhcpd om ip adressen uit te delen en bind9 als dns server. Dhcp is zo ingesteld dat de dns aangepast wordt als er een ip adres uitgedeeld wordt.

Verder:
dig -x 192.168.0.235 (ip adres, door dhcp uitgedeeld aan één van de clients) vanaf de server:
; <<>> DiG 9.4.2-P1 <<>> -x 192.168.0.235
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 52656
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;235.0.168.192.in-addr.arpa.	IN	PTR

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.	1500	IN	SOA	thor.harders. root.0.168.192.in-addr.arpa. 2007062728 28800 3600 604800 38400

;; Query time: 0 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sun Oct 26 09:51:21 2008
;; MSG SIZE  rcvd: 97


Lijkt me goed?

Overigens sprak je over localhost en dat zette me aan het denken, misschien dat het vinden van localhost inderdaad niet meer lekker gaat. Toen ik hier dns opgezet heb, heb ik de volgende file ook aangepast volgens de tutorial die ik had gevonden (ook de localhost regel werd toen aangepast), maar ik vraag me af of de regel voor localhost wel goed is zo?

in /etc/hosts:
127.0.0.1 localhost.localdomain localhost


Overigens, om het even te testen heb ik het ook alweer even aangepast naar:
127.0.0.1 localhost

Maar dat helpt niet.

The Flying Dutchman


Verwijderd

De syntax van /etc/hosts is als volgt:

code:
1
IP FQDN HOSTNAME


Dus bijv:

code:
1
127.0.0.1 localhost.local localhost


Aan het dig -x commando te zien zijn reverse lookups niet geconfigureerd.

code:
1
;235.0.168.192.in-addr.arpa.    IN  PTR


Achter PTR zou de FQDN moeten staan die bij het IP adres hoort.

Dit zou voor vertraging kunnen zorgen. Hiervoor moet je een zone aan maken in BIND. Hier staat een howto die gaat over DDNS waarin ook dynamisch PTR records worden aangemaakt: http://www.semicomplete.com/articles/dynamic-dns-with-dhcp/

Ook kan je om te testen DHCP even tijdelijk uit de equation halen. Stel hard een IP in op de client, zet dit IP ook in de DNS met bijbehorende reverse lookup record en kijk of deze client goed werkt.

  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Bedankt voor je reactie. Blijkbaar is er iets mis gegaan met reversed dns (ik heb daar wel een zone voor gemaakt in BIND) toen ik de boel installeerde. Ik zal er nog eens naar kijken met de door jou aangeraden tutorial. Helaas deze week weinig/geen tijd, dus dat zal waarschijnlijk pas volgende week ergens worden.

The Flying Dutchman


  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Ik heb eindelijk tijd gehad om eens goed naar mijn ddns configuratie te kijken. Er waren wat dingen mis, maar nu lijkt in ieder geval ddns goed te werken. Maar het probleem - het openen van een file browser vanuit een programma duurt +/- 20 seconden - bestaat nog steeds.

Nu ddns goed lijkt te werken denk ik dat het probleem dus niet bij dns/dhcp ligt. Hier wat output van dig commando's, misschien dat iemand kan bevestigen dat het zo wel goed is?

vanaf de server naar de client:
dig -q baldr-ubuntu.harders
; <<>> DiG 9.4.2-P1 <<>> -q baldr-ubuntu.harders
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48289
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;baldr-ubuntu.harders.          IN      A

;; ANSWER SECTION:
baldr-ubuntu.harders.   302400  IN      A       192.168.0.235

;; AUTHORITY SECTION:
harders.                1500    IN      NS      thor.harders.

;; ADDITIONAL SECTION:
thor.harders.           1500    IN      A       192.168.0.1

;; Query time: 1 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Nov  6 15:58:50 2008
;; MSG SIZE  rcvd: 89


dig -x 192.168.0.235
; <<>> DiG 9.4.2-P1 <<>> -x 192.168.0.235
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26093
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;235.0.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
235.0.168.192.in-addr.arpa. 302400 IN   PTR     baldr-ubuntu.harders.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa. 1500    IN      NS      thor.harders.

;; ADDITIONAL SECTION:
thor.harders.           1500    IN      A       192.168.0.1

;; Query time: 1 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Nov  6 15:59:08 2008
;; MSG SIZE  rcvd: 113


vanaf de client naar de server:
dig -q thor.harders
; <<>> DiG 9.4.2-P1 <<>> -q thor.harders
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38611
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;thor.harders.			IN	A

;; ANSWER SECTION:
thor.harders.		1500	IN	A	192.168.0.1

;; AUTHORITY SECTION:
harders.		1500	IN	NS	thor.harders.

;; Query time: 0 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Nov  6 16:05:21 2008
;; MSG SIZE  rcvd: 60


dig -x 192.168.0.1
; <<>> DiG 9.4.2-P1 <<>> -x 192.168.0.1
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52715
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.0.168.192.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
1.0.168.192.in-addr.arpa. 1500	IN	PTR	thor.harders.

;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.	1500	IN	NS	thor.harders.

;; ADDITIONAL SECTION:
thor.harders.		1500	IN	A	192.168.0.1

;; Query time: 0 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Nov  6 16:06:01 2008
;; MSG SIZE  rcvd: 98


Het lijkt mij nu goed, maar kan iemand dit bevestigen? Pingen alle kanten op gaat ook snel:
  • server -> ubuntu client
  • server -> windows vista client
  • server -> netwerk printer
  • vista client -> server
  • ubuntu client -> server
En met het commando `host <ip adres>' of `host <hostname>' krijg ik de juiste hostname, respectievelijk ip adres terug gestuurd.

Daarnaast werkt mijn printer nu weer onder Linux! (dit werkte eerst niet, wel vanuit windows, maar niet vanuit linux, blijkbaar was de oorzaak hiervan ook een ddns probleem, ik had het eigenlijk eerst bij de linux printer drivers gezocht...).

The Flying Dutchman


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 27-01 18:27

Kees

Serveradmin / BOFH / DoC
Als ik een dergelijk probleem heb probeer ik meestal als eerste het programma te traceren met 'strace'. Hiermee kun je vaak wel zien welke calls er lang duren en op die manier kun je het vaak het onderliggende probleem achterhalen.

Dus start een simpel programma, doe 'strace -p [pid van dat programma]' en probeer een file te openen. Dan kun je vaak wel zien waar hij 20 seconden op hangt.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Ik heb het even geprobeert met gedit, maar het is erg lastig om te zien, omdat ik zowel voor, als nadat ik op de knop voor het openen van het bestand een hele hoop output krijg.

Deze output komt voordat het programma hangt:
writev(20, [{"l\1\1\1V\0\0\0\30\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"Q\0\0\0sender=\'org.gtk.vfs.Daemon\',"..., 86}], 2) = 230
writev(20, [{"l\1\1\1X\0\0\0\31\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"S\0\0\0sender=\'org.gtk.vfs.Daemon\',"..., 88}], 2) = 232
writev(16, [{"l\1\1\1\210\0\0\0K\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org"..., 144}, {"\203\0\0\0type=\'signal\',sender=\'org.fr"..., 136}], 2) = 280
writev(16, [{"l\1\1\1w\0\0\0L\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"r\0\0\0type=\'signal\',sender=\'org.fr"..., 119}], 2) = 263
writev(16, [{"l\1\0\1\34\0\0\0M\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"\27\0\0\0org.freedesktop.Tracker\0", 28}], 2) = 172
writev(16, [{"l\1\1\1\200\0\0\0N\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org"..., 144}, {"{\0\0\0type=\'signal\',sender=\'org.fr"..., 128}], 2) = 272
writev(16, [{"l\1\0\1\34\0\0\0O\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"\27\0\0\0org.freedesktop.Tracker\0", 28}], 2) = 172
writev(16, [{"l\1\1\1\200\0\0\0P\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org"..., 144}, {"{\0\0\0type=\'signal\',sender=\'org.fr"..., 128}], 2) = 272
writev(16, [{"l\1\0\1\34\0\0\0Q\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"\27\0\0\0org.freedesktop.Tracker\0", 28}], 2) = 172
writev(16, [{"l\1\1\1~\0\0\0R\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"y\0\0\0type=\'signal\',sender=\'org.fr"..., 126}], 2) = 270
writev(16, [{"l\1\0\1\34\0\0\0S\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"\27\0\0\0org.freedesktop.Tracker\0", 28}], 2) = 172
writev(16, [{"l\1\1\1}\0\0\0T\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"x\0\0\0type=\'signal\',sender=\'org.fr"..., 125}], 2) = 269
writev(16, [{"l\1\0\1\34\0\0\0U\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/"..., 144}, {"\27\0\0\0org.freedesktop.Tracker\0", 28}], 2) = 172
writev(16, [{"l\1\0\1\0\0\0\0V\0\0\0{\0\0\0\1\1o\0\30\0\0\0/org/fre"..., 144}, {"", 0}], 2) = 144
poll([{fd=16, events=POLLIN, revents=POLLIN}], 1, 25000) = 1
read(16, "l\2\1\1\0\0\0\0F\0\0\0005\0\0\0\6\1s\0\5\0\0\0:1.29\0\0"..., 2048) = 882
read(16, 0xd92960, 2048)                = -1 EAGAIN (Resource temporarily unavailable)
poll(


Na ongeveer 20 seconden krijg ik dan dit:
[{fd=16, events=POLLIN}], 1, 25000) = 0
poll([{fd=16, events=POLLIN}], 1, 3)    = 0
writev(16, [{"l\1\1\1w\0\0\0W\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"r\0\0\0type=\'signal\',sender=\'org.fr"..., 119}], 2) = 263
writev(16, [{"l\1\1\1\200\0\0\0X\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org"..., 144}, {"{\0\0\0type=\'signal\',sender=\'org.fr"..., 128}], 2) = 272
writev(16, [{"l\1\1\1\200\0\0\0Y\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org"..., 144}, {"{\0\0\0type=\'signal\',sender=\'org.fr"..., 128}], 2) = 272
writev(16, [{"l\1\1\1~\0\0\0Z\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"y\0\0\0type=\'signal\',sender=\'org.fr"..., 126}], 2) = 270
writev(16, [{"l\1\1\1}\0\0\0[\0\0\0\177\0\0\0\1\1o\0\25\0\0\0/org/fr"..., 144}, {"x\0\0\0type=\'signal\',sender=\'org.fr"..., 125}], 2) = 269
stat("/samba/home/heiko/.beagle", 0x7fffb885db00) = -1 ENOENT (No such file or directory)
access("/samba/home/heiko/.beagle/remote_storage_dir", F_OK) = -1 ENOENT (No such file or directory)


Vervolgt door nog een hele rij `stat' .... `no such file or directory. Waar zou ik naar moeten kijken of op moeten letten?

The Flying Dutchman


  • The Flying Dutchman
  • Registratie: Mei 2000
  • Laatst online: 26-12-2025
Een flinke schop tegen dit topic (in overleg met een mod), ik heb namelijk eindelijk het probleem gevonden. Na veel gepruts en zoekwerk kwam ik er uiteindelijk achter dat meer mensen last hebben van dit probleem. De oorzaak lijkt niet helemaal eenduidig te zijn, maar een oplossing lijkt in ieder geval het verwijderen van de package `tracker' te zijn. Bij mij zorgde het verwijderen daarvan ervoor dat het probleem verdween.

Zie hier voor meer info:
https://bugs.launchpad.ne...ource/gtk+2.0/+bug/218230

The Flying Dutchman

Pagina: 1