Linux—文件内系统与日志分析

发布于:2024-07-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

一、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 指定输出格式,如 jsonjson-prettyshortverbose 等。
--since TIME 显示自指定时间点之后的日志消息。
--until TIME 显示自指定时间点之前的日志消息。
--disk-usage 显示磁盘上日志文件的使用情况统计信息。

日志的配置文件          /etc/systemd/journald.conf  ps -ef | grep journald

journalctl -b    //查看本次启动的日志

journalctl -k     //查看内核日志

[root@localhost ~]# journalctl |wc -l                //查看系统总共的日志
3268

journalctl -xe  经常用来查看最近报错的日志
-e:从结尾开始看
-x:提供问题相关的网址

                        

2、rsyslog

用于收集、存储和传输日志数据

vim /etc/rsyslog.conf

实验:收集日志

准备两台虚拟机,一台作为服务端,一台作为客户端

服务端配置

①、查看服务是否开启

②、配置rsyslog服务文件,开启 19、20行

vim /etc/rsyslog.conf

③、编辑完成,重启服务,看是否有514端口

客户端配置: 

在客户端进行操作时,服务端会实时采集客户端的日志信息

 3、日志管理策略

及时作好备份和归档
延长日志保存期限
控制日志访问权限 

  • 日志中可能会包含各类敏感信息,如账户、口令等

 集中管理日志

  • 将服务器的日志文件发到统一的日志文件服务器
  • 便于日志信息的统一收集、整理和分析
  • 杜绝日志信息的意外丢失、恶意篡改或删除

网站公告

今日签到

点亮在社区的每一天
去签到