====== Home Directories on Arch Linux ======
====== Client Config ======
===== Packages =====
Install Required Packages
pacman -S rpcbind nfs-utils nfsidmap
===== Configs =====
Change the lines in these files to the values defined.
Domain = acm.cs
NEED_IDMAPD="yes"
172.29.0.6:/nfs-dir /mount-point nfs4 rw,hard,defaults 0 0
[Time]
NTP=172.29.0.6 172.29.0.7
FallbackNTP=0.us.pool.ntp.org 1.us.pool.ntp.org 2.us.pool.ntp.org
===== Daemons =====
Two daemons need to be started after networking in order to mount NFS directories and one to keep things working right
* rpcbind
* nfs-common
* systemd-timesyncd (timedatectl set-ntp true)
Start rpcbind then nfs-common, then you will be able to mount the nfs directories, add these entries to rc.conf in the daemons array after the network/net-profiles entries.
====== Server Config ======
Mozart is currently the NFS file server and is only accessible to members of the ACM LAN Admins group.
Exported directories are located in /export, this is the NFS root
===== Packages =====
Install Required Packages
pacman -S rpcbind nfs-utils nfsidmap openntpd
===== Configs =====
Change the lines in these files to the values defined.
The number of nfsd threads in increased from the default to improve preformance.
# Number of servers to start up; the default is 8 servers.
NFSD_COUNT="32"
Configure the NTP server to sync against the US NTP pool and make sure that clients on the LAN have access
# sample ntpd configuration file, see ntpd.conf(5)
# Addresses to listen on (ntpd does not listen by default)
listen on 0.0.0.0
# sync to a single server
#server ntp.example.org
# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers us.pool.ntp.org
And finally this file controls the exporting of directories, and should have entries like these.
To prevent issues with wildcards or IP ranges, each client has a separete config
/export 172.29.0.0/24(rw,fsid=0,no_subtree_check,async,no_root_squash)
/export/path-to-acm-home-dirs 172.29.0.2(rw,no_subtree_check,async,nohide,no_root_squash)
/export/skel 172.29.0.2(ro,no_subtree_check,async,nohide,no_root_squash)
===== Daemons =====
Three daemons need to be started after networking in order to serve NFS directories and one to keep things working right
* rpcbind.service
* nfs-client.target
* nfs-server.service
* opennptd.service
Start rpcbind, then nfs-common, and then nfs-server, then you will be able to mount the nfs directories, add these entries to rc.conf in the daemons array after the network/net-profiles entries.
Enable the appropriate daemons via the systemd systemctl command
===== Moving /var/lib/nfs to tempfs =====
To increase server preformance and reduce the number of lockups on the NFS clients, especially since many are workstations, /var/lib/nfs, the home pf the nfsd rpcpipefs, to a tempfs directory aka to memory rather than disk. Add this daemon to the daemons line of rc.conf **BEFORE** nfs-common and nfs-server.
Add this line to the fstab
none /var/lib/nfs tmpfs defaults,mode=0755 0 0
Copy /var/lib/nfs to a separate directory called /var/lib/nfs.d then add these files to setup the systemd service.
[Unit]
Description=NFS Tempfs Setup
Before=nfsd.service
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/nfsvartemp
[Install]
WantedBy=multi-user.target
#!/bin/bash
cp -R /var/lib/nfs.d/* /var/lib/nfs
Lastly
systemctl enable nfsvartemp.service