## 文件校验-md5
使用md5sum 对文件创建md5值,对方收到文件后进行校验并对比.
创建md5并自动对比
echo hbinz > hb.txt
md5sum hb > hb.md5
md5sum -c hb.md5
echo > hb.txt
md5sum -c hb.md5
昨日备份项目脚本修改
客户端:
#1.1 创建指纹
find /backup -type f -name "*.tar.gz" |xargs md5sum >/backup/$ip/$ip.md5
服务端:
#发送邮件
md5sum -c /backup/*/*.md5 |mailx -s '每日备份结果' 1542293291@qq.com
1.综合架构-第2个服务-存储服务
存储:一般用来存放用户上传的数据.eg:视频,图片,上传附件...头像..
1.1 为何要用存储
- 如果不使用存储服务
- 如果使用存储服务
如果没有共享存储 | 如果没有共享存储服务器 | |
用户上传的文件只会存放在某一台网站服务器上(web) | ||
导致用户再次访问的时候可能失败 | ||
如果有共享存储 | 如果使用共享存储 | |
有web服务器只需要把存储挂载到本地 | ||
用户上传/下载/查看把数据写入到存储服务器中. |
1.2 存储服务常用软件:
共享存储 | ||
---|---|---|
硬件 | Dell EMC/华为/联想 | |
开源 | NFS(网站文件系统)、Ceph(分布式存储)、GlusterFS(GFS)、FastDFS… | |
云服务器 | NAS(类似于NFS)、OSS(类似于Ceph) |
NFS原理
1)核心原理
NFS服务端:
RPC服务
NFS服务
NFS客户端:
Mount命令挂载使用nfs服务端
2)扩展原理
快速上手指南
0)搭建概述
1)NFS服务端准备
a)部署rpc,nfs
1.部署nfs
yum install -y nfs-utils rpcbind
b) 启动rpc,nfs
systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs
rpcinfo -p
c)配置
vim /etc/exports
#共享/nfsdata/目录
/nfsdata 172.16.1.0/24(rw)
#172.16.1.0/24网段对 nfs服务端的/nfsdata目录 拥有读写权限
systemctl reload nfs
---------------------------------
Showmount-e是一个命令行工具,它可以用于查询NFS服务器上挂载的文件系统。它可以列出NFS服务器上所有已经导出的文件系统,以及它们的客户端信息。
----------------------------------
[root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/nfsdata 172.16.1.0/24
d)创建共享目录,修改所有者
4. 创建共享目录,修改所有者
mkdir -p /nfsdata
chown nfsnobody.nfsnobody /nfsdata
***推荐使用优雅的重启,reload,不是所有服务都支持的.nfs,nginx.
服务要已经运行才能用reload.
e)本地挂载测试
mount -t nfs 172.16.1.31:/nfsdata /mnt/
df -h
[root@nfs01 /]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 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/mapper/centos_hb--sre--muban-root 17G 2.1G 15G 12% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
172.16.1.31:/nfsdata 17G 2.1G 15G 12% /mnt
2)NFS客户端
yum -y install nfs-utils
mkdir -p /upload
mount -t nfs 172.16.1.31:/nfsdata /upload/
df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos_hb--sre--muban-root 17G 2.0G 15G 12% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 394M 0 394M 0% /run/user/0
172.16.1.31:/nfsdata 17G 2.1G 15G 12% /upload
a)测试
web01:
cd /upload
touch hb{01..10}.txt
nfs01:
cd /nfsdata
[root@nfs01 /nfsdata]# ll
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb01.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb02.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb03.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb04.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb05.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb06.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb07.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb08.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb09.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 10月 17 12:56 hb10.txt
成功挂载,客户端生成,删除都会影响nfs服务端的目录
3)nfs服务端与客户端实战小结
搭建使用:
nfs服务端,配置文件,重启
nfs客户端,需要安装nfs软件,不需要启动,mount -t 指定文件系统类型
辅助命令:属于nfs-utils软件包
rpcinfo -p 查询rpc服务状态
showmount -e ip 查看指定nfs服务器共享了哪些目录和具体情况
nfs服务端详解
1)配置文件格式
2)NFS服务端其他配置-用户压缩系列
NFS服务端的用户压缩,映射:客户端通过各种用户访问NFS服务端,到了NFS服务端用户被转换为nfsnobody
NFS服务端配置文件 | ||
---|---|---|
rw | 可以读写 | |
ro | 只读read-only | |
anonuid | anonuid指定匿名用户的uid | |
anongid | anongid指定匿名用户的gid | |
root_squash | 默认的NFS服务端选项:只对root进行压缩,压缩为匿名用户 | |
no_root_squash | 默认的NFS服务端选项:其他用户不压缩,保持原有用户. | |
all_squash | 所有用户到了NFS服务端都被压缩为指定虚拟用户. | |
sync | 同步:用户上传到nfs的数据,实时写入磁盘中 | |
async | 异步:用户上传到nfs的数据,过一段时间写入磁盘中 | |
同步与异步:未来在网站优化中会提到. 未来优化的方向:尽量让用户的请求往前推(让用户没访问到网站就得到了想要的内容,利用各种缓存.) |
a)测试anonuid,anongid
1.创建虚拟用户www ,uid/gid一致。都创建
useradd -u 1111 -s /sbin/nologin -M www
vi /etc/exports
/data/ 172.16.1.0/24(rw,anonuid=1111,anongid=1111)
2.重新加载nfs
systemctl reload nfs
3.创建/data目录
mkdir -p /data
chown www.www /data
4.web01操作
mount 172.16.1.31:/data /mnt
df -h
[root@web01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 12M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/mapper/centos_hb--sre--muban-root 17G 2.0G 15G 12% /
/dev/sda1 1014M 138M 877M 14% /boot
tmpfs 394M 0 394M 0% /run/user/0
172.16.1.31:/nfsdata 17G 2.1G 15G 12% /upload
172.16.1.31:/data 17G 2.1G 15G 12% /mnt
5.测试
touch /mnt/hb.txt
nfs01:
ll /data
[root@nfs01 /data]# ll
总用量 0
-rw-r--r-- 1 www www 0 10月 18 02:12 hb.txt
b)测试 all_squash并压缩到指定用户
1.配置
cat /etc/exports
#共享/nfsdata目录
/nfsdata 172.16.1.0/24(rw) ##172.16.1.0/24网段对 nfs服务端的/nfsdata目录 拥有读写权限
/data 172.16.1.0/24(rw,all_squash,anonuid=1111,anongid=1111)
2.重加载nfs
systemctl reload nfs
3.检查配置
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=1111,anongid=1111,sec=sys,rw,secure,root_squash,all_squash)
/nfsdata 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
4.删除文件测试
[root@web01 /]# rm -rf /mnt/hb.txt
ok
c)用户压缩图解
3)服务端配置文件
NFS服务端配置文件 | ||
---|---|---|
rw | 可以读写 | |
ro | 只读read-only | |
anonuid | anonuid指定匿名用户的uid | |
anongid | anongid指定匿名用户的gid | |
root_squash | 默认的NFS服务端选项:只对root进行压缩,压缩为匿名用户 | |
no_root_squash | 默认的NFS服务端选项:其他用户不压缩,保持原有用户. | |
all_squash | 所有用户到了NFS服务端都被压缩为指定虚拟用户. | |
sync | 同步:用户上传到nfs的数据,实时写入磁盘中 | |
async | 异步:用户上传到nfs的数据,过一段时间写入磁盘中 | |
同步与异步:未来在网站优化中会提到. 未来优化的方向:尽量让用户的请求往前推(让用户没访问到网站就得到了想要的内容,利用各种缓存.) |
4)客户端配置文件
配置文件:/etc/exports 及格式
日志(类似nfs服务端共享的目录及共享选项:/var/lib/nfs/etab (exports table))
NFS服务端核心配置: rw,ro,all_squash,anonuid,anongid
1.6 NFS客户端选项(mount)
mount命令选项 | ||
---|---|---|
-t | 指定文件系统类型.-t nfs xfs ext4 iso9660(光盘) loop(dd创建文件) | |
-o | 指定挂载选项: | |
nodev,noexec,nosuid 安全挂载的选项,防止人员上传病毒/目录并执行 | ||
rw,remount |
1)安全选项
限制之前
cp /bin/whoami /upload/du
cd /upload
./du
限制之后
umount /upload
重新挂载
mount -t nfs -o noexec,nodev,nosuid 172.16.1.31:/nfsdata /upload/
./du
-bash: ./du: Permission denied
2)故障案例-文件系统只读
- 故障背景/现象: 日常操作Linux系统突然发现,创建文件的时候,命令行提示: Read-only File system (只读文件系统)
- 排查过程:
- 发现非人为设置ro.
- 极可能是linux系统问题/etc/fstab修改文件(配置文件),磁盘故障(硬件).
mount -o rw,remount / 重新挂载对应的磁盘分区,挂载为rw权限.
- 需要进入单用户或救援模式,修改或恢复/etc/fstab.
- 备份数据.
- 结果:
- 解决故障.
NFS永久挂载
客户端:
# 方法01
挂载命令写入到/etc/rc.local并给x权限给rc.local
# 方法02
1.修改/etc/fstab配置
172.16.1.31:/nfsdata /upload nfs defaults 0 0
需要remote-fs 服务运行
2.systemctl status remote-fs.target