原理
1,什么是NFS?
全称 network file system 网络文件系统
通过网络存储和组织文件的一种方法或机制。
什么是文件系统? 管理磁盘的工具
2,为什么要用它?
前端所有的应用服务器接收到用户上传的文件。图片.视频都会统一放到后端的存储上。
为什么要共享?所有节点服务器都需要将内容存到存储上,取的统一来取
3,共享存储的种类
单一存储系统就是NFS,中小型企业,相当于阿里云服务的DAS服务。
NFS性能不太高。
大型企业会用FastDFS, Ceph, ClsterFS, MFS(分布式存储)
大型存储厂商: EMC,Netapp,几十万。
硬件存储好处:稳定,2台,双主机头 几十块硬盘 RAID10.适用于传统企业不适合大型企业
BAT 曾经用硬件,超贵,
阿里云 去IOE IBM orace EMC
4,NFS 的工作原理
NFS网络文件系统
启动NFS服务,而且还要启动很多端口
NFS功能,需要很多服务。每个服务都有端口,而且经常变化。
如何让客户端找到这些端口呢?(rpc服务)
NFS服务:
1,NFS服务(有很多进程和端口)
2,RPC服务(对外固定端口111)
客户端请求NFS服务,先找RPC 111,查到NFS端口 发给客户
5、安装
服务器端和客户端都要安装:
yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpcbind
启动RPC
[root@nfs01 ~]# systemctl start rpcbind.service
[root@nfs01 ~]# systemctl enable rpcbind.service
启动NFS
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl enable nfs
NFS配置文件 /etc/exports
#shared
/data 172.16.1.0/24(rw,sync)
[root@nfs01 ~]# mkdir -p /data
NFS默认用户nfsnobody
[root@nfs01 ~]# grep nfsno /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data
[root@nfs01 ~]# ls -ld /data
drwxr-xr-x 2 nfsnobody nfsnobody 51 4月 16 10:24 /data
重启NFS
[root@nfs01 ~]# systemctl reload nfs #《==生产场景必须要实现平滑重启。
[root@nfs01 ~]# exportfs -r
上述二者等价,选一个即可。
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24 #《==看到共享的目录了
服务单本地挂载:
[root@nfs01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@nfs01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
172.16.1.31:/data 19G 1.8G 18G 10% /mnt
换到web01挂载
1)安装
yum install nfs-utils rpcbind -y
rpm -qa nfs-utils rpcbind
2)启动
[root@web01 ~]# systemctl start rpcbind
[root@web01 ~]# systemctl enable rpcbind
3)查看NFS服务器提供的共享目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
4)挂载测试
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
为什么fstab无法实现nfs挂载?
NFS网络文件系统,通过网络挂载,网络没起如何挂载?
又想在fstab里实现挂载、就用一个服务,延迟启动。
systemctl start remote-fs.target
systemctl enable remote-fs.target
企业生产场景NFS共享储存优化
1).硬件:SAS/SSD磁盘,买多块,硬件Raid,制作Raid5或Raid10.网卡吞吐量要大,至少千兆(多块bond)
2).NFS服务器配置:/data 172.16.1.0/24(rw,sync,all_squash,anonuid=65535,anongid=65534)
3).mount -t nfs -o nosuid,boexec,nodev,noatime,nodiratime,raize=131072,wsize=131072 172.16.1.31:/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
解决NFS性能问题:
1).使用CDN加速以及自己搭建文件缓存服务(squid,nginx,varnish).
2).把多个目录分配到不同的NFS服务器上
3).弃用NFS
4).使用分布式文件系统