day 35权限
权限
rw 可读写 read write
ro 只读 read only
sync 写到磁盘才算完成 安全 慢
async 异步写到远程缓冲区 不安全 快
all_squash 不管客户端是什么用户,到服务端都是nfsnobody
anonuid=匿名用户的UID
anongid=匿名用户的GID
[root@nfs01 ~]# cat /etc/exports
#oldboy shared dir at time
#/data 172.16.1.0/24(rw,sync) 10.0.0.0/24(ro)
/data 172.16.1.0/24(rw,sync)
/data1 10.0.0.0/24(ro)
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data1 10.0.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,no_all_squash)
/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默认用户
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
[root@web01 ~]# cat /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 4 11:15:16 2019
UUID=3a3a295f-88f8-456d-94dc-1a3eeb517c02 / xfs defaults 0 0
UUID=fd2e0ca7-32be-425f-86a2-85c02b9ec5ea /boot xfs defaults 0 0
UUID=79a3924b-739e-48dc-ab0c-0444b9ac6591 swap swap defaults 0 0
172.16.1.31:/data /data nfs defaults,soft 0 0
172.16.1.31:/data /data nfs defaults,hard,intr 0
mount -t nfs -o hard,intr,rsize=131072,wsize=131072 172.16.1.31:/data/ /mnt
NFS服务器出问题时候,客户端重启依然能够启动,可以用如下列两个方法:
defaults,soft
defaults,hard,intr
#/etc/fstab
安全加优化的挂载方式如下:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt
为什么fstab无法实现nfs挂载?
回顾:开机启动流程:
1、磁盘先启动/etc/fstab
2、防火墙在前。
3、网卡
NFS网络文件系统,通过网络挂载,网络没起如何挂载?
又想在fstab里实现挂载、就用一个服务,延迟启动。
延迟满足:小孩给棉花糖的故事,学会延迟满足是成就自己的优秀思维。
[root@nfs01 /data1]# systemctl start remote-fs.target
[root@nfs01 /data1]# systemctl enable remote-fs.target
Created symlink from /etc/systemd/system/multi-user.target.wants/remote-fs.target to /usr/lib/systemd/system/remote-fs.target.
[root@nfs01 /data1]# systemctl status remote-fs.target
● remote-fs.target - Remote File Systems
Loaded: loaded (/usr/lib/systemd/system/remote-fs.target; enabled; vendor preset: enabled)
Active: active since 四 2019-04-18 10:17:57 CST; 18s ago
Docs: man:systemd.special(7)
4月 18 10:17:57 nfs01 systemd[1]: Reached target Remote File Systems.
C6:netfs服务
C7:remote-fs.target
提高性能,但会降低数据安全。一般情况,生产环境不推荐使用。除非对性能要求很高,对数据可靠性不要求的场合。
# sync:该参数和async相反。有I/O操作时,都会同步处理I/O,即把数据同步写入硬盘。此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。※
# atime:在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项,在高并发的情况下,建议通过明确加上noatime,来取消这个默认项,以到达提升I/O性能,优化I/O的目的。
# ro:以只读的方式挂载一个文件系统。
# rw:以可写的方式挂载一个文件系统。※
# auto:能够被自动挂载通过-a选项。
# noauto:不会自动挂载文件系统。
# defaults:这是fstab里的默认值,包括rw,suid, dev, exec, auto, nouser,and async,默认情况大部分都是默认值。
# exec:允许文件系统执行二进制文件,取消这个参数,可以提升系统安全。
# noexec :在挂载的文件系统中不允许直接执行任何二进制的程序,注意,仅对二进制程序有效,即使设置了noexec, shell, php程序还是可以执行的。
# noatime 访问文件时不更新文件的inode时间截,高并发环境下,推荐显式应用该选项,可以提高系统IO性能。※
# nodiratime:不更新文件系统上的directory inode时间戳,高并发环境,推荐显式应用该选项,可以提高系统IO性能。※
# nosuid:不允许set-user-identifier or set-group-identifier位生效。
# suid:允许set-user-identifier or set-group-identifier位生效。
# nouser:禁止一个普通用户挂载该文件系统,这是默认挂载时的默认选项。
remount:尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件系统的挂载标志,从而使得一个只读文件系统变的可写,这个动作不会改变设备或者挂载点。当系统故障时进入single或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了。具体命令为: mount -o remount,rw /,表示将根文件系统重新挂载使得可写。single或rescue模式修复系统时这个命令十分重要。※
dirsync: 目录更新时同步写入磁盘*。
NFS服务器端配置: /data 172.16.1.0/24(rw,sync,all squash,anonuid-65534,anongid-65534)
NFS客户端挂载优化配置命令;
mount-t nfs -o nosuid, noexec, nodev, noatime, nodiratime, rsize=131072, wsize=131072 172. 16. 1. 31:/data//mnt #<==兼顾安全性能
口对NFS服务的所有服务器内核进行优化时,执行如下命令:
cat >>/ete/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生效 如果卸载的时候提示"umount: /mnt: device is busy" ,需要退出挂载目录在进行卸载,如果是NFS Server宕机了,则需要强制卸载,可执行umount-lf/mnt 大型网站NFS网络文件系统的替代软件为分布式文件系统Moosefs(mfs).GlusterFS, FastDFS. 阿里云对应的存储服务NAS服务,还有OSS对象存储。 NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是 Windows和Linux混合环境的集群系统,可以用samba来实现。 优点: 1)简单,容易上手,容易掌握。 2)NFS文件系统内数据是在文件系统之上的,即数据是能看得见的。 3)部署快速,维护简单方便,且可控,满足需求的就是最好的。 4)可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的。 5)服务非常稳定。 局限: 1)存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录。这个在后期的课程会通过负载均衡及高可用方案弥补。 2)在大数据高并发的场合, NFS效率、性能有限(2千万/旧以下PV的网站不是瓶颈,除非网站架构设计太差)。 3)客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题不大)。 解决NFS性能问题: 1、使用CDN加速以及自己搭建文件缓存服务(squid,nginx,varnish) 2、把多个目录分配到不同的NFS服务器上。 3、弃用NFSF 4、使用分布式文件系统。 本章重点回顾 1) NFS服务的访问原理流程(会口述)。 2)NFS作为集群共享存储角色的搭建、部署 3)NFS作为集群共享存储角色的排障,高级优化(会口述)。 4)mount命令的知识及参数,如-o(noatime,nodiratime,noexec,nosuid,rsize,wsize)等。 5)fstab文件知识以及fstab故障修复。 6)常用命令showmount, exportfs, umount(-If), rpcinfo. 7)NFS的优点、缺点,适合的应用场景,替代产品(FastDFS 、Moosefs(mfs), GlusterFS) 。 8)NFS架构上性能解决方案。 9)了解autofs.