目录
一、文件系统
1.1 inode与block概述
在文件存储硬盘上,硬盘的最小存储单位叫做扇区,每个为512字节。
block:操作系统读取硬盘的时候,不会一个一个扇区的读取,效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个扇区组成一个块。
inode:文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的大小、文件的创建日期等等。这种存储文件元信息的区域就叫做inode(索引节点)
文件数据由元信息与实际数据组成
1.2 inode号与block的关系
元信息--->inode
实际数据---->文件实际的大小----->block
元信息:文件的创建者,创建日期,文件的大小,文件权限等等,但是没有文件名
block:硬盘存储的最小单位是扇区,扇区512字节,8个扇区组成一个block,这是文件的最小存取单位
touch 123 创建123这个文件,最少会占一个block
操作系统读取硬盘的时候,一次性连续读取多个扇区,一个块一个块的去读
创建文件必须要有一个inode,文件是有大小的,至少也要占一个block
创建文件:1、系统分配一个空闲的inode号,inode号必须要有,而且不能重复,必须唯一
至少分配一个block来存储实际数据。元数据信息再inode号里(文件的权限,文件的字节数,文件的创建时间,不包括文件名)
inode号也会占用磁盘空间,实际数据也会占用磁盘的空间
1.3 linux文件系统的三个时间戳
stat 文件名 #查看文件详细信息,包括inode号,block块等
最近访问:atime (access time):最后一次访问文件或目录的时间,使用这个文件的时候就会更新这个时间。
最近更改:mtime (modify time):最后一次修改文件或目录(内容)的时间,改动内容,修改文件的数据,就会更新这个时间。
最近改动:ctime(change time):zui修改文件的权限或属性,就会更新这个时间。改变文件大小,会改变文件的字节数,元信息发生变化,也会修改。
*删除30天以前之前创建的,或者改动的所有文件,找到大于1G文件,全部删除,一条命令
find / -mtime +30 -type f -size +1G -exec rm -rf {} \;
1.4 inode特点
1.识别系统内的不同文件,/dev/sdb1 通过inode号来识别设备
2.创建文件时,文件名只是方便用户识别的标识,系统通过inode号和文件一一对应进行识别。
访问文件时,实际上是通过inode,来找到需要找的文件。
3.所有的权限控制都是基于inode号来的。对于文件的处理,都是从inode号来的,与文件名无关。
inode号与文件名分离,linux系统几种特有现象:
1.文件名如果包含特殊字符,可能无法通过文件名直接删除,只能通过inode号来删除。
2.移动文件,包括重命名文件,不改大小,只改文件名,不影响inode号。
3.打开文件之后,系统就以inode号来识别文件,跟文件名无关。
4.使用vim编辑器修改文件数据保存之后,会生成一个新的inode号
1.5 访问文件流程
用户通过文件名打开文件时,系统内部过程:
1.创建文件名--->inode号---->inode包含这个文件元信息----->找到block----->读取数据
文件系统中,核心就是inode,除了文件名,主要的属性都记录再元信息i中,也就是inode当中,访问控制等待权限,都是由元信息控制,而块,只是存储实际数据。
1.6 模拟xfs磁盘inode号满了之后的情况:
1.新建分区
2.初始化
3.挂载并查看挂载点
4.写了30717个文件后,发现还可以继续写入,但是最多只能再写129个文件
extundelete 开源工具,支持ext3,ext4,ext4只能再centos6上恢复。
ext3模拟恢复被误删除的文件
虽然功能强大,但是并不能保证数据一定能够恢复
重要文件一定要备份,不能全指望恢复。
1.7 xfs文件按系统的备份和恢复
centos7都是使用xfs,
xfsdump---备份
例子:xfsdump -f /opt/backup /dev/sdb2 [-L backup -M sdb2]
xfsrestore---恢复
例子:xfsrestore -f /opt/backup /data
xfsdump备份的时候有两个级别:0表示完全备份,默认的备份级别就是0
1-9表示增量备份。
xfs命令格式:
xfsdump -f 备份存放路径,要备份的路径和设备文件
xfsdump -f /opt/backup /dev/sdb2 [-L backup -M sdb2]
f:指定备份文件的目录
L:指定标签 session label
M:指定设备标签 media label
-s:备份单个文件,一般不用,-s后面不能直接跟路径
xfsdump使用的要求:
1.只能备份已挂载的文件系统(xfs)
2.只有root用户才能操作。
3.只能是xfs的文件系统
4.它不是直接恢复文件,必须要通过xfsrestore解析之后,文件才能恢复
5.不能备份零个uuid相同的文件系统 //blkid(查看uuid号)
实验一:做一个增量备份
新建分区
详细情况
创建目录
格式化并挂载
查看xfsdump依赖是否安装,未安装进行安装,已安装也可进行升级
新建两个文件并写入内容
进入到目录下后发现文件已恢复
创建文件789,并备份
删除所有文件,恢复增量备份backup1,只会显示增量备份的文件。
恢复全量备份后发现只回复之前状态下的
全量备份和增量备份两部操作需要一起做,不能做恢复全量备份后再接着做增量备份否则增量备份会生成所有文件。
二、日志分析
今后的工作当中,最主要打交道的文件有两种,一个就是配置文件,另一个就是日志文件,要会分析,要会看日志当中的内容,要看哪些是正常信息,哪些是报错信息。就是根据报错的信息,能够定位出服务、系统的故障原因,或者定位出是谁的故障。
2.1 日志的定义与种类
日志:只要系统或者程序运行必然会产生相关的运行信息,这些信息统一会记录再日志当中。
第一种:系统自定义,系统创建完之后会专门生成一个用于记录系统运行的日志文件。
第二种:主要是针对第三方服务,不是系统自带的,由程序员自定义的软件或者第三方开发的一些软件,运 行在系统上。一些日志是第三方服务自带的,不需要人工配置,服务本身没有记录日志的功能,需 要人工配置日志文件。
系统日志:位置在/var/log/messages,这个日志文件包含了所有系统以及服务,包括第三方(必须要配置在 systemd的文件里面,有他的运行配置文件),yum安装,或者rpm安装,自动添加到systemd 当中,不需要去手工配置。
messages,里面包含的第三方服务,只有运行日志,没有具体的第三方服务的业务日志。第三方服务有自己的业务日志,但是不保存自己的运行日志。
日志的基本格式:access_log || messages
日志所带的内容:包括发生时间,必带的记录,进行了哪些操作,执行了什么任务,返回了什么结果,还有具体的业务信息,这些也是必带的信息。
2.2 日志文件分析
用户日志分析
users:显示当前登录系统的所有用户的列表
w:显示详细的列表
last:到目前为止,所有登陆过系统的用户列表
lastb:查询登录失败的用户记录
内核及系统日志配置文件及日志消息等级
*.info;mail.none;authpriv.none;cron.none /var/log/messages
//只记载包含info日志级别的记录到/var/log/messages中
(1) *:表示所有
(2) info:日志级别,表示所有info级别以上,包含info级别的日志,都记录到/var/log/messages中去
(3) none:日志级别,不记录,没有级别
(1)Jun 28 09:33:01:时间戳
(2)www:主机名
(3)systemd:服务名
(4)Reloading The Apache HTTP Server.:服务干了什么
local:表示自定义服务的日志,范围0-7
对应的服务也必须配置对应local等级
系统日志:系统自带的,比如messages,httpd作为第三方服务,为什么能在系统日志当中。核心在他配置在系统服务的目录当中。可以由系统进行操作,开,关,重启。控制运行的记录可以记录在系统日志当中。它的访问日志、报错日志,都在自己的业务日志当中。
2.3 日志管理
分析工具:
(1)tail -f 动态查看 tail -f /var/log/messages
(2)awk切片查看
(3)sed范围查看
备份的必要性:
改配置文件之前,一定要备份
cp /etc/rsyslog.conf.bak.20230628 /opt/
cp /etc/syslog.conf /opt/rsyslog.conf.bak.20230628
改配置文件之前,一定要备份
改完之后,一定要重启服务,否则,配置的内容不会生效
systemctl restart httpd //重启httpd服务
1.工作中,对于日志,业务型日志,一般来说保留2-3天
2.日志的保存类型不同,期限不同,用户信息,永久保存,不能删除,而且要定期备份
其他类型:交易记录,一般半年。但是,会有备份,想查也能查询到,但是不在第一页面展示了。
3.权限控制:一般核心业务的日志,只有少数权限人员可以查看,老板(炮灰),项目经理(有可能是炮灰),运 维人员,包括开发。 生产环境:运维人员一般是由root密码的
users:显示当前登录系统的所有用户的列表
w:显示详细的列表
last:到目前为止,所有登陆过系统的用户列表
lastb:查询登录失败的用户记录
实验一:将ssh服务日志单独存放
1.关闭防火墙和安全机制
2.进入/etc/rsyslog.conf配置文件添加内容
3.进入/etc/ssh/sshd_config配置文件添加与修改内容
4.修改了配置文件后,一定要重启服务
5.去另一台虚拟机内,进行验证
实验二:配置日志服务器来收集日志
1.配置接收方
2.进入/etc/rsyslog.conf配置文件中,取消19、20两行内容的注释
3.重启服务并查看端口号是否配置成功
4.配置发送方:
关闭防火墙和安全机制
5.进入/etc/rsyslog.conf配置文件
6.取消19、20行的注释
7.将54行注释掉,并在第55行配置强制使用TCP向192.168.11.12发送。//@@表示强制使用TCP
8.重启服务
9.查看端口是否配置成功
10.发送方发送信息
11.接收方动态查看最新10行内容,表示成功。