一、inode与block
1.1 block
- 文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”,每个扇区512个字节
- 操作系统读取硬盘的时候,一个扇区一个扇区的读取效率太低,所有会一次性读取多个扇区,即一次读取一个block(块)。最常见的是8个扇区组成一个block(块),大小也就是4KB,是文件存储的最小单位。
1.2 inode(元信息)
- 文件存储在block(块)中,那么还需要有一个存储元信息的文件,元信息里包含文件的创建者、创建日期、文件大小、文件权限等,但是没有文件名。这种存储元信息的区域就叫做inode(索引节点)
- 创建文件,系统会分配1个空闲的inode号,inode号必须要有,且是唯一的;还至少分配1个block,用于存储实际数据。元数据信息都在inode号里。
- inode号与block都会占用磁盘的空间
(1)查看文件inode号以及详细信息
命令格式:stat 文件名
- atime(access time):最后一次访问文件的时间
- mtime(modify time):最后一次修改文件或目录(内容)的时间
- ctime(chage time):最后一次修改文件权限或者属性的时间
(2)inode号
- 识别系统内的不同文件
- 创建文件时,文件名是方便用户识别的标识,系统是通过inode号来和文件一一对应,访问文件时,实际上是通过inode号来找文件的。
- 所有的权限控制都是基于inode号完成的
通过文件名打开文件时,系统的内部过程:
- 用户输入文件名
- 系统通过文件名找到对应的inode号
- 通过inode信息,找到文件数据所在的block
- 读取数据
1.3 inode特点
inode号与文件名是分离的,所有会有以下几种特有的现象:
(1)文件名如果包含特殊字符,可能无法通过文件名直接删除,只能通过inode号删除
使用inode号删除文件的命令格式:
[root@localhost ~]# find 路径 -inum inode号 -exec rm -rf {} \;
(2)移动文件,包括重命名,只修改文件名,文件的inode号不变
(3)打开文件后,系统以inode号来识别文件,跟文件名无关
(4)使用vim编辑器修改文件数据保存的文件,会生成一个新的inode号
二、恢复误删除文件
(1)使用xfs文件系统的备份和恢复
命令:
- xfsdump 备份
- xfsrestore 恢复
xfs备份命令格式:
[root@localhost ~]# xfsdump -f /opt/backup /dev/sdb1 [-L backup -M sdb1]
- -f:指定备份文件的命令
- /opt/backup:要备份文件的命令
- backup:需要通过解析恢复的文件
- /dev/sdb1:备份的设备
- -L:指定备份的标签
- -M:指定备份设备的标签
此命令就是sdb1上的数据备份到/opt/backup文件中,备份完后需要通过xfsrestore来解析backup恢复文件
备份级别:
- 0:完全备份(默认就是0)
- 1-9:增量备份
使用xfsdump使用的要求:
- 只能备份已挂载的文件系统(xfs)
- 只有root用户才能操作
- 只能是xfs的文件系统
- 它不是直接恢复文件,而是通过xfsrestore解析后,备份文件才能恢复
- 不能备份2个uuid相同的文件系统
(2)使用xfs做一个全量备份和一个增量备份
- .先将sdb分出一个5G大小的sdb1分区,并挂载
- 创建文件并做全量备份
- 增加文件,并做增量备份
- 解析恢复全量备份
- 解析恢复增量备份
总结:全量备份,恢复的是备份的所有文件;增量备份只能在全量备份完之后才可以进行增量备份,并且备份的是上一个节点之后增加的文件,恢复也只能恢复上一节点增加的文件。
三、日志分析
日志:系统、程序在运行时会产生一些相关的数据信息,这些信息会统一记录在日志中
功能:通过阅读日志,有助于诊断和解决系统故障;用于记录系统、程序中发生的各种事件
保存位置:默认保存在/var/log目录下 var/log/message(常用)
查看方式:tail -f 动态查看
3.1 日志文件的分类
(1)内核及系统日志:
- 这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置
(2)用户日志:
- 这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登 录的终端、登录时间、来源主机、正在使用的进程操作等
(3)程序日志
- 有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息
3.2 日志文件内容格式
- 事件产生的时间
- 产生事件的服务器的主机名
- 产生事件的服务名或程序名
- 事件的具体信息以及结果
3.3 内核及系统日志配置文件及日志消息等级
(1)日志配置文件
[root@localhost ~]# vim /etc/rsyslog.conf ##配置文件
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
##54行,表示所有info级别以上,包含info级别的日志,都记录到/var/log/messages中
* #表示所有
info #日志级别
none #日志级别,表示无级别,不记录
注意:改完之后一定要重启服务,否则配置的内容不生效
(2)日志消息等级(数字等级越小,优先级越高,消息越重要)
级别 | 消息 | 级别 | 具体描述 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况。如系统崩溃 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题。如数据库被破坏 |
2 | CRIT | 严重 | 比较严重的情况。如硬盘错误,可能会阻碍程序的部分功能 |
3 | ERR | 错误 | 运行出现错误。不是非常紧急,尽快修复的 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件。不是错误,如磁盘用了85%等 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件。无需处理 |
6 | INFO | 信息 | 一般信息。正常的系统信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等。包含详细开发的信息,调试程序时使用 |
none | 没有优先级,不记录任何日志消息 |
3.4 查询用户登录信息相关命令
[root@localhost ~]# users #显示当前登录系统的所有用户的用户列表。
[root@localhost ~]# w #显示目前登入系统的用户信息
[root@localhost ~]# last #列出截止目前登录过系统的用户信息
[root@localhost ~]# lastb #查询登录失败的用户记录
3.5 日志管理
- 对于业务型日志,一般保留2-3天
- 根据保存的类型不同,保存的期限也不同。例如,用户信息:进行永久保存,不能删除,而且要进行备份;交易记录:一般保留半年,但是需要备份,可以查询到
- 权限控制:一般的核心业务日志,只有少数权限人员可查看
3.6 实验
(1)要求:服务日志单独存放
1.关闭防火墙和更改安全机制
2.进入/etc/rsyslog.conf里修改配置文件的自定义日志存放位置
- local6:自定义服务日志,对应的服务也必须配置相应的local等级
- /var/log/ssh.log:存放位置
3.进入/etc/ssh/ssh_config修改配置
4.重启服务
5.使用test2测试访问登录test1
6.动态查看存放日志的文件,显示test2的IP登录访问信息
(2)配置日志服务器,用来收集客户机日志
说明:test1 192.168.247.21为发送方 test2 192.168.247.22 为接收方
发送方配置:
1.先关闭防火墙和改变安全机制
2.进入/etc/rsyslog.conf配置文件
- 使用TCP协议,将TCP协议注释取消,开启TCP协议
- 将54行日志存储的路径的命令注释掉;并在下一行添加新的路径存储路径“@@”标识使用TCP协议
3.重启服务并查看端口是否开启
接收方配置:
1.进入/etc/rsyslog.conf配置文件,开启TCP协议
2.重启服务并查看端口是否开启
3.动态查看日志文件
验证:
返回发送方发送验证文件
接收方显示日志记录