一、基础概念
- NFS是一种网络文件系统,实现数据一致性,文件共享
- NFS将硬盘进行共享,共享的目录;两台服务器的前提下不同用户如何实现上传访问到静态图片/视频都能看到相同的数据则使用NFS
- 其实现在很多企业都会有一个CDN分布式文件缓存,这个缓存可以实现将静态图片/视频上传到CDN分布式文件缓存(要钱),好处是:客户端反应贼快(看)但是如果NFS挂了就只能看,不能上传
- 本地挂载:mount /dev/sdb/ /mnt
- NFS挂载:mount -t nfs 10.0.0.31:/data /mnt # data是挂载点目录 /mnt是挂载点
- 我们的底层逻辑是:IP+端口 #这样的方式实现通信的
二、NFS配置详解:
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
三、NFS服务部署:
1.安装服务
[root@nfs ~]# yum -y install nfs-utils
2.配置服务
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
3.启动服务
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
检查端口 111
[root@nfs ~]# netstat -tnulp
4.检查配置文件是否正确
/var/lib/nfs/etab 如果有内容说明配置正确,如果为空说明配置错误
[root@nfs ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
5.根据配置文件创建必要数据
[root@nfs ~]# mkdir /data
[root@nfs ~]# ll /data
total 0
修改目录属主属组
[root@nfs ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs ~]# ll -d /data/
drwxr-xr-x. 2 root root 6 Nov 6 12:06 /data/
[root@nfs ~]# chown nfsnobody.nfsnobody /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 6 Nov 6 12:06 /data
客户端使用:
1.安装nfs-utils(只安装不运行)
[root@web01 ~]# yum -y install nfs-utils
2.查看服务端共享的目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
3.挂载远程文件系统nfs
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 14M 473M 3% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda3 18G 2.3G 16G 13% /
/dev/sda1 197M 110M 88M 56% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data 18G 2.3G 16G 13% /mnt
进入/mnt测试写入
[root@web01 ~]# cd /mnt/
total 0
[root@web01 mnt]# touch 1.txt
[root@web01 mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 5 10:48 1.txt
NFS参数: 指定匿名压缩用户为uid和gid为666
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 -M -s /sbin/nologin www
修改nfs配置
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
修改目录属主属组
[root@nfs ~]# chown www.www /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 www www 6 Dec 5 10:54 /data
查看内存的映射
[root@web01 ~]# cat /proc/mounts
如果挂载夯住使用-f
[root@web01 ~]# umount -f /mnt
四、小结:
1、NFS存储优点:
- NFS文件简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求
- NFS文件系统内存放数据都在文件系统之上,所有数据都是能看到的
2、NFS存储局限
- 存在单点故障,如果构建高可用维护麻烦 web->nfs0->backup
- NFS数据明文,并不多数据做任何校验
- 客户端挂载NFS服务器没有密码验证,安全性一般(内网使用)
3、NFS应用建议
- 生产场景将静态数据尽可能往前端推,减少后端存储压力
- 必须将存储里的静态资源通过CDN缓存 jpg\png\mp4\avi\cdd\js
- 如果没有缓存或架构本身历史遗留问题太大,在多存储也无用