nfs
Posted 你很棒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nfs相关的知识,希望对你有一定的参考价值。
(1)nfs简介
作用:通过网络的不同的主机之间共享资源,支持多节点挂载并发写入
特点:单台,适合小型网络集群架构,非常稳定;大型公司使用(mfs,glusterfs,fastdfs)
nfs优点:部署和维护简单;数据是在文件系统之上,是能看见真实的数据,大型分布式文件系统都是看不到数据的;可靠稳定
nfs缺点:存在单点故障;高并发NFS效率和性能有限;客户端认证基于ip和主机名; nfs数据是明文的,nfs本身对数据完整性不作验证
注意:生产环境中不要出现ip地址,使用主机名代替
(2)环境准备
服务器系统 角色 ip 主机名
Centos7.3 x86_64 nfs服务器 192.168.1.31 nfs-server
Centos7.3 x86_64 nfs客户端 192.168.1.32 httpd01
Centos7.3 x86_64 nfs客户端 192.168.1.33 httpd02
(3)服务器端配置
0)关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -ri ‘/^SELINUX=/cSELINUX=disabled‘ /etc/sysconfig/selinux
setenforce 0
1)安装和启动服务
yum install nfs-utils rpcbind -y
systemctl restart rpcbind //必须要启动rpcbind服务,nfs服务需要向rpcbind服务注册端口
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
2)创建共享数据目录和准备首页内容
mkdir /webdata
echo "nfs test....." >/webdata/index.html
3)修改配置文件
格式
共享目录 客户端ip或网段(属性1,属性2)
#vim /etc/exports
/webdata 192.168.1.0/24(rw,sync,no_root_squash) //如果nfs客户端是root的话,访问nfs服务器的共享目录也是有root的权限
exportfs -v //使其配置生效
exportfs -rv //如果修改了/etc/exports文件,使用该命令重新加载
4)在nfs服务器上验证资源
rpcinfo -p localhost // 检查nfs服务是否向rpcbind注册端口
showmount -e 192.168.1.31 //查看nfs server的共享资源
mount -t nfs 192.168.1.31:/webdata /mnt //本机测试挂载
(4)客户端配置
1)安装和启动httpd
yum install httpd -y
systemctl start httpd
systemctl enable httpd
2)安装工具和验证nfs server的共享资源
#yum install nfs-utils -y //也要安装,不然没有showmount命令
#showmount -e 192.168.1.31
Export list for 192.168.1.31:
/webdata 192.168.1.0/24
3)手工挂载测试和卸载
mount -t nfs 192.168.1.31:/webdata /var/www/html
umount /var/www/html
4)永久挂载
#vim /etc/fstab
192.168.1.31:/webdata /var/www/html nfs defaults 0 0 //nfs共享资源 本地目录 文件系统类型 默认挂载选项 不备份不检查
#mount -a //加载/etc/fstab文件
5)验证挂载
df -hT
echo "Hello World" >/var/www/html/index.html //修改文件测试
(4)nfs server端权限参数详解
rw:可读可写
ro:只读
sync:写入数据时,数据同步写入到nfs server的硬盘才返回;数据安全不丢失,缺点:性能比不启用该参数要差
async:写入数据时候,写入到内存缓冲区中,过一段时间在写入到磁盘中;缺点:短时间会导致数据不一致
no_root_squash :如果nfs客户端是root的话,访问nfs服务器的共享目录也是有root的权限
root_squash:如果nfs客户端是root的话,访问nfs服务器的时候会被压缩成匿名用户
all_squash:不管nfs客户端的身份如何,访问nfs服务器的共享资源都会被压缩成匿名用户,默认的匿名用户是nfsnobody,匿名用户的uid和gid定义:anonuid=65534,anongid=65534,默认是这个uid和gid,都可以自己修改
如果server端配置这种参数,客户端想对共享目录有写权限,需要对共享目录设置权限或者修改属主 chown -R nfsnobody /webdata
注意:/etc/exports定义了权限; nfs服务器的共享目录权限必须有可写权限
(5)nfs server内核优化:发送和接收缓存区默认大小和最大大小
#cat >>/etc/sysctl.conf<<EOF
et.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOF
#sysctl -p
以上是关于nfs的主要内容,如果未能解决你的问题,请参考以下文章