Σημαντική Ανακοίνωση: Το παρών άρθρο έχει δημοσιτευτεί επίσημα στο Linux-User.gr και διατηρείται εδώ για καθαρά λόγους αρχειοθέτησης.

Η Ιστορία:

Ένα από τα προβλήματα που εντόπισα όταν αποφάσισα να προσθέσω εξωτερικό δίσκο στο 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 αυτόματα. :)