DAY25 linux文件系统与日志分析

162 阅读5分钟

inode与block

block

理解inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个”块”(block)。这种由多个扇区组成的”块”,是文件存取的最小单位。”块”的大小,最常见的是4KB,即连续八个 sector组成一个 block。

文件存储时 文件名 和文件数据是分开存储的, 文件名存储在文件目录当中

文件数据分为元信息和实际数据,实际数据存储在block也就是块当中,而元信息存储在inodo号当中

inode

inode包含文件的元信息,具体来说有以下内容:

  • 文件的字节数

  • 文件拥有者的User ID

  • 文件的Group ID

  • 文件的读、写、执行权限

  • 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

  • 链接数,即有多少文件名指向这个inode

  • 文件数据block的位置

我们可以使用 ls -i文件名或者 stat文件名 ##查看文件inode号

stat指令还可以看到文件的三个时间:

atime 最近的文件访问时间

mtime 最近的文件内容修改时间

ctime 最近的文件属性修改时间

image.png

每个文件系统(分区)中inode数量是有限的 ,可通过df -i 查看

image.png

使用linux的时候,我们经常遇到rm命令删除不了文件的情况,此时我们可以使用inode号删除:

find 目录 -inum inode号 -delete

image.png

移动或修改文件名,都不会改变inode。 但使用vi编辑器对文件进行修改,会改变inode号,因为vi编辑器会替换源文件

用户打开一个文件的过程:

用户根据文件名查到对应inode号 , 根据 inode号找到inode信息, 根据inode信息 ,如有读取信息,如没有拒绝访问。

ext 类型文件恢复实验

第一步:下载extundelete工具 ,并软连接到/usr/bin

首先安装依赖包,之后编译安装extundelete

image.png

image.png

wget nchc.dl.sourceforge.net/project/ext…

image.png

image.png

第二步:删除并执行会恢复操作

cd / 1

echo a>a

echo a>b

extundelete /dev/sdb1 --inode 2 ##查看分区下的文件以及inode image.png 删除:rm -rf a b

切换到家目录:cd~

解挂:umount /test

extundelete /dev/sdb1 --restore-all ##恢复分区下所有内容

此时我们发现家目录中出现了一个RECOVERED_FILES目录,里面就有被恢复的文件

image.png

image.png

XFS类型文件备份与恢复

我们使用xfsdump 备份 ,xfsrestore工具进行备份

xfs必须使用root权限操作,备份后的数据只能让xfsrestore解析

xfsdump -f 备份存放路径 源备份文件路径

选项: -f:指定备份文件

-L:指定标签

-M:指定设备标签

-s:备份单个文件 (不可使用路径)

实验:

rpm -qa | grep xfsdump

yum install -y xfsdump

xfsdump -f /opt/dump_sdb1 /dev/sdb1 【-L dump_sdb1 -M sdb1】

image.png

模拟删除:

image.png

使用xfsrestore恢复

image.png

日志

日志文件的作用

日志文件用于记录linux系统的各种运行信息的文件,相当于linux主机的日记,不同的日志文件记载了不同类型的信息,如Linux内核消息、用户登录事件、程序错误等。. 日志文件对于诊断和解决问题很有帮助,因为linux运行的程序通常把系统的消息和错误写入对应的日志文件,这样系统可以有据可查, 此外,当主机遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹。

inux系统日志的三种类型

  第一种:内核及系统日志

  这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。系统中有相当一部分程序会把日志文件交由rsyslog管理,因而这些程序使用的日志记录也具有相似的格式。

  第二种:用户日志

  这种日志数据用于记录Linux操作系统用户登录以及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。

  第三种:程序日志

  有些应用程序会选择由自己独立管理一份日志文件,用于记录本程序运行过程中的各种事件信息,而不是交给rsyslog服务管理。由于这些程序只负责管理自己的日志文件,因此不同程序所使用的日志记录格式可能会存在较大的差异。

常见的日志文件及查看方式

日志文件 存放内容

/var/log/message 内核消息及各种应用程序的公共日志信息,包括启动、I/O错误、 网络错误、

/var/log/cron Crond周期性计划任务产生的时间信息

/var/log/dmesg 弓|导过程中的各种时间信息

/var/log/ maillog 进入或发出系统的电子邮件活动

/var/log/lastlog 每个用户最近的登录事件

/var/log/secure 用户认证相关的安全事件信息

/var/log/wtmp 每个用户登录注销及系统启动和停机事件

/var/log/btmp 失败的、错误的登录尝试及验证事件

日志文件消息级别

0 EMERG:紧急 导致主机系统不可用的情况

1 ALERT:警告 必须马上采取解决措施

2 CRIT 严重 比较严重的情况

3 ERR 错误 运行出现错误

4 WARNING 提醒 提醒用户的重要事件

5 NOTICE 注意 不会儿影响系统,提醒用户

6 INFO 信息 一般信息

7 DEBUG 调式 程序调式

8 None 没有 不做记录

日志收集 :服务器数量少rsyslog shell/python 服务器多: ELK