NFS共享存储
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
NFS共享存储NFS共享存储
NFS概述
NFS⼀般⽤于⽂件服务器
# 企业中⽂件服务器(共享存储)
NFS
GFS(GlusterFS)
FastDFS
HDFS
Ceph
NAS
为什么要使⽤共享存储
1.实现多台服务器之间数据共享
2.实现多台服务器之间数据⼀致
NFS的原理
上传图⽚后,在本地保存不保存?
不保存,但是本地的指定⽬录中可以看到,它已经是远端的data⽬录了
NFS实战
环境准备
主机名⾓⾊外⽹IP内⽹IP
nfs NFS的服务端10.0.0.31172.16.1.31
web01NFS的客户端10.0.0.7172.16.1.7
web02NFS的客户端10.0.0.8172.16.1.8
NFS服务部署(服务端操作)
# 1.安装nfs
[root@nfs ~]# yum install -y nfs-utils
# 2.修改配置⽂件
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
# 3.创建共享⽬录
[root@nfs ~]# mkdir /data
# 4.修改⽬录权限
[root@nfs ~]# chown nfsnobody.nfsnobody /data
# 5.启动服务
[root@nfs ~]# systemctl start nfs-server
# 6.将nfs服务加⼊开机⾃启
[root@nfs ~]# systemctl enable nfs-server
# 7.检查进程
Wed Jul 07 20:19:14 root@nfs ~]
# ps -ef|grep [n]fs
root 19415 2 0 10:31 ? 00:00:00 [nfsd4_callbacks]
root 19421 2 0 10:31 ? 00:00:00 [nfsd]
root 19422 2 0 10:31 ? 00:00:00 [nfsd]
root 19423 2 0 10:31 ? 00:00:00 [nfsd]
root 19424 2 0 10:31 ? 00:00:00 [nfsd]
root 19425 2 0 10:31 ? 00:00:00 [nfsd]
root 19426 2 0 10:31 ? 00:00:00 [nfsd]
root 19427 2 0 10:31 ? 00:00:00 [nfsd]
root 19428 2 0 10:31 ? 00:00:00 [nfsd]
# 8.检查rpcbind端⼝号
[Wed Jul 07 20:19:18 root@nfs ~]
# netstat -lntup|grep 111
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 5817/rpcbind tcp6 0 0 :::111 :::* LISTEN 5817/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 5817/rpcbind udp6 0 0 :::111 :::* 5817/rpcbind
客户端操作
# 1.先安装nfs-utils
[root@web01 ~]# yum install -y 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.创建⼀个⽤户上传数据的⽬录
[root@web01 ~]# mkdir /user_pic
# 4.挂载远端的⽬录
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /user_pic
企业实战
NFS客户端部署web站点
## 安装⽹站服务
[root@web01 ~]# yum install -y httpd php
[root@web02 ~]# yum install -y httpd php
## 查找http服务的站点⽬录
[root@web01 ~]# rpm -ql httpd
/var/www/html
## 部署代码
上传代码
rz
## 解压代码
[root@web01 html]# unzip kaoshi.zip
## 修改了php代码,改了⾥⾯上传⽬录
[root@web02 html]# vim upload_file.php
$wen="/var/www/html/pic";
## 修改⽬录的权限
[root@web02 html]# chown apache.apache /var/www/html/
## 启动服务
[root@web01 html]# systemctl start httpd
## 将⽤户上传⽂件的路径做成共享存储
[root@web02 html]# mount -t nfs 172.16.1.31:/data /var/www/html/pic/
## 查看挂载
[root@web02 html]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.4G 18G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.8M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/data 19G 1.5G 18G 8% /var/www/html/pic
如何将nfs的客户端做成开机⾃动挂载
## 编辑开机挂载的配置⽂件(不建议)
[root@web01 ~]# vim /etc/fstab
172.16.1.31:/data /var/www/html/pic nfs defaults
0 0
注意:如果NFS服务端出现问题,客户端⼀直挂载不上,可能会导致系统起不来nfs卸载
[root@web01 ~]# umount /var/www/html/pic
增加挂载的安全性
在企业⼯作场景,通常情况NFS服务器共享的只是普通静态数据(图⽚、附件、视频),不需要执⾏ suid、exec 等
权限,挂载的这个⽂件系统只能作为数据存取之⽤,⽆法执⾏程序,对于客户端来讲增加了安全性。
例如: 很多⽊马
篡改站点⽂件都是由上传⼊⼝上传的程序到存储⽬录。
然后执⾏的。
#通过mount -o指定挂载参数,禁⽌使⽤suid,exec,增加安全性能
[root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
验证nfs的ro权限
[root@nfs ~]# vim /etc/exports
/pic 10.0.0.0/24(ro,sync,all_squash)
# 挂载
[root@web02 ~]# mount -t nfs 10.0.0.31:/pic /mnt
# 查看
[root@web02 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 1.4G 18G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 497M 120M 378M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0
10.0.0.31:/pic 19G 1.5G 18G 8% /mnt
# 创建⽂件报错
[root@web02 mnt]# touch /mnt/file
touch: cannot touch ‘file’: Read-only file system
# 查看etab配置⽂件是否⽣效
[root@nfs ~]# cat /var/lib/nfs/etab
企业中⼀定要统⼀⽤户权限
## 统⼀⽤户,⼀定要保证uid和gid⼀样
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@backup ~]# groupadd www -g 666
[root@backup ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@web02 mnt]# groupadd www -g 666
[root@web02 mnt]# useradd www -u 666 -g 666 -s /sbin/nologin -M
# 1.统⼀apache服务⽤户
[root@web02 ~]# vim /etc/httpd/conf/httpd.conf
## 修改前
66 User apache
67 Group apache
## 修改后
66 User www
67 Group www
# 2.统⼀nfs服务⽤户
[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
# 3.rsync服务的⽤户
[root@backup ~]# vim /etc/rsyncd.conf
# 服务启动的⽤户
uid = www
# 服务启动的⽤户组
gid = www
NFS⼩结
1.NFS存储优点 1)NFS⽂件系统简单易⽤、⽅便部署、数据可靠、服务稳定、满⾜中⼩企业需求。
2)NFS⽂件系统内存放的数据都在⽂件系统之上,所有数据都是能看得见。
2.NFS存储局限 1)存在单点故障, 如果构建⾼可⽤维护⿇烦web->nfs()->backup2)NFS数据明⽂, 并不对数据做任何校验。
3)客户端挂载NFS服务没有密码验证, 安全性⼀般(内⽹使⽤)
3.NFS应⽤建议 1)⽣产场景应将静态数据尽可能往前端推, 减少后端存储压⼒2)必须将存储⾥的静态资源通过CDN
缓存jpg\png\mp4\avi\css\js3)如果没有缓存或架构本⾝历史遗留问题太⼤, 在多存储也⽆⽤。