NFS部署流程

NFS部署流程

Deng YongJie's blog 134 2021-10-20

第1章 NFS介绍

1.什么是共享存储

⼀句话说就是多台服务器的数据保存在同⼀个存储服务器上。这样⽆论⽤户请求在哪⼀台服务器上看到的数据都是⼀样的。

2.什么是NFS

NFS Network File System ⽹络⽂件系统。
NFS 主要功能是通过局域⽹络让不同的主机系统之间可以共享⽂件或⽬录
NFS 系统和 Windows ⽹络共享、⽹络驱动器类似, 只不过 windows⽤于局域⽹, NF ⽤于企业集
群架构中, 如果是⼤型⽹站, 会⽤到更复杂的分布式⽂件系统 glusterfs,Ceph等

3.NFS应⽤场景

多台web服务器的图⽚和视频数据都保存在NFS服务器上
多台服务器的备份数据都保存在NFS服务器上

4.NFS通讯原理

1.服务端启动后将⾃⼰的端⼝信息注册到rpcbind
2.NFS客户端通过TCP/IP的⽅式连接NFS服务端的rpcbind并获得真实的端⼝信息
3.NFS客户端获得真实的端⼝后,将⾃⼰需要的操作函数通过⽹络发送给NFS服务端对应的端
4.NFS服务端接收到请求后,由rpc.nfsd进程判断NFS客户端是否拥有连接权限
5.NFS服务端的rpc.mount进程判断客户端是否有对应的操作权限
6.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递⾄内核,由内核驱动硬件
注意: rpc 是⼀个远程过程调⽤,那么使⽤ nfs 必须有 rpc 服务

第2章 NFS服务端配置

1.安装软件

yum install nfs-utils -y

2.修改配置⽂件

配置⽂件格式:

举例:
/data 172.16.1.0/24(rw,sync,all_squash)
解释:
NFS共享⽬录路径 允许NFS客户端访问的IP地址(参数)
注意:
访问地址和参数之间没有空格

配置⽂件解释:

执⾏ man exports 命令,然后切换到⽂件结尾,可以快速查看如下样例格式:
rw #读写权限
ro #只读权限
root_squash #当NFS客户端以root管理员访问时,映射为NFS服务器的匿名⽤户(不
常⽤)
no_root_squash #当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
(不常⽤)
all_squash #⽆论NFS客户端使⽤什么账户访问,均映射为NFS服务器的匿名⽤户(常
⽤)
no_all_squash #⽆论NFS客户端使⽤什么账户访问,都不进⾏压缩
sync #同时将数据写⼊到内存与硬盘中,保证不丢失数据
async #优先将数据保存到内存,然后再写⼊硬盘;这样效率更⾼,但可能会丢失数据
anonuid #配置all_squash使⽤,指定NFS的⽤户UID,必须存在系统
anongid #配置all_squash使⽤,指定NFS的⽤户GID,必须存在系统

配置命令:

cat > /etc/exports <<EOF
/data 172.16.1.0/24(rw,sync,all_squash)
EOF

3.创建www⽤户

useradd -u 1000 -M -s /sbin/nologin www

4.创建数据⽬录并授权

mkdir /data -p
chown -R www:www /data/

5.启动NFS服务

systemctl start nfs-server.service

6.检查服务状态

showmount -e 172.16.1.31

7.添加开机⾃启动

systemctl enable rpcbind nfs-server

第3章 NFS客户端配置

1.安装软件

yum install nfs-utils rpcbind -y

2.通讯测试

showmount -e 172.16.1.31

3.挂载测试

mkdir /data -p
mount -t nfs 172.16.1.31:/data /data
df -h
echo "123" > /data/123.txt
cat /data/123.txt

4.配置开机⾃动挂载

vim /etc/fstab
172.16.1.31:/data /data nfs defaults 0 0
mount -a
df -h