ubuntu18.04.4 配置 NFS 服务器


NFS 概述

NFS(Network File System)是一种能使服务器上的信息被其他计算机挂载而达到资源共享的网络文件系统。一个客户机可以把远程文件系统挂载到本地文件系统的某个目录下,作为本地系统的一部分来使用。NFS 有属于自己的协议和端口号,但在传送资料或其他相关信息时,NFS 服务器需要使用 RPC 协议来协助运行。


RPC

因为 NFS 支持的功能很多,每当启动一个功能就要启用一些端口来传输数据,因此 NFS 的功能所对应的端口是不固定的,通常是随机取用一些未被使用的小于 1024 的端口作为传输之用,而客户端必须知道服务器相关端口才能连接,此时需要 RPC 服务。

RPC(远程过程调用协议)的功能是制定每个 NFS 功能对应的端口号,并且回送给客户端,让客户端连接到正确的端口上。NFS 服务器启动时会随机启用数个端口号,并主动向 RPC 注册,RPC 固定使用 111 号端口监听客户机的请求并回应正确的端口号。因此,启动 NFS 之前,要先启动 RPC。


NFS 文件系统配置

Ubuntu 系统所使用的软件包为 nfs-kernel-server,当然还需要其他包支持,比如 rpcbind 作端口映射工作,这些支持包在安装 NFS 时会自动安装。

sudo apt install nfs-kernel-server

NFS 的服务是 nfs-server.service,可以使用服务管理的办法进行管理

sudo systemctl enable/disable nfs-server.service	# 启用/禁用
systemctl status nfs-server.service	# 检查状态
systemctl start/stop/restart/reload nfs-server.service	# 启动/停止/重启/重载

NFS 配置文件为 /etc/exports,每一行描述一个共享目录,并且说明该目录如何被共享,每一有效行的格式为:共享目录 访问者(选项) 访问者(选项)

访问者为主机或 IP 地址,括号内的选项只对括号前的访问者有效,访问者格式可以为:

  • 指定 IP 地址
  • 指定网段中所有主机,如 192.168.137.0/24
  • 单台主机名,如 pc001
  • 含有通配符的主机名,如 proj*.local.domain,表示 local.domain 域的所有以 proj 开业的主机

常用选项及说明如表所示

选项 说明
ro/rw 只读/读写
sync/async 同步/异步写入
secure 只允许 NFS 通过 1024 以前端口连接(默认)
insecure 允许 NFS 通过 1024 及以上的端口连接,此选项关闭 secure
secure_locks 使用安全的文件锁
insecure_looks/no_auth_nlm 允许使用不安全的文件锁,此选项关闭 secure_locks
wdelay 延迟写,如果多个用户要写入 NFS 目录,则归组写入(默认)
no_wdelay 同步写入。当使用 async 时,无须此设置
hide 不共享子目录或隐藏子目录
no_hide 共享 NFS 目录的子目录
subtree_check 共享目录树,如果共享目录是一个子目录,将强制检查父目录权限(默认)
no_subtree_check 与 subtree_check 相对应,不检查父目录权限
root_squash 客户机用 root 用户访问共享文件夹时,将 root 映射为匿名用户
no_root_squash 客户机用 root 用户访问共享文件夹时,不做映射
all_squash 客户机所有用户映射为匿名用户
anonuid=xxx,anongid=xxx 使用 all_squash 选项时,指定 NFS 服务器 /etc/passwd 文件中用户的 UID 和 GID
no_all_squash 保留共享文件的 UID 和 GID(默认)

在客户端使用 NFS,需要安装支持包

sudo apt-get install nfs-common

使用 mount 命令来将服务器上的共享目录安装到本地

mount -t nfs [options] server:dir mount_point

其意义是将 server 服务器上的 dir 目录安装在本地的 mount_point 安装点上,文件系统类型为 nfs


NFS 系统的使用

首先建立一个共享目录,然后向其中添加一些用于共享的文件

sudo mkdir -p /var/nfs_share
sudo /etc/init.d /var/nfs_share

编辑 /etc/exports 文件,加入如下行

/var/nfs_share *(rw,no_root_squash,insecure)

重载 NFS 服务

sudo systemctl reload nfs-server.service

在任意一台可以 ping 通服务器的主机上安装共享目录,这里以 Ubuntu 客户端为例

sudo mkdir -p /mnt/nfs
sudo mount -t nfs 192.168.1.105:/var/nfs_share /mnt/nfs

将 192.168.1.105 上的 /var/nfs_share 目录挂载到本机的 /mnt/nfs 目录下。到此,在客户端可以通过命令查看其中内容了

ls -l /mnt/nfs

NFS 文件系统的拆卸与普通文件的拆卸方法相同

sudo umount /mnt/nfs

ubuntu18.04.4 配置 NFS 服务器

上一篇:并发控制:进程通信之信号量


下一篇:Mac下使用iTerm2让SSH记录远程服务器账号和密码