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