Files
nexus/raw/Home Office/如何在Ubuntu Server上通过NFS挂载Synology NAS上的共享文件夹.md

6.3 KiB
Raw Blame History

title, source, author, published, created, description, tags
title source author published created description tags
1. 先卸载当前的挂载(如果当前还挂着的话) shenwei
nas
nfs
synology
unbuntu

#unbuntu #nfs #synology #nas

Synology NAS配置

1. NAS 端新增 NFS 规则的具体步骤

  1. 登录 DSM 控制面板:打开浏览器,登录你的群晖 NAS 管理界面。
  2. 进入共享文件夹设置:点击 “控制面板” (Control Panel) -> “共享文件夹” (Shared Folder)
  3. 定位目标文件夹:在列表中选中你的备份文件夹 backup(即位于 volume2 下的那个)。
  4. 打开编辑界面:点击上方的 “编辑” (Edit) 按钮。
  5. 切换至 NFS 权限页签:在弹出的窗口中,点击最右侧的 “NFS 权限” (NFS Permissions) 选项卡。
  6. 新增规则:点击左下角的 “新增” (Create),在弹出的窗口中填入你提到的参数:
    • 主机名或 IP:输入你的 Ubuntu 服务器静态 IP例如 192.168.3.47)。如果想让工作室同网段设备都能访问,也可以填 192.168.3.0/24
    • 权限:选择 “可读写” (Read/Write)
    • Squash (最重要):选择 “映射所有用户为 admin” (Map all users to admin)

      技术要点:这会将 Ubuntu 端 root 发起的备份请求,在 NAS 端统一以 admin 身份执行,从而绕过复杂的 Linux 权限校验。

    • 安全性:选择 “sys”
    • 额外勾选:勾选下方所有的复选框,包括 “允许来自非特权端口的连接”“允许用户访问已挂载的子文件夹”。 !IMG-20251229190624379.png

2. 获取准确的挂载路径

保存设置后请留意“NFS 权限”页签左下角显示的一行小字,标明了 “挂载路径:”

  • 通常路径为:/volume2/backup
  • 请务必记住这个完整路径,稍后在 Ubuntu 命令中需要用到。

Ubuntu Server配置

在 Linux 世界中,备份服务器到 NAS 的标准做法是使用 NFS

NFS 的优势:

  1. 原生权限支持Samba 会丢失 Linux 的文件所有权信息,导致恢复 Docker 卷时权限报错。NFS 则能完美保留。
  2. 无协议协商陷阱:没有像 vers=3.0 这种复杂的方言Dialect冲突。
  3. 性能更强:在处理大量小文件(如 Docker 配置NFS 效率远高于 Samba。

NFS 挂载 3 步走:

  1. NAS 端配置 (参考以上)
  2. Ubuntu 挂载 Bash
    # 安装客户端
    sudo apt install nfs-common -y
    # 执行挂载 (注意NFS 使用冒号连接路径)
    sudo mount -t nfs 192.168.3.17:/volume2/backup /mnt/nas_backup
    
  3. 验证 Bash
    df -h | grep nas_backup
    
    
    root@shenwei-HP-ZBook-01:/mnt/nas_backup# df -h | grep nas_backup
    192.168.3.17:/volume2/backup  3.5T  1.9T  1.7T  54% /mnt/nas_backup
    

3. 实现NFS永久挂载

在 Linux 系统中,手动执行的 mount 命令是临时性的,重启后内核会重置所有挂载状态。要实现开机自动挂载,必须将配置写入系统的文件系统表文件 /etc/fstab

由于你使用的是 NFS 协议,且考虑到笔记本在启动时网络初始化可能略慢于磁盘挂载,我们需要加入一些特定的参数来确保稳定性。

1. 准备凭据(可选但推荐)

NFS 通常基于 IP 授权,不需要账号密码。如果你之前确认过手动挂载 sudo mount -t nfs 192.168.3.17:/volume2/backup /mnt/nas_backup 成功且无需密码,可以跳过此步。

2. 修改 /etc/fstab 实现永久挂载

  1. 备份原文件(作为资深管理者,备份配置是标准操作):

    Bash

    sudo cp /etc/fstab /etc/fstab.bak
    
  2. 编辑文件

    Bash

    sudo nano /etc/fstab
    
  3. 在文件末尾添加以下一行

    Plaintext

    192.168.3.17:/volume2/backup  /mnt/nas_backup  nfs  defaults,timeo=900,retrans=5,_netdev  0  0
    

参数详解:

  • defaults: 使用默认的挂载参数rw, suid, dev, exec, auto, nouser, async

  • timeo=900: 设置超时时间为 90 秒(单位是 1/10 秒)。

  • retrans=5: 如果超时,尝试重连 5 次。

  • _netdev: 关键参数。告诉系统这是一个网络设备,务必等到网络服务完全启动后再尝试挂载,防止开机过程因找不到网络而卡死。


3. 测试配置(非常重要)

千万不要直接重启! 如果 /etc/fstab 写错了,系统可能无法正常启动。

执行以下命令验证:

Bash

# 1. 先卸载当前的挂载(如果当前还挂着的话)
sudo umount /mnt/nas_backup

# 2. 模拟开机自动挂载
sudo mount -a

# 3. 检查是否挂载成功
df -h | grep nas_backup

如果 sudo mount -a 没有报错,且 df 能看到 NAS 空间,那么以后重启服务器,挂载都会自动生效。


4. 进阶:针对 Rsync 脚本的安全保护

在你的 rsync 脚本(/usr/local/bin/rsync_backup.sh)开头,建议加入一个挂载检查。防止在 NAS 掉线或由于某种原因挂载失败时,rsync 把备份数据写到了本地硬盘的挂载点目录(会导致笔记本硬盘迅速爆满)。

在脚本的配置区下方加入这段逻辑:

Bash

# 检查挂载点是否是一个有效的挂载
if ! mountpoint -q /mnt/nas_backup; then
    echo "错误NAS 未挂载,备份任务取消!" >> /var/log/rsync_backup.log
    # 在这里可以加入发送通知给你的逻辑
    exit 1
fi

5. 常见问题:重启后仍然失效?

如果在执行了上述操作后重启依然不生效,通常是因为 Ubuntu 的 nfs-common 服务启动慢于 mount -a 的执行。

  • 对策:你可以启动 Remote File Systems 目标服务:

    Bash

    sudo systemctl enable remote-fs.target
    

你现在已经修改并测试过 sudo mount -a 了吗?如果运行这个命令有报错,请把错误信息发给我。