一、NFS:Network File System 网络文件系统
NFS:协议,类Unix系统,文件系统(内核)
发展:sun公司 NFSv1 NFSv2 NFSv3 NFSv4(红帽6以上)
RFC(远程过程调用)
2049(tcp/udp)
NFS+LDAP(SSL)很大的场景才会用。
RPC:portmapper
监听
111/tcp
111/udp
二、NFS原理:
NFS服务端: 用户进程
RPC服务 {------ NFS服务 本地文件访问 RPC服务
(rpcbind) (nfs-utils) || (rpcbind)
||第一步 || ||
TCP/IP协议栈 本地文件访问 TCP/IP协议栈
第二步去找NFS服务 || ||
本地磁盘 {--------------}本地磁盘
三、访问流程:
1.首先用户访问应用程序,由程序在NFS客户端上发出NFS文件存取功能的查询请求,这时NFS客户端(及执行程序的服务器)RPC服务(及rpcbind服务)就会通过
网络向NFS服务器端的rpcbind的111端口发出NFS文件存取功能的询问请求。
2.NFS服务器端的rpcbind服务找到对应的已注册的NFS daemon 端口后,通知NFS客户端的rpcbind服务。
3.此时NFS客户端就可以获取到正确的端口,然后直接与NFS daemon联系存取数据了。
4.NFS客户端把数据存取成功后,返回给前端访问程序,告知给用户存取结果。
总结:由于NFS的各项功能都需要向rpcbind服务注册,所以rpcbind服务才能获取到NFS服务的各项功能对应的port number服务注册,PID,NFS在主机
所监听的IP等,而NFS需要有各个rpcbind服务的协助才能成功提供服务。
综上所述:无论是NFS客户端还是服务端,需要使用NFS时,都首先需要启动rpcbind服务。
四、挂载格式: 挂载命令 挂载的格式类型 NFS服务器提供的共享目录 NFS客户端需要挂载的目录
mount -t nfs 192.168.11.39:/data /data/video
完整方式: mount -t nfs 192.168.11.39:/data /data/video
五、文件系统导出属性:
rw :读写;
ro :只读;
sync :同步模式,请求或写入数据时,内存中数据写入到NFS-server的磁盘后才会退出;
async :请求或写入数据时;先返回请求,再讲数据写入到内存缓存和硬盘中。可以提供NFS性能,但是安全性较低。不建议使用
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
六、NFS在网站中的位置 共享给Apache/Nginx服务器组。一般是放图片,视频
七、NFS的局限:
1.局限性是存在单点故障,如果NFS server宕机了所以客户端都不能访问共享目录。--可以使用负载均衡和高可用方案弥补。
2.高并发支持能力较差。适合2000W PV以下。
3.安全性不高,基于IP和主机名认证,数据明文。 做基于内网
4.维护麻烦,可做基于autofs的方式。
********************************************************
********************************************************
生产环境项目案例;适合1500W pv以下使用。
Server端:
一、server端,安装两个包
yum remove nfs-utils* rpcbind* 如果有可以卸载安装最新的
yum -y install nfs-utils* rpcbind*
二、提供nfs-server服务的机器上
vim /etc/exports
/data/ 192.168.11.0/24(rw,sync,all_squash,anonuid=501,anonuid=501)
/data/ /data/ 192.168.11.0/24(rw,sync,all_squash)
本机需要挂载的目录 允许挂载的IP段 (rw读写,sync同步写入磁盘,no_root_squash不压缩用户 all_squash压缩用户,anonuid=501,anonuid=501用户uid和gid)
NFS配置的一些选项说明
rw :读写;
ro :只读;
sync :同步模式,内存中数据时时写入磁盘;
async :不同步,把内存中数据定期写入磁盘中;
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
[root@NFS /]# chown -R nfsnobody.nfsnobody data/
三、启动服务
必须按顺序启动rpcbind
[root@NFS /]# /etc/init.d/rpcbind start [root@NFS ~]# service rpcbind start
启动nfs
[root@NFS /]# /etc/init.d/nfs start [root@NFS ~]# service nfs start
关闭iptables和selinux
四、查看挂载的目录
[root@NFS ~]# showmount -e 192.168.11.31
clnt_create: RPC: Program not registered
[root@NFS ~]# showmount -e 192.168.11.39
Export list for 192.168.11.39:
/data 192.168.11.0/24
[root@NFS ~]#
###########################################################################
###########################################################################
Client端:
一、只需安装nfs-utils*
yum -y install nfs-utils*
二、查看远程挂载的目录
[root@app-1 opt]# showmount -e 192.168.11.39
Export list for 192.168.11.39:
/data 192.168.11.0/24
[root@app-1 opt]#
三、客户端挂载并检查挂载情况:
[root@app-1 opt]# mount -t nfs 192.168.11.39:/data /mnt/
[root@app-1 opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 4.9G 1.1G 3.6G 23% /
tmpfs 392M 0 392M 0% /dev/shm
/dev/sda1 485M 32M 428M 7% /boot
/dev/sda3 2.0G 35M 1.8G 2% /home
192.168.11.39:/data 4.0G 365M 3.4G 10% /mnt
[root@app-1 mnt]# umount -lf /mnt/ 强制卸载挂载
[root@NFS /]# cat /var/lib/nfs/etab
/data 192.168.11.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534,sec=sys,rw,root_squash,all_squash)
本文出自 “山猫” 博客,谢绝转载!