课前回顾 及 NFS
NFS部署过程
1)安装服务端
yum install -y nfs-utils rpcbind
2)修改配置文件
vim /etc/exports
#共享目录 IP网段 参数
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)nfs自带用户:nfsnobody 65534,自己创建用户
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
4)创建共享目录
mkdir /data
chown -R www.www /data
5)启动服务
systemctl start rpcbind nfs-server
客户端部署
1)安装rpcbind和nfs
yum install -y rpcbind nfs-utils
2)启动rpcbind
systemctl start rpcbind
3)查看可挂载点
showmount -e 172.16.1.31
4)挂载
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
5)开机挂载
vim /etc/fstab
172.16.1.31:/data /var/www/html/tupian nfs defaults 0 0
6)使用mount -a 检测
[root@backup ~]# mount -a
7)卸载
umount /var/www/html/tupian
#强制卸载
umount -lf /var/www/html/tupian
8)nfs挂载文件
[root@nfs01 ~]# cat /var/lib/nfs/etab
9)增加挂载的安全性
#通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能
[root@nfs-client ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
nfs配置参数
rw:共享目录的权限是 可读 可写
sync:同时将数据写入内存和磁盘,增强数据的安全性,保证数据不丢失
all_squash:无论使用什么用上传或者访问,一律压缩成 nfs的匿名用户
anonuid:指定一个匿名用户,必须是系统存在的uid
anongid:指定一个匿名用户组,必须是系统存在的gid
----------------------------------------------不常用--------------------------------------------
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用) |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用) |
no_all_squash | 无论NFS客户端使用什么账户访问,都不进行压缩 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
ro | 只读权限 |
| |
NFS存储小结
- NFS存储优点
- 1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。
NFS存储局限
1)存在单点故障, 如果构建高可用维护麻烦web->nfs()->backup
2)NFS数据明文, 并不对数据做任何校验。
3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)
3.NFS应用建议1)生产场景应将静态数据尽可能往前端推, 减少后端存储压力
2)必须将存储里的静态资源通过CDN缓存jpg\png\mp4\avi\css\js
3)如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用
rsync+nfs实战,解决nfs的单点故障
服务器系统 | 角色 | IP |
CentOS 7.5 | NfsServer(A) | 172.16.1.31 |
CentOS 7.5 | NfsClient(B) | 172.16.1.41 |
CentOS 7.5 | NfsClient(C) | 172.16.1.7 |
1)安装服务端
yum install -y rpcbind nfs-utils
2)编辑服务端的配置文件
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)创建用户
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
4)创建目录并授权
mkdir /data
chown -R www.www /data
5)启动服务
systemctl start rpcbind nfs-server
6)检查
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=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
配置客户端
1)安装客户端服务
yum install -y rpcbind nfs-utils
2)启动rpc
systemctl start rpcbind
3)查看挂载点
showmount -e 172.16.1.31
4)挂载
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
结合rsync
1)NFS安装rsync
yum install -y rsync
2)客户端与服务端的关系
3)使用免密的方式
export RSYNC_PASSWORD=123456
rsync服务端操作(backup)
1)创建www用户
groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M
2)统一rsync服务的用户和用户组(修改配置文件)
vim /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[zls]
comment = welcome to oldboyedu backup!
path = /backup
[nfs]
comment = welcome to oldboyedu nfs!
path = /data
3)创建目录并授权
[root@backup ~]# mkdir /data
[root@backup ~]# chown -R www.www /data/
4)编写备份脚本
vim rsync.sh
#!/bin/bash
PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin'
H=`hostname`
I=`ifconfig eth1|awk 'NR==2{print $2}'`
D=`date +%F`
S=${H}_${I}_${D}
BD=/backup
export RSYNC_PASSWORD=123456
mkdir -p ${BD}/${S}
tar zcf ${BD}/${S}/conf.tar.gz /etc/passwd &>/dev/null
md5sum ${BD}/${S}/conf.tar.gz > /backup/${I}.txt
rsync -az ${BD}/ rsync_backup@172.16.1.41::zls
rsync -az --delete /data/ rsync_backup@172.16.1.41::nfs
find ${BD} -type d -mtime +7|xargs rm -fr
5)安装nfs服务端
[root@backup ~]# yum install -y rpcbind nfs-utils
6)编辑配置文件
[root@backup ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
7)启动服务
[root@backup ~]# systemctl start rpcbind nfs-server
[root@backup ~]# systemctl enable rpcbind nfs-server
web01客户端写脚本
#!/bin/bash
check_nfs=`df -h|grep '/var/www/html/tupian'|wc -l`
if [ $check_nfs -eq 0 ];then
showmount -e 172.16.1.31 &>/dev/null
if [ $? -eq 0 ];then
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
else
mount -t nfs 172.16.1.41:/data /var/www/html/tupian
fi
fi
5.录视频