Ιούνιος+2005+(file+services)

Θέμα 6 (15 Βαθμοί)
 * 1) Με ποιο τρόπο (και σε επίπεδο πρωτοκόλλου) είναι σχεδιασμένο το NFS έτσι ώστε ο εξυπηρετητής να μη χρειάζεται να κρατά κατάσταση για τους πελάτες; Ποια είναι τα πλεονεκτήματα και μειονεκτήματα συγκριτικά με μια λύση όπου ο εξυπηρετητής θα κρατούσε ξεχωριστή κατάσταση για κάθε πελάτη που έχει ανοίξει ένα αρχείο;
 * 2) Πως ελέγχει το λογισμικό πελάτη NFS την εγκυρότητα των δεδομένων της κρυφής του μνήμης;
 * 3) Εξηγήστε τι συνέπεια ανάγνωσης (και πότε) επιτυγχάνεται για τις τοπικές εφαρμογές σε σχέση με ένα συμβατικό τοπικό σύστημα αρχείων.

__Λύση__: > Πλεονεκτήματα της λύσης διατήρησης κατάστασης για κάθε πελάτη που ανοίγει κάποιο αρχείο είναι ότι τηρείται καλύτερη συνέπεια στην πληροφορία και μεγαλύτερη ανοχή στις βλάβες. > Μειονεκτήματα είναι η επιβάρυνση του δικτύου με περισσότερη επικοινωνία και επιβάρυνση του server από άποψη αποθηκευτικού χώρου. > > Υπάρχει ένας χρόνος CheckT στον οποίο θεωρείται ότι τα δεδομένα είναι έγκυρα. Μέσω χρονοσφραγίδας τελευταίου ελέγχου εγκυρότητας (tc) ελέγχεται αν έχει παρέλθει αυτός ο χρόνος. Αν ναι το λογισμικό του πελάτη θα πρέπει να ελέγξει αν τα δεδομένα που έχει στην κρυφή μνήμη έχουν αλλάξει στο server ή όχι. Αυτό ελέγχεται μέσω μιας άλλης χρονοσφραγίδας αλλαγής του server (tm). Αν δηλαδή τα δεδομένα στην κρυφή μνήμη έχουν μικρότερη χρονοσφραγίδα (tm) απ'ότι τα δεδομένα στο server, πρέπει να ανανεωθούν και μαζί τους η χρονοσφραγίδα. Σε κάθε περίπτωση ελέγχου ανανεώνεται και η tc με την τρέχουσα ώρα. > > Αν CheckT=0 γίνεται έλεγχος σε κάθε ανάγνωση, όπως δηλαδή περίπου και σε ένα τοπικό FS. Υπάρχει βέβαια και η περίπτωση διαμερισμού του δικτύου και η απώλεια πακέτων, οπότε και καθυστερεί η ενημέρωση του server μετά από αλλαγή σε κάποιο αρχείο του, αλλά αυτό δεν επηρεάζει τη λογική ορθότητα σε επίπεδο εφαρμογής.
 * 1) Το NFS είναι σχεδιασμένο έτσι ώστε να υποστηρίζει σταθμούς εργασίας χωρίς δίσκο, που διαβάζουν τα αρχεία από ένα εξυπηρετητή μέσω τοπικού δικτύου. Ακολουθεί ένα σχεδιασμό client - server. Το λογισμικό βρίσκεται σε επίπεδο λειτουργικού συστήματος και η επικοινωνία γίνεται μέσω RPC. Για πρωτόκολλο μεταφοράς μπορεί να χρησιμοποιηθεί UDP ή TCP. Το πρωτόκολλο επικοινωνίας μέσω RPC είναι σχεδιασμένο έτσι ώστε να υπάρχει εύκολη ανάκαμψη από βλάβες του εξυπηρετητή και διακοπές του δικτύου και ο εξυπηρετητής να μην κρατά κατάσταση για κάθε πελάτη (stateless server) με σημασιολογία at least one.
 * 1) Η εγκυρότητα των δεδομένων της κρυφής μνήμης γίνεται ως εξής:
 * 1) Η ανάγνωση σε τοπικό επίπεδο εφαρμογής δεν επιστρέφει πάντα την πιο πρόσφατη έκδοση των δεδομένων ακόμη και αν οι αλλαγές μεταδίδονται με write-through δηλαδή αν κάθε αίτηση αλλαγής που στέλνει ο πελάτης προωθείται κατ' ευθείαν από τον εξυπηρετητή στο τοπικό υποσύστημα αρχείων. Όσο μικρότερη η τιμή του CheckT τόσο μικρότερη πιθανότητα ασυνέπειας ανάγνωσης αλλά πιο συχνή η επικοινωνία ανάμεσα σε client-server.