1 服务器部分

1.1 查看系统是否已安装NFS

# 查看是否安装过nfs
rpm -qa | grep nfs
rpm -qa | grep rpcbind

1.1 安装NFS

yum -y install nfs-utils rpcbind

1.3 创建共享目录并授权

# 创建准备共享的目录
mkdir -p /nfs

# 赋予权限
chmod 666 /nfs

# chmod 命令更改文件/文件夹的属性:
# chmod 666 /nfs 表示所有用户都可以读写但不能执行文件/文件夹;
# chmod 777 /nfs 允许所有用户的所有操作(一般的暴力解决办法)
# chmod 744 /nfs 只允许用户(所有者)执行所有操作;组和其他用户只允许阅读。

1.4 编辑export配置文件

# 创建配置文件
vim /etc/exports 

# 配置文件内容
/nfs 27.1.100.0/8(rw,no_root_squash,no_all_squash,sync)

# 注:
# 第一列代表共享哪个目录
# 第二列代表允许哪些客户端访问(可以是ip也可以是ip段)
# 第三列共享目录的一些权限设置

# 所有人
# ro:共享目录只读;
# rw:共享目录可读可写;
# all_squash:所有访问用户都映射为匿名用户或用户组;
# no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
# root_squash(默认):将来访的root用户映射为匿名用户或用户组;
# no_root_squash:来访的root用户保持root帐号权限;
# anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
# anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
# secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
# insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
# sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
# async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
# wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
# no_wdelay:若有写操作则立即执行,应与sync配合使用;
# subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
# no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

1.5 使配置生效

exportfs -r

# 不重启nfs服务应用更新,相关选项如下:
# -a 全部挂载或卸载 /etc/exports中的内容
# -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
# -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
# -v 在export的时候,将详细的信息输出到屏幕上。

1.6 启动rpcbind、nfs服务

# 启动服务
systemctl start rpcbind
systemctl start nfs

# 开机自启
systemctl enable rpcbind.service
systemctl enable nfs.service

1.7 查询共享状态

showmount -e localhost

# 查询结果如下
# Export list for localhost:
# /nfs 27.1.100.0/8

# 选项与参数:
# -a :显示目前主机与客户端的 NFS 联机分享的状态;
# -e :显示某部主机的 /etc/exports 所分享的目录数据。

2 客户端部分

2.1 安装nfs-utils客户端

yum -y install nfs-utils

2.2 查看服务器的共享目录信息

showmount -e 27.1.100.128

# 显示的共享目录信息如下:
# Export list for 27.1.100.128:
# /nfs 27.1.100.0/8

2.3 创建挂载目录

mkdir /nfs

# 挂载共享目录
mount -t nfs 27.1.100.128:/nfs /nfs

2.4 测试挂载结果

2.4.1 查看挂载结果

df -h

# 查询结果如下,27.1.100.128:/nfs就是我们挂载的共享目录

# 文件系统                 容量  已用  可用 已用% 挂载点
# devtmpfs                 7.8G     0  7.8G    0% /dev
# tmpfs                    7.8G     0  7.8G    0% /dev/shm
# tmpfs                    7.8G   44M  7.8G    1% /run
# tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
# /dev/mapper/centos-root   35G  2.3G   33G    7% /
# /dev/sda1               1014M  153M  862M   16% /boot
# tmpfs                    1.6G     0  1.6G    0% /run/user/0
# 27.1.100.128:/nfs         35G  3.0G   32G    9% /nfs

2.4.2 在服务端操作

# 在服务端写入数据
echo "test" > /nfs/test.txt

2.4.3 在客户端操作

# 在客户端查看数据并写入数据
cat /nfs/test.txt 
# 查询结果如下
test

# 写入数据
echo "204" >> /nfs/test.txt

2.4.4 在服务器操作服

cat /nfs/test.txt 
# 查询结果如下
test
204

2.4.5 卸载已挂在的NFS

# 卸载挂载的NFS
umount /nfs

# 查看卸载情况,可以看到27.1.100.128:/nfs已经没有了
df -h

# 文件系统                 容量  已用  可用 已用% 挂载点
# devtmpfs                 7.8G     0  7.8G    0% /dev
# tmpfs                    7.8G     0  7.8G    0% /dev/shm
# tmpfs                    7.8G   44M  7.8G    1% /run
# tmpfs                    7.8G     0  7.8G    0% /sys/fs/cgroup
# /dev/mapper/centos-root   35G  2.3G   33G    7% /
# /dev/sda1               1014M  153M  862M   16% /boot
# tmpfs                    1.6G     0  1.6G    0% /run/user/0
# 27.1.100.128:/nfs         35G  3.0G   32G    9% /nfs