Στο παρόν δείχνω πως μπορείς να μοιράσεις αρχεία και καταλόγους μεταξύ UNIX, άρα και Linux συστήματα μέσω του NFS. Το NFS είναι ο κλασσικός τρόπος μοιράσματος αρχείων στα συστηματα με UNIX. Πρώτα μερικές παρατηρήσεις
-
Ο τρόπος αυτός λειτουργεί μεταξύ υπολογιστών με UNIX. Αν θέλεις να μοιράσεις με Windows υπήρχαν παλιά τα Windows Services for UNIX αλλά έχει πάψει η Microsoft να τα υποστηρίζει εδώ και αιώνες. Σε κάποιες σημερινές εκδόσεις των Windows 10 μοιάζει να υπάρχει κάποια υποστήριξη αλλά δεν την έχω δοκιμάσει. Στα Mac υπάρχει επίσης υποστήριξη, αλλά πάλι μην με ρωτάτε. Σε αυτές τις περιπτώσεις θα πρέπει ίσως να δεις την samba.
-
Ο τρόπος που περιγράφω είναι κατάλληλος για ένα οικιακό δίκτυο. Σε ένα εταιρικό δίκτυο αυτά εφαρμόζονται, αλλά θα πρέπει να δοθεί βάρος στην ασφάλεια και την ταυτοποίηση των χρηστών, πράγματα που παραλείπω.
Εργασία στον server
Έχουμε ένα υπολογιστή τον litlefinger
που δεν είναι πάντα ανοικτός, αλλά έχουμε τον έχουμε ρυθμίσει ώστε να έχει πάντα την ίδια σταθερή IP 192.168.1.104
. Θέλουμε να είναι προσβάσιμος ο κατάλογος /home
. Είμαστε ο μόνος χρήστης που υπάρχει (ή εναλλακτικά υπάρχει η ίδια αντιστοίχηση χρηστών με αριθμό id). Οι προϋποθέσεις αυτές καλύπτουν εύκολα σχεδόν όλα τα οικιακά δίκτυα. Οι οδηγίες είναι για διανομές βασισμένες στο debian και ubuntu , αλλά πάνω κάτω τα ίδια είναι για τις άλλες διανομές.
Τα παρακάτω απαιτούν μια εξοικείωση με το τερματικό και να καταλαβαίνεις πάνω κάτω τι κάνουν οι εντολές.
Πρώτα θα εγκαταστήσουμε τον NFS στον server
sudo apt-get install nfs-kernel-server
και στην συνέχεια θα κάνουμε εξαγωγή κάποιους καταλόγους. Θα ανοίξουμε με κάποιον editor με δικαιώματα root το αρχείο /etc/exports
(πχ sudo xed /etc/exports
) και θα προσθέσουμε μια γραμμή ανά κατάλογο που θέλουμε να εξάγουμε. Στο παράδειγμα μας αρκεί μια γραμμή
/home *(rw,sync)
Στην συνέχεια θα επανεκινήσουμε την υπηρεσία
systemctl restart nfs-kernel-server
sudo exportfs
Αν έχουμε ενεργό το firewall
θα πρέπει να ανοίξουμε την πόρτα με αριθμό 2049.
sudo ufu status
sudo ufw allow to any port nfs
sudo ufu status
Εργασία τον client
Πάμε τώρα στον υπολογιστή που θέλουμε να δούμε τα αρχεία. Πρώτα θα φτιάξουμε τον κατάλογο που θα συνδεθούν και θα εγκαταστήσουμε το πακέτο.
sudo mkdir -p /mnt/nfs/litlefinger
sudo apt-get install nfs-common
Τώρα μπορούμε να κάνουμε την σύνδεση
sudo mount 192.168.1.104:/home /mnt/nfs/litlefinger
και να ελέγξουμε αν όλα πήγαν καλά
ls /mnt/nfs/litlefinger
echo "Hello nfs" > /mnt/nfs/litlefinger/talos/nfs_tests.txt
sudo umount /mnt/nfs/litlefinger
Αν τα πάντα δούλεψαν έχουμε δύο επιλογές. Στην περίπτωση που ο υπολογιστής που μοιράζει τα αρχεία είναι μόνιμα αναμμένος, αρκεί μια καταχώρηση στο /etc/fstab
σαν την παρακάτω
192.168.1.104:/home /mnt/nfs/litlefinger nfs rw,tcp,auto,nofail,timeout=60 0 0
και δεν βλάπτει να γίνει ένα ελεγχος
sudo mount -a
mount
Αν ο υπολογιστής αυτός είναι κλειστός θα έχουμε όμως μια σημαντική καθυστέρηση στην εκκίνηση. Μπορούμε βέβαια πάντα όμως να αλλάξουμε το nofail
με noauto
και να κάνουμε την σύνδεση χειροκίνητα κάθε φορά.
Σύνδεση με autofs
Ένας καλύτερος τρόπος είναι να γίνει η σύνδεση μόνο καθ φορά που θα την χρειαστούμε. Το autofs κάνει ακριβώς αυτό. Θα συνδέσει κάποιο filesystem εσωτερικό ή εξωτερικό μόνο όταν το θέλουμε και θα το αποσυνδέσει όταν δεν το χρειαζόμαστε ποια. Θα πρέπει να το εγκαταστήσουμε πρώτα
sudo apt-get install autofs
sudo service autofs stop
sudo automount -f -v
Για λίγο μέχρι να το ρυθμίσουμε σταμάτησα την σχετική υπηρεσία, και έτρεξα την εντολή automount
με το χέρι ώστε να βλέπουμε τι συμβαίνει. Θα ανοίξουμε ένα άλλο τερματικό για την συνέχεια.
Παρατήρησα κάποια κολλήματα με το zsh και το autocompletion όταν πήγα να κάνω cd. Οπότε δοκιμές με bash ή με κάποιο γραφικό filemanager.
Θα ανοίξουμε το αρχείο /etc/auto.master
(πχ sudo xed /etc/auto.master
) και θα προσθέσουμε μια γραμμή
/mnt/nfs /etc/auto.nfs
Το αρχείο /etc/auto.nfs
δεν υπάρχει και θα το φτιάξουμε αμέσως τώρα. Θα περιέχει μια γραμμή
litlefinger -fstype=nfs4,rw 192.168.1.104:/home
και αυτό ήταν. Ένα
ls /mnt/nfs/litlefinger
θα μας πείσει.