Verder Terug Inhoud

5. NFS over een trage verbinding

Trage lijnen zijn Modems, ISDN en mogelijk andere lange afstands connecties.

Deze sectie is gebaseerd op kennis over de gebruikte protocollen maar geen werkelijke experimenten. Laat het me weten als je dit probeert ;-)

Het eerste wat je moet weten is dat NFS een traag protocol is. Het heeft veel extra informatie nodig om het pakketje op z'n bestemming te krijgen. NFS gebruiken is bijna als kermit gebruiken om files te transporteren. Het is traag. Bijna alles is sneller dan NFS. FTP is sneller. HTTP is sneller. rcp is sneller. ssh is sneller.

Nog steeds vastbesloten om het te proberen? Ok.

De standaard parameters van NFS zijn voor snelle, korte tijds, lijnen. Als je deze standaard parameters gebruik over lange tijds, trage, lijnen kan dat er voor zorgen dat NFS problemen gaat aangeven, opdrachten opgeven , doen alsof files korter zijn dan dat ze eigenlijk zijn en NFS kan erg mysterieus doen.

Het eerste wat je moet doen is niet de soft mount optie gebruiken. Dit veroorzaakt timeouts die errors geven aan de software, welke, die de situatie waarschijnlijk niet goed hanteren. Dit is een goede manier om misterieuze fouten te krijgen. Gebruik daarom de hard mount optie. Als hard actief is zorgen timeouts voor eindeloos opnieuw proberen inplaats van annuleren. Dit is wat je wilt. Toch.

Het volgende dat gedaan moet is worden is goed instellen van de timeo en retrans mount opties. Er zijn beschrijvingen in de nfs(5) man page, maar hier is een kopie.


       timeo=n        De waarde in tienden van een seconde voor de 
                            eerste hertransmissie na een RPC pauze. De 
                            Standaard waarde is 7 tienden van een seconde.
                            Na de eerste pauze. Wordt de waarde verdubbeld
                      en bij elke keer dat het daarna nog faald wordt
                      de timeout verdubbeld totdat deze een waarden
                      van 60 seconden heeft bereikt of totdat het
                      aan hertransmissies is gehaald. De maximale
                      timeout is altijd 60 seconden. Een hogere timeout
                      waarde kan tot een snelheids verbetering lijden
                      als over een druk netwerk moet mounten, van een
                      langzame server moet mounten of als je door veel
                      routers of gateways door moet.

       retrans=n      Het aantal timeouts en hertransmisies die moeten
                      plaatsvinden. De standaard waarde is 3 timeouts
                      Als deze limiet gepaseerd is wordt het bericht 
                      "server not responding" op de console weergegeven.

In andere woorden: Als er geen antwoord is binnen de 0.7 seconden (700ms) timeout zal de NFS client de aanvraag opnieuw doen en de tijd verdubbelen naar 1.4 seconden. Als er binnen die tijd geen antwoord komt wordt de aanvraag nog eens gedaan en de timeout wordt verdubbeld naar 2.8 seconden.

De snelheid van een lijn kan worden gemeten met ping met de zelfde pakket grootte als je rsize/wsize opties.


$ ping -s 8192 lugulbanda
PING lugulbanda.uio.no (129.240.222.99): 8192 data bytes
8200 bytes from 129.240.222.99: icmp_seq=0 ttl=64 time=15.2 ms
8200 bytes from 129.240.222.99: icmp_seq=1 ttl=64 time=15.9 ms
8200 bytes from 129.240.222.99: icmp_seq=2 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=3 ttl=64 time=14.9 ms
8200 bytes from 129.240.222.99: icmp_seq=4 ttl=64 time=15.0 ms

--- lugulbanda.uio.no ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 14.9/15.1/15.9 ms

De tijd hier is hoe lang het ping pakket er over deed om heen en terug te gaan naar lugulbanda. 15ms is best snel. Over een 28.000 bps lijn kun je iets verwachten als 4000-5000ms, en als de lijn belast is zal de tijd ook hoger zijn, gemakkelijk verdubbeld. Als deze tijd hoog is zeggen we dat er een 'high latency' is. Normaal, voor grotere pakketen en voor meer belastte lijnen zal de latency ook hoger zijn. Verhoog de timeo gepast voor je lijn en belasting. Als je ooit FTP wilt gebruiken samen met NFS moet je de ping tijden meten als je NFS aan het gebruiken bent om files te transporteren en verhoog timeo totdat deze gelijk is aan de latency van de lijn.


Verder Terug Inhoud