目录
一、Linux文件系统
1、inode 与 block概述
1.2、inode内容
1.3、查找inode
1.4、inode故障处理
2、硬盘分区后的结构
3、访问文件的流程
4、文件恢复
4.1、恢复ext3格式文件
4.2、恢复 xfs 格式文件
二、Linux日志文件
1、日志的功能
2、日志的默认位置
3、日志文件的分类
4、日志消息的级别
5、 详细日志分析
三、管理日志
1、journalctl
2、rsyslog
3、日志管理策略
一、Linux文件系统
1、inode 与 block概述
- inode(索引节点)是文件系统中的一种数据结构,用于存储文件或目录的元数据信息,例如文件大小、权限、所有者、时间戳等。每个文件和目录都有一个唯一的inode来标识和管理。
- block(块)是文件系统中用来存储实际数据的最小单位。文件系统将文件内容分割为一个个块来存储,每个块的大小可以根据文件系统的设计和配置而有所不同。文件系统使用块来管理存储空间并存储文件数据
1.2、inode内容
①、inode包含文件的元信息,比如:文件的大小,时间,类型,权限等
②、inode包含一下信息:
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳
③、Linux系统文件三个主要的时间属性
简写 | 全名 | 中文名 | 说明 |
---|---|---|---|
atime | access time | 访问时间 | 文件内容最后被访问的时间 |
mtime | modify time | 修改时间 | 文件内容最后被修改的时间 |
ctime | change time | 变化时间 | 文件的元数据发生变化的时间(比如权限,所有者等) |
1.3、查找inode
①、用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名对应的inode号码
- 通过inode号码,获取inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
②、查找inode
1、ls -i 文件名
2、stat 文件名
1.4、inode故障处理
for n in $(seq 1 20000); do touch a_$n; done #创建空文件
df -i #查看设备的inode号数量
rm -rf 文件名 #删除文件
2、硬盘分区后的结构
3、访问文件的流程
4、文件恢复
4.1、恢复ext3格式文件
#安装软件包
yum -y install e2fsprogs-devel e2fsprogs-libs #安装依赖软件
tar -jxvf extundelete-0.2.4.tar.bz2 #解压安装包
cd /opt/extundelete-0.2.4 #切换到安装目录下
./configure #编译安装
make
make install
*******************************************************************************************************
#使用fdisk创建分区并且格式化
fdisk /dev/sdb #分区
mkfs.ext3 /dev/sdb1 #使用ext3格式化
mkdir test #创建一个目录
mount /dev/sdb1 /test #挂载
cd /test #切换到挂载点目录
echo “this is oppo” > 1.txt #创建文件
echo “this is vivo ” > 2.txt
echo “this is huawei” > 3.txt
echo “this is xiaomi” > 4.txt
********************************************************************************************************
#删除文件并恢复
rm -rf 1.txt 2.txt 3.txt #删除文件
umount /test #解挂载
extundelete /dev/sdb1 --restore-all #恢复被删除的文件
********************************************************************************************************
恢复完成!
4.2、恢复 xfs 格式文件
①、命令格式:
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
②、备份级别:
③、常用选项
选项 | 说明 |
---|---|
-f | 指定备份文件目录 |
-L | 指定标签 session label |
-M | 指定设备标签 media label |
-s | 备份单个文件,-s 后面不能直接跟路径 |
④、xfsdump使用限制
- 只能备份已挂载的文件系统
- 必须使用root的权限才能操作口
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析口
- 不能备份两个具有相同UUID的文件系统
#安装软件工具
yum install -y xfsdump
********************************************************************************************************#使用fdisk分区并且格式化
fdisk /dev/sdb #分区
mkfs.xfs /dev/sdb1 #文件系统格式化
mkdir test #创建目录
mount /dev/sdb1 /test #挂载磁盘分区
cd /test #切换到挂载点目录
echo “this is kfc” > 666.txt #创建文件
*****************************************************************************************************
#使用xfsdump命令备份整个分区
xfsdump -f /opt/bak_sdb1 /dev/sdb1
******************************************************************************************************
#删除文件并恢复
rm -rf /test/* #删除/mnt目录下的所有文件
xfsrestore -f /opt/bak_sdb1 /opt/ #恢复文件到opt下
***************************************************************************************************
恢复完成!
二、Linux日志文件
1、日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
2、日志的默认位置
- 默认于 /var/log 下面
3、日志文件的分类
①、内核及系统日志
记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。
- /var/log/messages
日志记录的一般格式:
记录日志的一半格式
②、用户日志
记录系统用户登录及退出系统的相关信息
- /var/log/secure: 记录用户认证相关的安全事件信息。
- /var/log/lastlog: 记录每个用户最近的登录事件。二进制格式
- /var/log/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
- /var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式
③、程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
4、日志消息的级别
级号 | 消息 | 级别 | 说明 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况。 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题。 |
2 | CRIT | 严重 | 比较严重的情况。 |
3 | ERR | 错误 | 运行出现错误。 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件。 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件。 |
6 | INFO | 信息 | 一般信息。 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
5、 详细日志分析
命令 | 功能 |
---|---|
users | 显示当前登录用户的用户名列表,按空格分隔。 |
w | 显示当前登录用户及其活动的信息,包括当前时间、系统运行时间、登录用户、活动信息等。 |
who | 显示当前登录用户的信息,包括登录用户名、登录终端、登录时间、远程主机名等。 |
last | 显示系统启动以来所有用户的登录和注销记录。 |
lastb | 显示失败的登录尝试记录。 |
三、管理日志
1、journalctl
- journalctl工具是CentOS-7才有的工具
- Systemd统一管理所有Unit的启动日志。带来的好处就是,可以只用journalct1一个命令,查看所有日志(内核日志和应用日志)。
参数 | 说明 |
---|---|
-u UNIT, --unit=UNIT | 仅显示指定单元(服务)相关的日志消息。 |
-k, --dmesg | 显示内核消息,相当于查看 dmesg 输出。 |
-b, --boot=ID | NUMBER |
-p LEVEL, --priority=LEVEL | 仅显示指定优先级的日志消息。 |
-e, --pager-end | 在显示完日志后保持光标在末尾,等待用户输入。 |
-n NUMBER, --lines=NUMBER | 显示最后指定行数的日志消息。 |
-f, --follow | 实时跟踪日志消息的变化,类似 tail -f 。 |
-o FORMAT, --output=FORMAT | 指定输出格式,如 json 、json-pretty 、short 、verbose 等。 |
--since TIME | 显示自指定时间点之后的日志消息。 |
--until TIME | 显示自指定时间点之前的日志消息。 |
--disk-usage | 显示磁盘上日志文件的使用情况统计信息。 |
日志的配置文件 /etc/systemd/journald.conf ps -ef | grep journald
journalctl -b //查看本次启动的日志
journalctl -k //查看内核日志
[root@localhost ~]# journalctl |wc -l //查看系统总共的日志
3268journalctl -xe 经常用来查看最近报错的日志
-e:从结尾开始看
-x:提供问题相关的网址
2、rsyslog
用于收集、存储和传输日志数据
vim /etc/rsyslog.conf
实验:收集日志
准备两台虚拟机,一台作为服务端,一台作为客户端
服务端配置:
①、查看服务是否开启
②、配置rsyslog服务文件,开启 19、20行
vim /etc/rsyslog.conf
③、编辑完成,重启服务,看是否有514端口
客户端配置:
在客户端进行操作时,服务端会实时采集客户端的日志信息
3、日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
- 将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的统一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除