群晖NAS使用NFS共享文件,关联Synology
- 参考
群晖服务端配置
群晖版本: DSM 6.2.4
- 启动NFS服务
控制面板 - 文件服务 - SMB/AFP/NFS - 启动NFS服务 - 设置共享文件的NFS共享
控制面板 - 共享文件夹 - 选中目标文件夹 - 编辑 - NFS权限 Tab页
服务器名称或IP地址: * (任意IP地址) 或者 192.168.1.1/24(子网地址)
权限: 可读写
Squash: 映射所有用户为admin
安全性: sys
勾选 启动异步
勾选 允许来自非特权端口的连接(大于1024的端口)
勾选 允许用户访问已装载的子文件夹
Ubuntu 20.04.4 LTS 客户端连接实例
-
群晖文件服务 NFS 只勾选
启动NFS服务
未勾选启用NFSv4.1支持
-
/etc/fstab 中设置挂载
1 2
# /etc/fstab 192.168.1.10:/volume1/server /mnt/nasdata nfs rw,hard,intr,rsize=8192,wsize=8192,timeo=10 0 0
-
实际挂载的效果
1 2 3
$ nfsstat -m /mnt/nasdata from 192.168.1.10:/volume1/server Flags: rw,relatime,vers=3,rsize=8192,wsize=8192,namlen=255,hard,proto=tcp,timeo=10,retrans=2,sec=sys,mountaddr=192.168.1.10,mountvers=3,mountport=892,mountproto=udp,local_lock=none,addr=192.168.1.10
-
-
群晖文件服务 NFS 只勾选
启动NFS服务
同时勾选启用NFSv4.1支持
- 执行mount手动挂载
1 2 3 4 5 6 7
# 默认挂载 NFSv4.1 sudo mount -t nfs 192.168.1.10:/volume1/server /mnt/ds918_data # 或者 手动指定 v4.1,效果一样 sudo mount -t nfs -o vers=4.1 192.168.1.10:/volume1/server /mnt/ds918_data # 也可以手动指定使用 NFSv4.0 sudo mount -t nfs -o vers=4 192.168.1.10:/volume1/server /mnt/ds918_data
- v4.1 实际挂载的效果
1 2
/mnt/ds918_data from 192.168.1.10:/volume1/server Flags: rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.12,local_lock=none,addr=192.168.1.10
-
v4.0 实际挂载的效果
1 2
/mnt/ds918_data from 192.168.1.10:/volume1/server Flags: rw,relatime,vers=4.0,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.12,local_lock=none,addr=192.168.1.10
- 执行mount手动挂载
Linux 客户端设置
- 参考
- 安装
1 2
# ubuntu / Debian sudo apt install nfs-common
/etc/fstab
配置1
host.myserver.com:/home /mnt/home nfs rw,hard,intr,rsize=8192,wsize=8192,timeo=14 0 0
Arch Linux / Manjaro
- 参考
手动挂载
这种方法,一般用在调试阶段,看看能不能正常连接,权限是否正常。
1 2 3 4 | # 如果不是 NFSv4 就删掉 vers=4 mount -t nfs -o vers=4 servername:/srv/nfs/music /mountpoint/on/client Created symlink /run/systemd/system/remote-fs.target.wants/rpc-statd.service → /usr/lib/systemd/system/rpc-statd.service. |
/etc/fstab 自动挂载
这种方法,适合作为日常不定时访问的文件共享,但是,如果有系统服务依赖这个共享存储,就要使用 systemd 的 mount 和 automount 了。
-
配合systemd的配置(推荐)
- 修改
/etc/fstab
1
servername:/home /mountpoint/on/client nfs _netdev,noauto,x-systemd.automount,x-systemd.mount-timeout=10,timeo=14,x-systemd.idle-timeout=1min 0 0
- 重新加载配置
1 2
sudo systemctl daemon-reload sudo systemctl restart remote-fs.target
- 修改
-
通用的配置,在没有systemd的时候,也可以用这种方法。
-
修改
/etc/fstab
1
servername:/music /mountpoint/on/client nfs defaults,timeo=900,retrans=5,_netdev 0 0
-
systemd mount / automount 挂载
-
创建 mount unit 文件到目录
/etc/systemd/system
mount unit 的名字必须要和目录对应上,比如,例子挂载到 /mnt/home , unit 名称就是 mnt-home.mount,否则报错:
Where= setting does not match unit name. Refusing
例如:
/etc/systemd/system/mnt-home.mount
1 2 3 4 5 6 7 8 9 10 11 12 13
[Unit] Description=Mount home at boot [Mount] What=172.16.24.192:/home Where=/mnt/home Options=vers=4.1 Type=nfs TimeoutSec=30 ForceUnmount=true [Install] WantedBy=multi-user.target
nfs 类型的mount,自动会有
- After 依赖:remote-fs-pre.target, network.target and network-online.target
- Before 依赖: remote-fs.target
如果设置了 nofail mount option,就不会存在这个 Before 依赖。
ForceUnmount=true
允许nfs server连不上的时候,可以强制 umount - 开始mount:
sudo systemctl start xxx.mount
-
开机自启动:
sudo systemctl enable xxx.mount
-
— 如果希望访问到,才去挂载,则需要再创建 automount unit —
-
延续上面例子的automount
/etc/systemd/system/mnt-home.automount
1 2 3 4 5 6 7 8 9
[Unit] Description=Automount home [Automount] Where=/mnt/home TimeoutIdleSec="5min 20s" [Install] WantedBy=multi-user.target
TimeoutIdleSec="5min 20s"
表示,5分20秒内无操作,自动umount - Disable/stop the mnt-home.mount unit, and enable/start mnt-home.automount