使用 RH 系发行版:
sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server
sudo firewall-cmd --add-service={rpc-bind,mountd,nfs} && sudo firewall-cmd --add-service={rpc-bind,mountd,nfs} --permanent
sudo sudo firewall-cmd --add-service=nfs && sudo firewall-cmd --add-service=nfs --permanent
使用 Debian 系发行版:
sudo apt install nfs-kernel-server
安装 NFS 服务端sudo systemctl enable --now nfs-server.service
启动 NFS Server 并设置开机启动执行 sudo exportfs -ra
可以让 NFS 根据 /etc/exports 文件重新载入配置。
exportfs
常用的选项有:
-o <file_systems>
: 指定导出没有在 /etc/exports 中列出的目录。格式必须与在 /etc/exports 中的相同。这个选项通常用来测试导出的文件系统,然后再将其永久添加到导出的文件系统列表中/etc/exports 管理 NFS 的共享配置,每个条目都有以下结构:
export host(options)
export host1(options1) host2(options2) host3(options3)
export *(options)
/mnt/mp_storage0 192.168.2.11(rw,async,root_squash,no_subtree_check)
/mnt/mp_backup *(ro,async,root_squash,no_subtree_check)
配置的选项有:
如果服务器支持 NFSv3 则客户端使用 sudo showmount --exports <server-ip>
查看有哪些共享目录。
如果服务器支持 NFSv4 则客户端可以直接挂载根目录后进行查找:
mount <my-server>:/ /mnt/
ls /mnt/
NFSv4 只需要 TCP/UDP 2049 一个端口,也不需要 portmap 这个包。
只需要把 /etc/nfs.conf 中的:
[nfsd]
...
# vers3=y
...
改为:
[nfsd]
...
vers3=n
...
在 NFSv4 中,rpc 相关的服务已经没有用了,但依旧会随 nfs-server.service 启动。最后需要停掉它们:
sudo systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
使用 RH 系发行版: sudo dnf install nfs-utils
安装 nfs-utils 软件包。
使用 Debian 系发行版: sudo apt install nfs-common
安装 NFS 客户端与服务端。
注: 网上教程也有说用 sudo apt install nfs-client
只安装客户端就行。但是自从 Debian 11 开始的软件库里不再有 nfs-client , sudo apt install nfs-client
会被自动定向到安装 nfs-common 。
sudo showmount 192.168.1.10 -e
查看服务器共享了哪些文件夹。
在客户机上用 sudo mount -t nfs -o nfsvers=4 192.168.1.10:/mnt/hgst3ta ~/NetworkStorage/hgst3ta/
挂载。
注: man nfs
可以查看所有的挂载选项。
用 sudo umount 192.168.1.10:/mnt/hgst3ta
卸载。
可以创建 ~/.config/systemd/user/mnt-r6-FreeBSDa-hgst3ta.service 在用户登入时执行挂载的 .service 文件。内容如下:
[Unit]
Description=Mount r6 vm100 2nd HGST 8T disk under %h/NetworkStorage/hgst3ta/.
[Service]
ExecStart=sudo mount.nfs4 192.168.1.10:/mnt/hgst3ta %h/NetworkStorage/hgst3ta/
ExecStop=sudo umount 192.168.1.10:/mnt/hgst3ta
RemainAfterExit=yes
[Install]
WantedBy=default.target
systemctl --user enable mnt-r6-FreeBSDa-hgst3ta.service
在用户登入后自动执行。