Κάντε Auto-mount συσκευές κατά την εκκίνηση του συστήματος χωρίς αλλαγές στο /etc/fstab

Η Ιστορία:

Ένα από τα προβλήματα που εντόπισα όταν αποφάσισα να προσθέσω εξωτερικό δίσκο στο Raspberry Pi 4 server μου, ήταν ότι για να πραγματοποιηθεί αυτόματα το mount κατά το boot, έπρεπε να κάνω κάποιες αλλαγές στο /etc/fstab . To πρόβλημα που υπήρχε με αυτή την λύση ήταν η Ρώσικη ρουλέτα.

Το πρόβλημα:

Οποιοδήποτε συντακτικό/λογικό λάθος πάνω στην αλλαγή, κατέληγες σε grub rescue που έπρεπε να μπει ποντίκι-πληκτρολόγιο για να πραγματοποιηθούν αλλαγές, είτε να αφαιρεθεί η sd από το Raspberry Pi, να συνδεθεί σε άλλο σύστημα και να αναιρεθεί η αλλαγή.
Επιπλέον, υπήρχε και το πρόβλημα του αν για οποιοδήποτε λόγο δεν ήταν συνδεδεμένη η συσκευή κατά το boot, πάλι κατέληγε σε grub rescue… Και αν εκείνη την ώρα απουσίαζες από το σπίτι και έκανες αλλαγές μέσω ssh και VPN… και κάποιος από λάθος αφαίρεσε/κούνησε το καλώδιο… RIP

Συνεπώς, έπρεπε να βρω μία διαφορετική προσέγγιση για να επιλύσω το πρόβλημα μου με το automount. Εκεί έρχεται η λύση που προσφέρει το Auto-Fs.

Η λύση στο πρόβλημα:

Το autofs πρόκειται για ένα πρόγραμμα για την αυτόματη προσάρτηση συσκευών ανάλογα με τις ανάγκες του χρήστη σε πραγματικό χρόνο. Οι αυτόματες προσαρτήσεις γίνονται mount μόνο κατά την προσπέλαση και un-mount μετά από μια περίοδο αδράνειας. Εξαιτίας αυτού, η αυτόματη προσάρτηση κοινών αρχείων NFS/Samba εξοικονομεί bandwith και τελικά προσφέρει καλύτερες συνολικές επιδόσεις σε σύγκριση με τις στατικές προσαρτήσεις μέσω της fstab.

Παραδοσιακά για εγκατάσταση του autofs σε Debian based συστήματα δίνουμε:

sudo apt install autofs

Για τα Fed-ωραία και τα υπόλοιπα distros ( i use arch btw), μπορείτε να δώσετε τις αντίστοιχες εντολές εγκατάστασης βάση του package manager && repository που χρησιμοποιεί η δικιά σας διανομή Linux. DuckDuckGo it λοιπόν!

Ρύθμιση του autofs

Για να λειτουργήσει ομαλά το mount με το AutoFs, πρέπει να κάνουμε αλλαγές σε 2 αρχεία:

  • Στο auto.master έτσι ώστε να το οδηγήσουμε στο directory που θέλουμε να κάνει αυτόματα mount,
  • Στο auto.usb οπού θα εξηγεί στο autofs τα τι που πώς, σχετικά με την συσκευή που θέλουμε να κάνουμε mount.

Επεξεργασία auto.master

Ανοίγουμε έναν test editor για να το επεξεργαστούμε (εγώ δουλεύω με nano):

sudo nano /etc/auto.master

και έπειτα προσθέτουμε το εξής:

/media    /etc/auto.usb    --timeout=60 --ghost

Kαι τώρα μπορούμε να δημιουργήσουμε το auto.usb αρχείο. Συνεχίζουμε από τερματικό:

sudo nano /etc/auto.usb

Και προσθέτουμε την παρακάτω γραμμή:

myUSB -fstype=auto,uid=pi,gid=pi,rw UUID=YOUR_UUID

Οπού:

  • myUSB : Το όνομα του φακέλου που θα εμφανιστεί εντός /media. Στο παράδειγμα π.χ. θα εμφανιστεί ως /media/myUSB,
  • Το -fstype ορίζουμε τον τύπο του filesystem οπού είναι η συσκευή οπού θα κάνουμε mount.
  • uid του χρήστη μας,
  • gid της ομάδας που συμμετέχει ο χρήστης μας,
  • rw οπού δίνουμε read write δικαιώματα,
  • το UUID της συσκευής.

Για να βρούμε το UUID της συσκευής μας, δίνουμε:

sudo lsblk -f | grep -v loop

Φυσικά αποθηκεύουμε τις αλλαγές και έπειτα κάνουμε και μία επανεκκίνηση στο systemd service:

sudo systemctl restart autofs.service

Και είμαστε έτοιμοι!!!

Unmount

Φυσικά, αν για οποιοδήποτε λόγο θέλουμε να αφαιρέσουμε την συσκευή ενώ έχουμε τo PC/RaspberryPi/Server ανοικτό, απλά δίνουμε:

sudo umount /media/myUSB

Και όταν τον συνδέσουμε ξανά, το autofs θα τον ξανακάνει mount αυτόματα. :)

1 «Μου αρέσει»

Πιό τζερτζελέδικο μου φαίνεται αυτό. :smiley:

Υπάρχει η παράμετρος nofail στην fstab για να μην υπάρχουν στενοχώριες

Προσωπικά, το setαρα χωρίς πολλά πολλά με την πρώτη σε λιγότερο από 15λέπτο.

Όντως, υπάρχει και το no fail στο fstab ωστόσο στην περίπτωση μου… συνέχισε και μου έβγαζε την ύπαρξη και δοκίμασα το autofs που και έμεινα!

Εγώ από την άλλη, έβαλα gnome disks. Δεξί κλικ στο σκληρό που ήθελα, mount options, mount at system start up και τέλος.

Το να έχεις για κάθε ρύθμιση ένα διαφορετικό αρχείο έχει πλεονεκτήματα

  • Βλέπεις με μια ματιά τι προσθήκες έχεις κάνει
  • Μπορείς να αφαιρέσεις κάτι αφαιρώντας ένα αρχείο
  • Αυτοματοποίηση, πχ κρατάς αυτά τα αρχεία και τα μεταφέρεις σε μια νέα εγκατάσταση

Το ότι το /etc/fstab είναι μόνο ένα αρχείο κάνει πολύ δύσκολο τον έλεγχο και τον αυτοματισμό.

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

Θα πρόσθετα και άλλη μια κατηγόρια: Συσκευές USB, όπου κακώς δεν το χρησιμοποιούμε. Ο λόγος είναι μια άλλη δυνατότητα ενός automount. Να κάνει αποπροσάρτηση εάν δε γίνετε χρήση για κάποιο χρονικό διάστημα. Σε ένα εξωτερικό USB αυτό βοηθά στο να μένει το σύστημα αρχείων καθαρό, σε μια συσκευή για εξωτερικό backup σε μείωση της κατανάλωσης ενέργειας.

Αν η διανομή χρησιμοποιεί systemd ένας καλύτερος τρόπος και για mount και για automount είναι η χρήση του. Τα παρακάτω περιέχουν κάποιες πληροφορίες:

3 «Μου αρέσει»

Εχω την ακριβώς αντίθετη άποψη.
Αισθάνομαι όμως ότι και οι δυό μας, θα κάνουμε αυτό που θέλουμε :smiley:

3 «Μου αρέσει»

A post was split to a new topic: Πρόβλημα με προσάρτηση κατάτμησης

Τα uid και gid είναι αυτά που βρίσκουμε με την εντολή:

id

;
Δεν είναι αριθμητικά; 1000 κ.λ.π.;
Α μάλιστα το UUID είναι το μεγάλο αλφαριθμητικό που εμφανίζεται με την εντολή που παραθέτεις @sv1sjp για κάθε κατάτμηση. Μπορούμε να χρησιμοποιήσουμε και τα labels στην εντολή;

Η εντολή sudo findmnt --verify --verbose πραγματοποιεί verify το /etc/fstab για τυχών τέτοια λάθη και ποια είναι. Για το αν απλά είναι σωστό μπορεί να γίνει και ένα sudo mount -afv (βασικά ένα ψεύτικο mount --all).

Πιστεύω το σημαντικό μειονέκτημα στη προκειμένη περίπτωση του fstab είναι πως εφαρμόζεται αυτόματα μόνο κατά το boot. Συνεπώς αν έχει αφαιρεθεί ο δίσκος και συνδεθεί ενώ το σύστημα τρέχει θα πρέπει να γίνει manually το mount.