Δύο διαμορφώσεις λύνουν το ίδιο πρόβλημα και αποτυγχάνουν σε αντίθετες κατευθύνσεις. Η προσάρτηση του διαμοιρασμού στην εκκίνηση δίνει σε κάθε υπηρεσία ένα σύστημα αρχείων που είτε υπάρχει είτε εξηγεί γιατί κόλλησε η εκκίνηση. Η αυτόματη προσάρτηση κατά απαίτηση δίνει στο μηχάνημα γρήγορη εκκίνηση και περνά την αναμονή σε όποιον αγγίξει πρώτος τη διαδρομή. Πίσω από VPN η δεύτερη είναι συνήθως η καλύτερη ανταλλαγή, και ο λόγος είναι ότι το τούνελ επιβάλλει μια σειρά που η ακολουθία εκκίνησης δεν μπορεί να δει.

Προσάρτηση στην εκκίνηση έναντι αυτόματης προσάρτησης

Η προσάρτηση στην εκκίνηση είναι απλή στη σκέψη. Ο στόχος του συστήματος αρχείων περιμένει την προσάρτηση, οι υπηρεσίες που δηλώνουν εξάρτηση από αυτήν ξεκινούν μετά, και αν ο διακομιστής δεν είναι προσβάσιμος το μηχάνημα είτε περιμένει είτε αποτυγχάνει ανάλογα με τις επιλογές. Ό,τι ακολουθεί κληρονομεί αυτή τη μία απόφαση.

Η αυτόματη προσάρτηση το αντιστρέφει. Η διαδρομή υπάρχει αμέσως, η πραγματική προσάρτηση συμβαίνει όταν κάτι την ανοίγει, και οι υπηρεσίες που ξεκινούν νωρίς δεν μπλοκάρουν σε ένα τούνελ που δεν έχει σηκωθεί ακόμη.

Η σύγκριση καταλήγει στο ποιος πρέπει να απορροφήσει την καθυστέρηση. Ένας σταθμός εργασίας που χρειάζεται τον διαμοιρασμό πριν μπορέσει να δουλέψει ο χρήστης πιθανότατα πρέπει να περιμένει. Ένας φορητός που εκκινεί μέσα σε τσάντα, ή ένας διακομιστής του οποίου ο διαμοιρασμός είναι προαιρετικός, δεν πρέπει.

Καμία από τις δύο επιλογές δεν διορθώνει μια διαδρομή που λείπει. Και οι δύο απλώς αποφασίζουν πότε θα παρατηρηθεί η αποτυχία.

Η γραμμή fstab, επιλογή προς επιλογή

Υποθέστε ότι ένα υπάρχον στιγμιότυπο πελάτη OpenVPN είναι το [email protected], ο διακομιστής είναι το files.corp.example και το σημείο προσάρτησης είναι το /mnt/work. Αντικαταστήστε και τα τρία με τις εξουσιοδοτημένες τιμές του δικού σας χώρου. Μια γραμμή που δουλεύει μοιάζει έτσι:

files.corp.example:/export/work /mnt/work nfs _netdev,nofail,x-systemd.automount,[email protected],x-systemd.mount-timeout=30s 0 0

Το _netdev σηματοδοτεί την προσάρτηση ως απαιτούμενη δικτύου και δεν ονομάζει κανένα τούνελ. Το nofail κρατά τον διαμοιρασμό προαιρετικό για τον κανονικό στόχο του συστήματος αρχείων. Το x-systemd.automount δημιουργεί τον εκκινητή κατά απαίτηση αντί να προσαρτά αμέσως.

Το x-systemd.requires= είναι το μέρος που δένει την απόπειρα προσάρτησης με τη μονάδα VPN, και ανήκει στη λειτουργία προσάρτησης και όχι στον εκκινητή. Το να βάζει κανείς ευρεία σειρά στη μονάδα αυτόματης προσάρτησης είναι ο τρόπος με τον οποίο δημιουργούνται κύκλοι για τους οποίους το systemd παραπονιέται μετά σε μια γλώσσα που κανείς δεν διαβάζει δύο φορές.

Το x-systemd.mount-timeout=30s περιορίζει την αρχική εντολή προσάρτησης. Δεν περιορίζει τίποτα από όσα συμβαίνουν έπειτα, και αυτή είναι η πιο συνηθισμένη παρεξήγηση για αυτή την επιλογή.

Τι δεν σημαίνει το «ξεκίνησε»

Ελέγξτε τι σημαίνει ενεργό για τη μονάδα VPN που ονομάσατε. Μια υπηρεσία τούνελ μπορεί να αναφέρει τον εαυτό της ως ξεκινημένο πριν υπάρξει η διαδρομή προς τον διακομιστή αρχείων ή πριν επιλυθεί το ιδιωτικό όνομα, και η σειρά μετά από αυτή δεν σας αγοράζει τίποτα. Σε αυτό το κενό ζει σχεδόν κάθε αποτυχημένη απόπειρα. Είναι επίσης αόρατο εκτός αν κοιτάξετε τη διαδρομή και τον επιλυτή αντί για την κατάσταση της μονάδας.

Χρησιμοποιήστε το δικό του σήμα ετοιμότητας του κατόχου της σύνδεσης ως πρόσθετη προϋπόθεση όπου υπάρχει. Μια σταθερή αναμονή είναι μια εικασία που δουλεύει στο γραφείο σας και αποτυγχάνει σε πιο αργό δίκτυο ή μετά από επανασύνδεση.

Εξετάστε τις παραγόμενες μονάδες για τη διαδρομή του παραδείγματος: mnt-work.automount και mnt-work.mount. Μετά από μια ελεγμένη αλλαγή στο fstab, επαναφορτώστε το systemd και διαχειριστείτε αυτές τις μονάδες απευθείας αντί να τρέξετε μια γενική εντολή προσάρτησης που ασκεί άσχετες εγγραφές.

Μια ακόμη προειδοποίηση ανήκει εδώ. Μια υπηρεσία που αγγίζει το /mnt/work στην εκκίνηση εξακολουθεί να προκαλεί την προσάρτηση και εξακολουθεί να την περιμένει, άρα το να σημάνετε τον διαμοιρασμό ως προαιρετικό δεν κάνει κάθε εφαρμογή υπομονετική.

Μετά την προσάρτηση είναι άλλη αποτυχία

Μόλις προσαρτηθεί το NFS, η συμπεριφορά επανάληψης και ανάκτησης του συστήματος αρχείων καθορίζει τι κάνει μια μεταγενέστερη διακοπή σε μια ανάγνωση ή μια εγγραφή. Το χρονικό όριο προσάρτησης που ορίσατε δεν έχει καμία επίδραση σε αυτό.

Μια μαλακή προσάρτηση συντομεύει κάποιες αναμονές και αλλάζει τη σημασιολογία των σφαλμάτων, με συνέπειες στην ακεραιότητα των δεδομένων που ξεχνιούνται εύκολα όταν ο στόχος είναι μια ταχύτερη εκκίνηση. Το να τη διαλέξετε για να κερδίσετε δύο δευτερόλεπτα εκκίνησης είναι σπάνια καλή ανταλλαγή. Αν η απαίτηση είναι πραγματικά μια φραγμένη λειτουργία κατά τη διάρκεια μιας διακοπής, αυτό είναι απόφαση σε επίπεδο εφαρμογής, όχι σημαία του fstab.

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

Δοκιμάστε τέσσερις καταστάσεις, όχι μία

Η κανονική εκκίνηση με διαθέσιμο το τούνελ είναι η εύκολη περίπτωση και δεν αποδεικνύει σχεδόν τίποτα. Επιβεβαιώνει ότι η συμβολοσειρά είναι σωστά γραμμένη και τίποτα παραπάνω. Δοκιμάστε την πρώτη πρόσβαση χωρίς VPN, μετά την ανάκτηση όταν σηκωθεί, μετά μια ελεγχόμενη διακοπή μετά από επιτυχή προσάρτηση.

Τέσσερις καταστάσεις, τέσσερις παρατηρήσεις, και οι σημειώσεις πάνε δίπλα στην εγγραφή fstab. Ο επόμενος άνθρωπος κληρονομεί συμπεριφορά αντί για μια διαμόρφωση που πρέπει να ανασχεδιάσει.

Σχετικά άρθρα