2019-04-18day35NFS案例和深入挂载

NFS案例和深入挂载

all_squash不管客户端什么用户,到服务端都是nfsnobody

anonuid=匿名用户的UID

anongid=匿名用户的GID

[root@nfs01 ~]# cat /var/lib/nfs/etab

/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)

更改默认NFS默认

用户项目实践2:

NFS共享的匿名用户用www,使得客户端上传的图片都是www用户,而不是匿名的nfsnobody。

 web01 backup客户端实现挂载到nfs。

  NFS下面共享/backup ,允许web01 backup客户端(/backup)可读写。

web01上传图片,backup上可以删除web01上传的图片。

 NFS下面共享/data1,允许 web01 backup客户端10网段只读(data1)。

实现开机自动挂载。

1)nfs01服务端NFS、以及所有客户端:

[root@nfs01 ~]# useradd -u 1111 www

[root@nfs01 ~]# id www

uid=1111(www) gid=1111(www) 组=1111(www)

2)服务端NFS特殊配置:

[root@nfs01 ~]# tail -2 /etc/exports

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=1111,anongid=1111)

/data1 10.0.0.0/24(ro)

[root@nfs01 ~]# chown -R www.www /data

[root@nfs01 ~]# ls -ld /data

drwxr-xr-x 2 www www 70 4月  18 10:05 /data

3)服务端NFS重启:

[root@nfs01 ~]# systemctl reload nfs

4)每个客户端配置

mount -t nfs 172.16.1.31:/data /data

[root@web01 ~]# df -h

文件系统                      容量               已用       可用            已用%          挂载点
172.16.1.31:/data       19G                   1.8G     18G                10%            /data

[root@web01 /data]# touch new_web01.txt

[root@web01 /data]# ls -l

总用量0
-rw-r--r-- 1 www www 0 4月  16 10:24 ddddf
-rw-r--r-- 1 www www 0 4月  16 10:23 dddfff
-rw-r--r-- 1 www www 0 4月  18 11:01 new_web01.txt
-rw-r--r-- 1 www www 0 4月  17 11:59 oldboy.txt
-rw-r--r-- 1 www www 0 4月  17 12:30 oldgirl.txt

NFS服务的重点知识梳理:

当多个NFS客户端访问服务器端读写文件时,需要具有以下几个权限:

1、NFS服务器/etc/exports设置需要开放可写入的权限,即服务器的共享权限。

2、NFS服务器实际要共享的NFS目录权限具有可写入w的权限,即服务端本地目录的安全权限。

3、每台机器都对应存在和NFS默认配置UID的相同UID65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖NFS的默认用户配置。)

重点NFS服务文件或命令的说明:

/etc/export:NFS服务主配置文件,配置NFS具体共享服务的地点,默认内容为空。。以行为单位。

/usr/sbin/exportfs:NFS服务的管理命令。

/us/sbin/showmount:用来在客户端,查看NFS配置及挂载结构的命令。

/var/lib/nfs/etab:NFS配置文件完整参数文件(有很多没有配置但是默认就有的NFS参数)。

/proc/mounts:客户端本地挂载参数和状态信息的文件。

NFS客户端挂载参数列表:


2019-04-18day35NFS案例和深入挂载_第1张图片
2019-04-18day35NFS案例和深入挂载_第2张图片


mount -o参数对应的选项:


2019-04-18day35NFS案例和深入挂载_第3张图片


2019-04-18day35NFS案例和深入挂载_第4张图片

man mount后的-o参数中英文翻译对比:

rasync:设计文件系统I/O的操作都是异步处理,即不会同步写到磁盘,此参数会提高性能,单会降低数据安全。一般情况下,生产环境下不推荐使用。除非对性能要求很高,对数据可靠性不要求的场合。

sync:该参数与async相反。有I/O操作时,都会同步处理I/O即把数据同步写入硬盘。此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。

atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项,在高并发的情况下,建议通过明确加上moatime,来取消这个默认项,以达到提升I/O性能,优化I/O的目的。

ro:以制度的方式挂载一个文件系统。

rw:以可写的方式挂载一个文件系统。

auto:能够被自动挂载通过 -a选项。

noaut:不会自动挂载文件系统。

defaults:这是fstab里的默认值,包括rw、suid、dev、exec、auto、nouser、async,默认情况大部分都是默认值。

exec:允许文件系统执行二进制文件,取消这个参数,可以提升系统安全性。

noexec:在挂载的文件系统中不允许直接执行任何二进制的程序,注意,仅对二进制程序有效,即使设置了noexec、shell,php程序还是可以执行的。

noatime:访问文件时不更新文件的inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统I/O性能。

nosuid:不允许set-user-identifier or set-group-identifier位生效。

suid:允许set-user-identifier or set-group-identifier位生效。

nouser:禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项。

remount:尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件通的挂载标志,从而使得一个只读文件系统变得可写,这个动作不会改变设备或者挂载点。当系统故障时进入siingle或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场。具体命令为:mount -o remount,rw/,表示将根文件系统重新挂载使得可写。single或rescue模式修复系统是这个命令十分重要。

dirsync:目录更新是同步写入磁盘。


企业生产案例文件系统只读故障;和fstab故障

1、救援模式修复

2、当用户,mount -o     remount,rw  /

2)安全加优化的挂载方式如下:

mount -t nfs -o nosuid,noexec,nodev,notime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt

NFS内核优化建议

/proc/sys/net/core/rmem_default:该文件制定了接收套接字缓冲区大小的默认值(以字节为单位),默认设置:124928

/proc/sys/net/core/rmem_max:该文件制定了接收套介质缓冲区大小的最大值(以字节为单位),默认设置:12928

/proc/sys/net/core/wmem_default:该文件制定了发送套接字缓冲区大小的默认值(以字节为单位),默认设置:12928

/proc/sys/net/core/wmem_max:该文件制定了发送套接字缓冲区大小的默认值(以字节为单位),默认设置:12928


企业生产场景NFS共享存储优化小结

(1)硬盘:SAS/SSD硬盘,买多块,硬件raid,制作raid5或raid10. 网卡吞吐量要大,至少千兆(多块bond)

(2)NFS服务器配置:/data 10.0.0.0/24 (rw,sync,all_squash,anounid=65534,anongid=65534)

(3)NFS客户端挂载优化配置命令:

mount -t nfs -o nosudi,noexec,noatime,nodiratime,rsize=131072,wsize=131072 10.0.0.7:/data/ /mnt

(4)对NFS服务的所有服务器内核进行优化时,执行如下命令:

cat >>/etc/sysctl.conf<net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOF

执行sysctl -p生效

(5)如果卸载的时候提示“umount: /mnt: device is busy”,需要退出挂载目录再进行卸载,如果是NFS  server宕机了,则需要强制卸载,可执行umount -lf /mnt。

(6)大型网站NFS网络文件系统的替代软件为分布式文件系统Moosefs(mfs)、GlusterFS、FastDFS。

阿里云对应的存储服务NAS服务,还有OSS对象存储。

NFS系统应用的优缺点说明:

NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是windows和linux混合环境的集群系统,可以用samba来实现。

优点:

(1)简单,容易上手,容易掌握。

(2)NFS文件系统内数据是在文件系统智商的,即数据是能看得见的。

(3)部署快速,维护简单方便,且可控,满足需求的就是最好的。

(4)可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统上的。

(5)服务非常稳定。

局限:

(1)存在单点故障,如果NFS  Server宕机了,所有客户端都不能访问共享目录。这个在后期的课程会通过负载均衡及高可用方案弥补。

(2)在大数据高并发的场合,NFS效率、性能有限(2千万/日一下PV的网站不是瓶颈,除非网站架构设计太差)。

(3)客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用户内网则问题不大)。

(4)NFS数据是明文的,NFS本身不对数据完整性作验证。

(5)多台客户机挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其NFS服务端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载)。

(6)涉及了同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让往后在哪的扩展性变得更好。

应用建议:

大中小型网站(参考点2千万/日PV以下)线上应用,都有用武之地。门户网站也会有应用,生产场景应该多把数据的访问往前推,即尽量把静态存储里的资源通过CDN或缓存服务器提供服务,如果没有缓存服务或架构不好,存储服务器数量再多也是扛不住压力的,而且用户体验很差。

解决NFS性能问题:

(1)使用CDN加速以及自己搭建文件缓存服务(squid,nginx,varnish)。

(2)把多个目录分配到不同的NFS服务器上。

(3)弃用NFS

(4)使用分布式文件系统


2019-04-18day35NFS案例和深入挂载_第5张图片

本章重点回顾:

(1)NFS服务的访问原理流程(会口述)

(2)NFS作为集群共享存储角色的搭建、部署。

(3)NFS作为集群存储角色的排障,高级优化(会口述)

(4)mount命令的知识及参数,如-o(noatime,nodiratime,noexec,nosuid,rsize,wsize)等。

(5)fstab文件知识以及fstab故障修复。

(6)常用命令showmount\exportfs\umount(-lf)、rpcinfo。

(7)NFS的优点、缺点,适合的应用场景,替代产品(FastDFS、Moosefs(mfs)、GlusterFS)。

(8)NFS架构上性能解决方案。

(9)了解autofs。

你可能感兴趣的:(2019-04-18day35NFS案例和深入挂载)