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.