automount NFS
This commit is contained in:
parent
5f8a0cefe5
commit
1f6c9649a5
|
@ -0,0 +1,84 @@
|
|||
# Automounting network drives with NFS
|
||||
|
||||
I have a NAS which supports NFS, which I use to store all of my photos, music and other media on my local network.
|
||||
This gives me OS-independent to all of these files, and frees up drive space on my laptops and desktop - most of which are dual-booted.
|
||||
On Windows it's fairly straightforward to establish a network drive, but on Linux-based systems - at least on the Debian- and Arch- based distros I find myself using - the process is a little more involved.
|
||||
|
||||
Here I'll use `systemd` to automatically mount a shared folder when they're accessed by a client machine.
|
||||
There are other ways to do this, but as my machines predimonantly run Debian- or Arch-derived Linux distributions, `systemd` is a choice that works for both.
|
||||
This post is largely based on the description on the [ArchWiki](https://wiki.archlinux.org/title/NFS#As_systemd_unit).
|
||||
My NAS' hostname is `sleeper-service`, and I'll be mounting the `Music` shared folder.
|
||||
|
||||
## Initial mount
|
||||
|
||||
Before doing anything automatically, we first need to create a `systemd` unit to mount the remote filesystem at a path in our local filesystem.
|
||||
I'll mount the remote folder onto the local path `/sleeper-service/Music`.
|
||||
When creating this file, pay attention to its name, as it's important for it to correspond to the path of the mountpoint.
|
||||
The correct name can be determined using `systemd-escape` - pay attention to escape characters in the output, this caught me out several times.
|
||||
|
||||
```
|
||||
$ systemd-escape /sleeper-service/Music
|
||||
-sleeper\x2dservice-Music
|
||||
$ sudo touch /etc/systemd/system/sleeper\\x2dservice-Music.mount
|
||||
```
|
||||
|
||||
Don't ask me why `systemd` is like this - I think it's silly too.
|
||||
After creating the unit file, we then need to edit it and fill out some information, specifying where the remote filesystem is and also when we need to initialise it.
|
||||
|
||||
Here I used a name instead of an address for the `What=` part - I have an entry for `sleeper-service` configured in `/etc/hosts`, but you can equally use an IP address just as well.
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Mount music at boot
|
||||
|
||||
[Mount]
|
||||
What=sleeper-service:/volume1/Music
|
||||
Where=/sleeper-service/Music
|
||||
Options=vers=3
|
||||
Type=nfs
|
||||
TimeoutSec=30
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Once we've created this, we can try to manually mount the shared folder by starting the unit:
|
||||
|
||||
```
|
||||
$ sudo systemctl start sleeper\\x2service-Music.mount
|
||||
$ ls /sleeper-service/Music
|
||||
```
|
||||
|
||||
At this stage you ought to see the contents of your shared folder.
|
||||
Next, we want to set up the automount, so that this remote folder is mounted automatically when we try to access it.
|
||||
To do that, we need to first stop/disable the unit we just created:
|
||||
|
||||
```
|
||||
$ sudo systemctl disable sleeper\\x2dservice-Music.mount
|
||||
```
|
||||
|
||||
Then, let's create an `.automount` unit with the same name as the `.mount` file we already have.
|
||||
The automount unit expects the mount unit to exist alongside it - it doesn't replace it.
|
||||
|
||||
```
|
||||
$ sudo touch /etc/systemd/system/sleeper\\x2dservice-Music.automount
|
||||
```
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Automount NAS music
|
||||
|
||||
[Automount]
|
||||
Where=/sleeper-service/Music
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Then, enable the new `.automount` unit to have it run automatically:
|
||||
|
||||
```
|
||||
$ sudo systemctl enable sleeper\\x2dservice-Music.automount
|
||||
```
|
||||
|
||||
The folder should now be automatically mounted at the target location when trying to access it.
|
Loading…
Reference in New Issue