大家好,我是你的好朋友白眉大叔,今天这篇文章主要讲解 :linux 服务器端配置nfs
NFS 的作用: network file system 网络文件系统 ,在企业中主要用来做 文件存储服务器, 用来存放静态的资源,比如图片,视频等。
其他分布式文件系统: FastDFS, glusterfs, HDFS
不管是 rsync 还是其他的的系统,只要是网络传输的,都要进行打包操作。打包的优点
NFS 原理:
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc是一个远程过程调用,那么使用nfs必须有rpc服务
RPC是远程过程调用(Remote Procedure Call)
接下来我们进行NFS服务器的搭建:
|------| | 环境准备 |
注意: 不要忘记关闭防火墙, 以免默认的防火墙策略禁止正常的
NFS
共享服务
关闭防火墙:linux关闭防火墙命令
第一步: 安装NFS服务
yum -y install nfs-utils (服务端客户端都需要安装, 服务端需要设置配置, 客户端 用showmount -e ip 的时候会使用)
第2步: 配置NFS服务 (相关配置文件: /etc/exports)
vim /etc/exports (注意里边的空格不能随便添加尤其是括号里边的)
可以这样:
echo "/mnt/nfs/k8sdata *(rw,sync,no_root_squash)" >> /etc/exports
#表示所有客户端可挂载
/mnt/nfs/k8sdata
需要创建一个 虚拟用户 www
groupadd -g666 www
useradd -u666 -g666 -M -s /sbin/nologin www
mkdir /data
chown www.www /data
exports 案例:
[root@nfs ~]#cat /etc/exports
/data/wordpress 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/zh 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/phpshe 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
第3步: 启动NFS服务
systemctl start nfs
systemctl enable nfs
第4步: 检查NFS配置文件是否正确
cat /var/lib/nfs/etab
到此为止, NFS的服务端已经配置好了,
showmount -e
NFS 客户端使用:
第1步: 客户端需要暗转nfs 服务,不需要启动nfs服务
yum -y install nfs-utils
第2步: 查看服务端共享的目录(是否能查到)
showmount -e 172.16.1.31
mount -t nfs 172.16.1.31:/data /mnt
-t (type)
第3步:挂载
mount -t nfs 172.16.1.31:/data/a /mnt/
umount /mnt
第4步: 开机自动挂载:
/etc/rc.local 加 X 执行权限
/etc/fstab(也可以开机自动挂载,但是 在centos7中有并行 运行的隐患, 比如某个需要访问网络的服务 可能会优先fstab 执行。)所以最好有网络请求的 放在 /etc/rc.local中
NFS配置详解(配置参数) {#title-6}
| n
fs共享参数 | 参数作用 |
|-----------------|-------------------------------------------|
| 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的用户UID,必须存在系统 |