NFS Server 搭建与配置

✨ NFS(Network File System)是一种分布式文件系统协议,可以使计算机在网络中像访问本地文件一样访问远程文件。在Linux系统中,可以通过安装NFS服务端和配置NFS来实现共享存储。安装NFS服务端需要使用特定的命令,如在Debian系发行版中可以使用以下命令安装NFS:sudo apt install nfs-kernel-server。配置NFS需要编辑/etc/exports文件,指定共享路径、允许的主机和共享参数,如读写权限、同步写入等。编辑完成后,使用sudo exportfs -arv命令启动共享文件夹。管理NFS服务可以通过systemctl命令来查看状态、启动和重启NFS服务。连接NFS客户端需要安装NFS客户端并挂载NFS共享目录,最后可以进行测试以确保共享目录的正常使用.

因客户环境暂无 NAS,故采用搭建 NFS 的方式来实现共享存储,如下做一个简单整理记录以备查询。

什么是NFS协议?

NFS(Network File System)是一种分布式文件系统协议,可以使计算机在网络中像访问本地文件一样访问远程文件。

安装NFS服务端

  1. 安装NFS

    在Linux系统中,以 Debian 系发行版为例,可以使用以下命令安装NFS:

    sudo apt install nfs-kernel-server
  2. 配置NFS

    配置NFS需要编辑/etc/exports文件,例如:

    # 共享路径 允许的主机(共享参数)
    # /home/user/shared是要共享的目录,*表示允许任何客户端连接,rw表示可读写,sync表示同步写入,no_subtree_check表示不检查子树。
    /home/user/shared    *(rw,sync,no_subtree_check)

    更多参数说明如下:

    参数说明
    ro / rw只读 / 读写
    root_squash当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
    no_root_squash当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
    all_squash无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
    sync同时将数据写入到内存与硬盘中,保证不丢失数据
    async优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

    编辑好该文件后,可使用如下命令启动该共享文件夹:

    sudo exportfs -arv

    使用showmount -e 可查看该共享目录。

  3. 管理NFS服务

    使用以下命令重启NFS服务:

    # 查看状态
    sudo systemctl status nfs-server
    # 启动
    sudo systemctl start nfs-server
    # 重启
    sudo systemctl restart nfs-kernel-server

连接NFS客户端

  1. 安装NFS客户端

    使用以下命令安装NFS客户端:

    sudo apt install -y --no-install-recommends nfs-common
  2. 挂载NFS共享目录

    使用以下命令挂载NFS共享目录:

    # 创建挂载路径
    mkdir -p /mnt/nfs
    # 挂载, 其中 nfs_server 是NFS服务端的IP地址或主机名,/home/user/shared是要挂载的共享目录路径,/mnt是本地挂载目录。
    sudo mount nfs_server:/home/user/shared /mnt/nfs

    挂载时,须保证 NFS 服务相关端口是通达的,可通过 rpcinfo -p | grep nfs 命令查看相应端口,一般为 2049,防火墙中打开此端口后再尝试挂载即可。

  3. 测试NFS共享目录

    # 客户端文件夹中,创建文件
    cd /mnt/nfs
    dd if=/dev/zero of=./test bs=1M count=10
    ll
    
    # 服务端查看该共享目录
    ll /home/user/shared
  4. 客户端强制卸载挂载点

    # 强制关闭正在使用指定文件或目录的进程
    fuser -km /mnt/nfs/
    # 再 umount
    umount /mnt/nfs/