Next Previous Contents

5. Το NFS μέσω αργών γραμμών

Οι αργές γραμμές περιλαμβάνουν τα modems, το ISDN, και πιθανότατα άλλες συνδέσεις μακρών αποστάσεων.

Αυτό το τμήμα βασίζεται σε γνώσεις σχετικά με τα χρησιμοποιούμενα πρωτόκολλα, αλλά όχι σε πραγματικές πειραματικές δοκιμές. Παρακαλώ, ενημερώστε με, αν δοκιμάσετε τα παρακάτω! ;-)

Το πρώτο πράγμα που πρέπει να θυμάστε, είναι πως το NFS είναι αργό πρωτόκολλο. Έχει μεγάλη εισαγωγή. Το να χρησιμοποιείς το NFS γιά να μεταφέρεις αρχεία, είναι σχεδόν σα να χρησιμοποιείς το πρωτόκολλο kermit. Είναι αργό. Σχεδόν οποιοδήποτε άλλο είναι ταχύτερο του NFS. Το FTP είναι ταχύτερο. Το HTTP είναι ταχύτερο. Τα rcp και ssh είναι ταχύτερα.

Ακόμη αποφασισμένοι να δοκιμάσετε; Ok.

Οι default παράμετροι του NFS είναι γιά σχετικά γρήγορες γραμμές, με μικρό χρόνο αναμονής. Αν χρησιμοποιήσετε αυτές τις default παραμέτρους σε αργές γραμμές υψηλής αναμονής, θα κάνουν το NFS να βγάζει μηνύματα λαθών σχετικά με τις εργασίες του, να σας λέει ότι τα αρχεία είναι μικρότερα απ' όσο πραγματικά είναι, και να κάνει διάφορα άλλα μυστήρια πράγματα.

Το πρώτο πράγμα που πρέπει να κάνετε, είναι να μην χρησιμοποιήσετε την επιλογή soft mount. Αυτή θα κάνει τα timeouts να επιστρέφουν κώδικες λαθών στο software, πράγμα που πιθανότατα δεν θα είναι καθόλου καλός χειρισμός της κατάστασης. Αυτός είναι ωραίος τρόπος γιά να κερδίσετε μυστηριώδη κολλήματα. αντίθετα, χρησιμοποιείστε την hard mount option. Όταν η hard είναι ενεργοποιημένη, τα timeouts προκαλούν άπειρες προσπάθειες επαναλειτουργίας, αντί να παρατήσουν ό,τι προσπαθούσε το software να κάνει. Και πραγματικά, αυτό είναι αυτό ακριβώς που θέλετε.

Το επόμενο πράγμα που πρέπει να κάνετε, είναι να σκαλίσετε τις επιλογές του mount timeo και retrans . Αυτές περιγράφονται στη man σελίδα nfs(5), αλλά πάρτε κι ένα αντίγραφο εδώ :


       timeo=n        Η τιμή σε δέκατα του δευτερολέπτου, πριν σταλεί 
                      η πρώτη επανεκπομπή μετά από ένα RPC timeout. Η 
                      default τιμή είναι 7 δέκατα του δευτερολέπτου. 
                      Μετά το πρώτο timeout, το timeout διπλασιάζεται 
                      διαδοχικά, μέχρις ότου φτάσουμε σ' ένα μέγιστο 
                      timeout των 60 δευτερολέπτων, ή έχουν συμβεί αρκετές 
                      επανεκπομπές, ώστε να προκαλέσουν ένα μείζον time-
                      out. Τότε, αν το filesystem  είναι hard mounted, 
                      κάθε νέα διαδοχή timeouts ξαναρχίζει με διπλάσια 
                      αρχική τιμή της προηγούμενης σειράς, και ξανά 
                      διπλασιάζεται με κάθε επανεκπομπή. Το μέγιστο 
                      timeout είναι πάντα 60 δευτερόλεπτα. Μπορούμε να 
                      επιτύχουμε καλύτερη συνολική απόδοση, αυξάνοντας 
                      το timeout σ' ένα δίκτυο με φόρτο εργασίας, σ' έναν 
                      αργό server, ή μέσω πολλών routers ή gateways. 

       retrans=n      Ο αριθμός των μικρών timeouts και επανεκπομπών που 
                      πρέπει να συμβούν, πριν εμφανιστεί ένα μείζον 
                      timeout. Η default τιμή είναι 3 timeouts. Όταν 
                      εμφανιστεί ένα μείζον timeout, είτε εγκαταλείπεται 
                      η εργασία που γίνεται πάνω στο αρχείο, ή εμφανίζεται 
                      στην κονσόλα ένα μήνυμα "server not responding" 
                      (ο server δεν αποκρίνεται). 

Μ' άλλα λόγια : Αν μιά απάντηση δεν έρθει μέσα στον χρόνο του timeout των 0.7 δευτερολέπτων (700ms), ο NFS client θα επαναλάβει την αίτηση, και θα διπλασιάσει το timeout σε 1.4 δευτερόλεπτα. Εάν η απάντηση δεν φανεί μέσα σε 1.4 δευτερόλεπτα, η αίτηση θα επαναληφθεί, και το timeout θα επαναδιπλασιαστεί στα 2.8 δευτερόλεπτα.

Η ταχύτητα μιας γραμμής μπορεί να μετρηθεί με ping ενός πακέτου με το ίδιο μέγεθος με τα rsize/wsize.


$ 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

Εδώ, ο χρόνος αναφέρεται στο πόσο έκανε το πακέτο του ping, γιά να πάει μπρος-πίσω στο lugulbanda. (Τα 15ms είναι αρκετά γρήγορα.) Σε μιά γραμμή 28 kbps μπορείτε να περιμένετε κάτι σαν 4000-5000ms, και αν η γραμμή είναι φορτωμένη, αυτός ο χρόνος θα είναι ακόμη μεγαλύτερος - πολύ εύκολα φτάνει στη διπλάσια τιμή. Όταν αυτός ο χρόνος είναι μεγάλος, τότε λέμε ότι υπάρχει "υψηλή αναμονή". Γενικά, γιά μεγαλύτερα πακέτα και γιά περισσότερο φορτωμένες γραμμές, η αναμονή αυξάνεται. Αυξήστε κατάλληλα το timeo γιά τη γραμμή και το φορτίο σας. Και, μιά που η αναμονή αυξάνεται, όταν χρησιμοποιείτε τη γραμμή και γιά άλλες δουλειές : Αν ποτέ θελήσετε να χρησιμοποιήσετε τα FTP και NFS ταυτόχρονα, πρέπει να δοκιμάσετε να μετρήσετε τους χρόνους ping ενώ χρησιμοποιείτε το FTP γιά μεταφορά αρχείων, και ν' αυξήσετε το timeo ώστε να ταιριάζει με την αναμονή της γραμμής σας.


Next Previous Contents