在Ubuntu上搭建NFS服务器实现媒体共享 | AI生成和翻译

Home 2025.03

要在 Ubuntu 上设置 NFS(网络文件系统)服务器来提供媒体文件服务,请按照以下详细步骤操作。本指南假设您希望安全高效地在网络上共享包含媒体文件(例如视频、音乐)的目录。


步骤 1:安装 NFS 服务器软件

首先,您需要在 Ubuntu 系统上安装 NFS 服务器软件包。

  1. 更新软件包列表以确保获取最新版本:
    sudo apt update
    
  2. 安装 nfs-kernel-server 软件包,该软件包提供 NFS 服务器功能:
    sudo apt install nfs-kernel-server
    

这将安装运行 NFS 服务器所需的软件。


步骤 2:创建并配置媒体目录

您需要创建一个目录来存储媒体文件,并将其配置为共享。

  1. 创建一个目录来存放媒体文件(例如 /media/share):
    sudo mkdir -p /media/share
    
  2. 将所有权设置给您的用户帐户(如果需要,请将 $USER 替换为您的实际用户名):
    sudo chown $USER:$USER /media/share
    
  3. 调整权限以允许访问。对于客户端主要只需读取的媒体文件,您可以设置:
    • 目录:755(其他用户具有读取和执行权限)
    • 文件:644(其他用户具有读取权限) 但是,为简化操作,如果不需要精细控制,可以递归应用 755
      sudo chmod -R 755 /media/share
      
    • 注意:媒体文件不需要可执行,但文件上的 755 不会影响 NFS 功能,因为执行是在客户端本地进行的。
  4. 将您的媒体文件放入 /media/share(例如,将视频或音乐复制到此目录中)。

步骤 3:配置 NFS 导出

NFS 服务器使用 /etc/exports 文件来定义要共享的目录以及谁可以访问它们。

  1. 使用文本编辑器打开 exports 文件:
    sudo nano /etc/exports
    
  2. 添加一行以共享 /media/share。语法为:
    /目录/路径 客户端(选项)
    
    • 示例 1:与特定客户端 IP(例如 192.168.1.100)共享,并具有读写访问权限:
      /media/share 192.168.1.100(rw,sync,no_subtree_check)
      
    • 示例 2:与子网上的所有设备(例如 192.168.1.0/24)共享,并具有只读访问权限:
      /media/share 192.168.1.0/24(ro,sync,no_subtree_check)
      
    • 示例 3:与任何设备共享(安全性较低,请谨慎使用):
      /media/share *(rw,sync,no_subtree_check)
      

    选项说明

    • rw:读写访问权限(如果用于媒体流,偏好只读则使用 ro)。
    • sync:确保在确认操作之前将数据写入磁盘(更安全但较慢;为了性能可使用 async,但存在崩溃时数据丢失的风险)。
    • no_subtree_check:通过禁用子树检查来提高性能(推荐用于大多数设置)。
  3. 保存文件(在 nano 中按 Ctrl+O,然后按 Enter)并退出(按 Ctrl+X)。

步骤 4:应用 NFS 配置

编辑 exports 文件后,更新 NFS 服务器以反映您的更改。

  1. 导出共享:
    sudo exportfs -a
    
  2. 重新启动 NFS 服务器以应用配置:
    sudo systemctl restart nfs-kernel-server
    
  3. 验证服务是否正在运行:
    sudo systemctl status nfs-kernel-server
    
    • 在输出中查找 “active (running)”。
  4. 检查导出的目录:
    sudo exportfs -v
    
    • 这应列出 /media/share 及您指定的选项。

步骤 5:配置防火墙

NFS 使用特定端口,您需要确保防火墙允许到这些端口的流量。Ubuntu 通常使用 UFW(简单防火墙)。

  1. 默认 NFS 端口
    • NFS:2049 (TCP/UDP)
    • RPC:111 (TCP/UDP)
    • 其他服务(mountd、statd、lockd):默认动态分配,但可以设置为静态端口。
  2. 为简化操作,允许基本端口与动态设置(如果您未设置静态端口):
    sudo ufw allow 2049
    sudo ufw allow 111
    
    • 注意:如果 mountd、statd 或 lockd 使用随机端口,这可能无法覆盖所有 NFS 流量。
  3. 可选:设置静态端口以便更好地控制(推荐用于精确的防火墙规则):
    • 编辑 /etc/default/nfs-kernel-server
      sudo nano /etc/default/nfs-kernel-server
      

      添加或修改:

      RPCMOUNTDOPTS="-p 4001"
      
    • 编辑 /etc/default/nfs-common
      sudo nano /etc/default/nfs-common
      

      添加或修改:

      STATDOPTS="-p 4002"
      
    • 为 lockd 创建 /etc/modprobe.d/nfs.conf
      sudo nano /etc/modprobe.d/nfs.conf
      

      添加:

      options lockd nlm_udp_port=4003 nlm_tcp_port=4003
      
    • 重新启动 NFS 服务器:
      sudo systemctl restart nfs-kernel-server
      
  4. 在 UFW 中允许静态端口:
    sudo ufw allow 2049/tcp
    sudo ufw allow 2049/udp
    sudo ufw allow 111/tcp
    sudo ufw allow 111/udp
    sudo ufw allow 4001/tcp
    sudo ufw allow 4001/udp
    sudo ufw allow 4002/tcp
    sudo ufw allow 4002/udp
    sudo ufw allow 4003/tcp
    sudo ufw allow 4003/udp
    
  5. 如果 UFW 尚未激活,则启用它:
    sudo ufw enable
    

步骤 6:验证设置

确保 NFS 服务器正常工作。

  1. 从服务器检查导出的共享:
    showmount -e localhost
    
    • 您应该看到列出的 /media/share 及正确的客户端/选项。
  2. 验证监听端口:
    sudo ss -tuln | grep -E "2049|111|4001|4002|4003"
    
    • 确认这些端口已打开并绑定到 NFS 服务。

步骤 7:从客户端测试(可选)

在客户端机器(例如另一个 Ubuntu 系统)上,测试挂载共享:

sudo mount -t nfs <服务器_IP>:/media/share /mnt

媒体文件的附加说明


命令摘要

以下是基本设置的快速参考(不含静态端口):

sudo apt update
sudo apt install nfs-kernel-server
sudo mkdir -p /media/share
sudo chown $USER:$USER /media/share
sudo chmod -R 755 /media/share
echo "/media/share *(rw,sync,no_subtree_check)" | sudo tee -a /etc/exports
sudo exportfs -a
sudo systemctl restart nfs-kernel-server
sudo ufw allow 2049
sudo ufw allow 111

通过此设置,您的 Ubuntu NFS 服务器应已准备好在网络上提供媒体文件服务。请根据您的安全和网络要求调整 IP 地址、权限和防火墙规则。


Back Donate