Next Previous Contents

8. FAQs

Εδώ βρισκόμαστε στην ενότητα των συχνών ερωτήσεων (FAQs). Η ενότητα αυτή βασίζεται κατά ένα μέρος σε ένα παλιό κείμενο του Alan Cox, με FAQs γιά το NFS.

Αν έχετε κάποιο πρόβλημα στο να κάνετε mount ένα filesystem, παρακαλώ κοιτάξτε μήπως το πρόβλημά σας περιέχεται στην προηγούμενη ενότητα, τη "λίστα πιθανών προβλημάτων στο mounting του NFS".

  1. Παίρνω πολλά μηνύματα λάθους, του τύπου : "stale nfs handle" ( = παλιό πρόγραμμα χειρισμού του nfs), όταν χρησιμοποιώ το Linux σε nfs server.

    Αυτά τα προξενεί κάποιο bug μερικών παλιών εκδόσεων του nfsd. Το πρόβλημα διορθώθηκε από τον nfs-server2.2beta16 και μετά.

  2. Όταν προσπαθώ να κάνω mount ένα filesystem, παίρνω :
      can't register with portmap: system error on send
      
    

    (Δηλ. "Δεν συμφωνεί η καταγραφή στον portmapper, σφάλμα κατά την αποστολή")

    Πιθανότατα χρησιμοποιείτε τη διανομή Caldera. Υπάρχει ένα bug στα rc scripts. Παρακαλώ, επικοινωνήστε με την Caldera, γιά να σας δώσει τα διορθωμένα αρχεία.

  3. Γιατί δεν μπορώ να εκτελέσω ένα αρχείο, αφού το αντέγραψα στον NFS server;

    Η αιτία είναι ότι ο nfsd βάζει στη μνήμη cache τα "ανοιχτά" χρησιμοποιούμενα αρχεία (open file handles), γιά να επιτύχει καλύτερη απόδοση (και θυμηθείτε, τρέχει στον χώρο του χρήστη). Όσο ο nfsd κρατάει ένα αρχείο ανοιχτό (όπως πχ στην περίπτωση που μόλις έχει γράψει κάτι σ' αυτό), ο πυρήνας δεν θα σας αφήσει να το εκτελέσετε. Οι nfsds που είναι νεώτεροι από εκδόσεις (περίπου) άνοιξης του 1995, ελευθερώνουν τα ανοιχτά αρχεία μετά από λίγα δευτερόλεπτα. Οι παλιότεροι κολλάνε σ' αυτά γιά μέρες.

  4. Τα αρχεία μου στο NFS είναι όλα μόνο γιά ανάγνωση (read only)

    Ο NFS server με Linux πάει εξ ορισμού σε κατάσταση μόνον ανάγνωσης. Παρακαλώ, διαβάστε τις ενότητες "Οι mountd και nfsd", και "Κάνοντας export σε filesystems", σ' αυτό εδώ το HOWTO, και δείτε τις σελίδες man γιά τα exports και τον nfsd. Θα χρειαστεί ν' αλλάξετε το αρχείο /etc/exports.

  5. Κάνω mount από έναν NFS server με Linux, και ενώ η εντολή ls δουλεύει, δεν μπορώ να διαβάσω ή να γράψω αρχεία.

    Σε παλιότερες εκδόσεις του Linux, πρέπει να φορτώσετε τον NFS server με : rsize=1024,wsize=1024.

  6. Κάνω mount από έναν NFS server με Linux, με μέγεθος block μεταξύ 3500 και 4000, και ο Η/Υ κρασάρει συχνά.

    Επομένως, μην το κάνετε. Αυτό δεν συμβαίνει με τους πυρήνες 2.0 και 2.2 . Και, αν δεν με απατά η μνήμη μου, δεν υπάρχει πρόβλημα ούτε με τον πυρήνα 1.2 .

  7. Μπορεί το Linux να κάνει NFS επάνω σε TCP;

    Όχι προς το παρόν.

  8. Παίρνω πολλά περίεργα μηνύματα λάθους, όταν προσπαθώ να κάνω mount από έναν Η/Υ με Linux.

    Βεβαιωθείτε ότι οι χρήστες σας μετέχουν σε 8 ή λιγότερες ομάδες. Οι παλιότεροι servers το ζητάνε αυτό οπωσδήποτε.

  9. Όταν επανεκκινώ τον Η/Υ μου, μερικές φορές κρεμάει, όταν προσπαθεί να κάνει unmount ένα κολλημένο NFS (ως server).

    ΜΗΝ κάνετε unmount σε NFS servers μετά την επανεκκίνηση ή τον τερματισμό λειτουργίας του Η/Υ, απλά αγνοήστε τους. Δεν θα πειράξει τίποτε, αν δεν τους κάνετε unmount. Η σχετική εντολή είναι : umount -avt nonfs.

  10. Οι NFS clients με Linux αργούν πολύ, όταν επικοινωνούν με Η/Υ Sun και BSD.

    Οι εγγραφές στο NFS συνήθως είναι σύγχρονες. (Αυτό, βέβαια, μπορείτε να το απενεργοποιήσετε, αν δεν σας πειράζει να κινδυνέψετε να χάσετε δεδομένα.) Ακόμη χειρότερα, οι πυρήνες που βασίζονται στο BSD μάλλον αδυνατούν να δουλεύουν σε μικρά blocks. Έτσι, όταν γράφετε 4 kB δεδομένων (από έναν Η/Υ με Linux) σε πακέτα του 1 kB που χρησιμοποιεί το BSD, το τελευταίο κάνει το εξής :

            διάβασε τη σελίδα των 4 kB 
            άλλαξε το 1 kB 
            ξαναγράψε τα 4 kB στον δίσκο 
            διάβασε τη σελίδα των 4 kB 
            άλλαξε το 1 kB 
            ξαναγράψε τα 4 kB στον δίσκο 
            κ. ο. κ.
      
    

  11. Όταν συνδέω πολλούς clients σε NFS server με Linux, η απόδοση πέφτει ξαφνικά.

    Το πρωτόκολλο NFS χρησιμοποιεί τμηματικά (fragmented) πακέτα UDP. Ο πυρήνας έχει ένα όριο στο πόσα τμήματα ανολοκλήρωτων πακέτων μπορεί να σηκώσει, πριν αρχίσει να τα αγνοεί. Στον πυρήνα 2.2, αυτό ρυθμίζεται σε χρόνο runtime μέσω του /proc filesystem : /proc/sys/net/ipv4/ipfrag_high_thresh και ipfrag_low_thresh. Στον 2.0 , αυτές οι παράμετροι είναι σταθερές κατά την compilation του πυρήνα, και ορίζονται στα : .../linux/net/ipv4/ip_fragment.c, IPFRAG_HIGH_THRESH, και IPFRAG_LOW_THRESH. Η σημασία αυτών των τιμών, είναι ότι άπαξ και η απαιτούμενη μνήμη των ανολοκλήρωτων κομματιών UDP φτάσει το άνω όριό της ("ipfrag_high_thresh") σε bytes (256 kB εξ ορισμού στους πυρήνες 2.2.3 και 2.0.36), αυτόματα πέφτει στο κάτω της όριο ("ipfrag_low_tresh"). Αυτό γίνεται με σβήσιμο κομματιών. Αυτή η κατάσταση ισοδυναμεί σχεδόν με απώλεια κομματιών, και τη στιγμή που η μνήμη φτάνει το άνω της όριο, η απόδοση του server σας πέφτει πολύ.

    Τα 256 kB είναι αρκετά γιά περίπου 30 clients. Αν έχετε 60, διπλασιάστε τα. Και διπλασιάστε επίσης το κάτω όριο.

  12. Χρησιμοποιώ το Linux 2.2 (ή μεταγενέστερο) με τον knfsd, και δεν μπορώ να κάνω mount στον Η/Υ μου, τύπου AIX, IRIX, Solaris, DEC-Unix...

    Ο knfsd ανακοινώνει ότι υλοποιεί την έκδοση 3 του NFS, αλλά δεν το κάνει. Υπάρχει μιά επιλογή, να τον σταματήσετε να βγάζει αυτό το μήνυμα. Χρησιμοποιείστε την. 'Η, μπορείτε να θέσετε "vers=2" στη λίστα με τις παραμέτρους του mount στους clients.

  13. Ο τύπου AIX 4 Η/Υ μου δεν μπορεί να κάνει mount τον NFS server μου με Linux. Μου λέει :
            mount: 1831-011 access denied for server:/dir
            mount: 1831-008 giving up on:
            server:/dir
            The file access permissions do not allow the specified action.
      
    

    (Δηλ. : "Δεν δίδεται άδεια γιά τον server", "εγκαταλείπω το server:/dir", "Οι άδειες πρόσβασης στα αρχεία δεν επιτρέπουν τη δραστηριότητα που ζητάτε.")

    ή κάτι παρόμοιο.

    Το AIX 4.2 χρησιμοποιούσε ρεζερβέ ports (κάτω από το 1024) γιά το NFS. Τα AIX 4.2.1 και 4.3 δεν περιορίζονται στα ρεζερβέ ports. Επίσης, τα AIX AIX 4.2.1 και 4.3 προσπαθούν να κάνουν mount με χρήση του NFS3, μετά του NFS/TCP, και τελικά του NFS/UDP.

    Προσθέτοντας


    nfso -o nfs_use_reserved_ports=1
    

    στο τέλος του rc.tcpip, θα το αναγκάσει να ξαναχρησιμοποιήσει τα ρεζερβέ ports. (Αυτό το κόλπο μου το έδωσε ο Brian Gorka.)


Next Previous Contents