NFS Server 搭建与配置

status
Published
type
Post
slug
nfs-config-record
date
Aug 19, 2020
tags
Config
NFS
Linux
summary
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
    1. 在Linux系统中,以 Debian 系发行版为例,可以使用以下命令安装NFS:
      sudo apt install nfs-kernel-server
  1. 配置NFS
    1. 配置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 可查看该共享目录。
       
  1. 管理NFS服务
    1. 使用以下命令重启NFS服务:
      # 查看状态 sudo systemctl status nfs-server # 启动 sudo systemctl start nfs-server # 重启 sudo systemctl restart nfs-kernel-server

连接NFS客户端

  1. 安装NFS客户端
    1. 使用以下命令安装NFS客户端:
      sudo apt install -y --no-install-recommends nfs-common
  1. 挂载NFS共享目录
    1. 使用以下命令挂载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,防火墙中打开此端口后再尝试挂载即可。
  1. 测试NFS共享目录
    1. # 客户端文件夹中,创建文件 cd /mnt/nfs dd if=/dev/zero of=./test bs=1M count=10 ll # 服务端查看该共享目录 ll /home/user/shared
  1. 客户端强制卸载挂载点
    1. # 强制关闭正在使用指定文件或目录的进程 fuser -km /mnt/nfs/ # 再 umount umount /mnt/nfs/