nfs环境

点击这里在哔哩哔哩bilibili在线观看配套的教学视频

点击跳转到nfs课程所有目录

1 nfs server环境

1.1 步骤

nfs server安装所需软件:

apt-get install nfs-kernel-server -y # debian
dnf install nfs-utils -y # openeuler

nfs server编辑exportfs的配置文件/etc/exports,配置选项的含义可以通过命令man 5 exports查看:

/tmp/ *(rw,no_root_squash,fsid=0)
/tmp/s_test/ *(rw,no_root_squash,fsid=1)
/tmp/s_scratch *(rw,no_root_squash,fsid=2)

或者使用以下命令,具体用法查看man 8 exportfs:

exportfs -i -o fsid=148252,no_root_squash,rw *:/tmp/s_test # 添加
exportfs -u *:/tmp/s_test # 删除

执行脚本nfs-svr-setup.sh启动nfs server,其中,rpcbind(在服务文件/lib/systemd/system/rpcbind.service中)负责端口的对应工作(以前叫portmap),其他程序请查看/lib/systemd/system/nfs-server.service服务文件。

1.2 软件和配置文件

/etc/exports的配置格式如下:

# 注意不能使用 192.168.122.* 而要使用 192.168.122.0/24
# [分享出去的目录]   [ip/(权限)]             [主机名]         [通配符]
tmp              192.168.122.0/24(ro)   localhost(rw)   *.chenxiaosong.com(ro,sync)

详细的配置查看man 5 exports,下面介绍几个常用的:

用以下命令查看开了哪些端口:

netstat -tulnp| grep -E '(rpc|nfs)'

以下命令查看rpc状态:

# -p: 针对ip
rpcinfo -p localhost
# -t: tcp, -u: udp
rpcinfo -t localhost nfs # nfs程序检查软件版本信息(tcp)

以下命令查看或操作分享的目录:

showmount -e localhost # 查看
exportfs # 查看
# -a: 全部,-r: 重新, -u: 取消,-v: 打印
exportfs -arv # 重新分享
exportfs -auv # 全部删除

还有两个文件:

2 nfs client环境

nfs client安装所需软件:

apt-get install nfs-common -y # debian
dnf install nfs-utils -y # openeuler

nfs client挂载(更多挂载选项可以通过命令man 5 nfs查看):

# nfsv4的根路径是/tmp/,源路径填写相对路径 /s_test 或 s_test
mount -t nfs -o vers=4.0 ${server_ip}:/s_test /mnt
mount -t nfs -o vers=4.1 ${server_ip}:/s_test /mnt
mount -t nfs -o vers=4.2 ${server_ip}:/s_test /mnt
# nfsv3和nfsv2 源路径要写完整的源路径,没有根路径的概念,源路径必须是绝对路径/tmp/s_test
mount -t nfs -o vers=3 ${server_ip}:/tmp/s_test /mnt
# nfsv2, nfs server 需要修改 /etc/nfs.conf 中的 `[nfsd] vers2=y`,但在Debian 11 (bullseye) 上安装的nfs-utils 1.3.3上找不到/etc/nfs.conf
mount -t nfs -o vers=2 ${server_ip}:/tmp/s_test /mnt

如果nfs server的exportfs的配置文件/etc/exports如下,没有fsid选项:

/tmp/s_test/ *(rw,no_root_squash)

这时nfsv4的根路径就是/,nfs client挂载nfsv4的命令如下:

mount -t nfs -o vers=4.0 ${server_ip}:/tmp/s_test /mnt # 或 tmp/s_test

要注意的是nfs不能在/etc/fstab文件中配置开机挂载,因为那时网络还没启动。