linux 文件系统和日志分析

目录

一、inode与block

1.1 inode和block概述

1.2 inode的内容

1.2.1 inode包含文件的元信息

1.2.2 用stat命令可以查看某个文件的inode信息

1.2.3 linux系统文件三个主要的时间属性

1.2.4 目录文件的结构

1.3 inode的号码

1.4 文件存储小结

1.4.1 硬盘分区后的结构

1.4.2 访问文件的简单流程

1.5 inode的大小

1.6 inode的特殊作用

二、硬链接与软链接

2.1 链接文件

三、恢复误删除文件

3.1 恢复EXT类型的文件

3.2 恢复XFS类型的文件

3.2.1 xfs文件类型恢复工具

3.2.2 xfsdump命令--------xfs系统恢复工具

3.2.3 xfs文件系统恢复步骤

四、分析日志文件

4.1 日志文件

4.1.1 日志功能

4.1.2 日志文件的分类

4.1.3 日志保存位置

4.1.4 主要日志文件介绍

4.2 内核及系统日志

4.2.1 由系统服务rsyslog 统一管理

4.2.2 日志消息级别

4.2.3 日志记录的一般格式

4.3 用户日志分析

4.3.1 保存了用户登录、退出系统等相关信息

4.3.2 分析工具

4.4 程序日志分析

4.4.1 由相关的应用程序独立进行管理

4.5 日志管理策略


一、inode与block

1.1 inode和block概述

  • 文件数据包括元信息与实际数据
  • 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
  • block(块)
    • 连续的八个扇区组成一个block(4K)
    • 是文件存取的最小单位
  • inode(索引节点)
    • 中文译名为“索引节点”,也叫i节点
    • 用于存储文件元信息

元信息:   描述这个文件属性信息/数据文件位置信息内容

数据文件: 文件实际大小

元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。因此,一个文件必须占用一个 inode,并且至少占用一个 block。
inode不包含文件名。文件名是存放在目录当中的。Linux 系统中一切皆文件,因此目录也是一种文件。
每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。
所以,当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码;通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

1.2 inode的内容

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用inode号码来识
  • 对于用户,文件名只是inode号码便于识别的别称

1.2.1 inode包含文件的元信息

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳

1.2.2 用stat命令可以查看某个文件的inode信息

stat aa.txx

示列

[root@localhost mnt]# stat 123
  文件:"123"
  大小:6               块:0          IO 块:4096   目录
设备:fd00h/64768d      Inode:100918534   硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:mnt_t:s0
最近访问:2024-08-13 11:18:14.469574118 +0800
最近更改:2024-08-13 11:18:14.469574118 +0800
最近改动:2024-08-13 11:18:14.469574118 +0800
创建时间:-

1.2.3 linux系统文件三个主要的时间属性

  • ctime(change time)
    • 最后一次改变目录文件或者目录(属性)的时间
  • atime(access time)
    • 最后一次访问文件或者目录的时间
  • mtime(modify time)
    • 最后一次修改文件或目录(内容)的时间

1.2.4 目录文件的结构

  • 目录也是一种文件
  • 目录文件的结构

1.3 inode的号码

  • 用户通过文件名打开文件时,系统内部的过程
  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,去取数据
  • 查看inode号码的方法
    • ls -i 命令:查看文件名对应的inode号码

ls -i 123.txt

[root@localhost mnt]# ls -i 123.txt
33628624 123.txt
 

        stat命令:查看文件inode信息中的inode号     

[root@localhost mnt]# stat 123
  文件:"123"
  大小:6               块:0          IO 块:4096   目录
设备:fd00h/64768d      Inode:100918534   硬链接:2
权限:(0755/drwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:mnt_t:s0
最近访问:2024-08-13 11:18:14.469574118 +0800
最近更改:2024-08-13 11:18:14.469574118 +0800
最近改动:2024-08-13 11:18:14.469574118 +0800
创建时间:-
 

1.4 文件存储小结

1.4.1 硬盘分区后的结构

1.4.2 访问文件的简单流程

1.5 inode的大小

  • inode也会消耗硬盘空间
    • 每个inode的大小
    • 一般是128字节或者256字节
  • 格式化文件系统是确定inode总数
  • 使用df -i 命令可以查看每个硬盘分区的inode总数和已使用的数量

1.6 inode的特殊作用

  • 由于inode号码与文件名分离,导致依稀Unix/Linux系统具有以下现象
    • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
    • 移动或者重命名文件是,只改变文件名,不影响inode号码
    • 打开一个文件后,系统通过inode号码来识别该文件,不在考虑文件名

二、硬链接与软链接

2.1 链接文件

  • 为文件或者目录建立链接文件
  • 链接文件分类
软链接硬链接
删除源文件后失效仍旧可用
使用范围适用于文件或目录只可用文件
保存位置与源文件可以位于不同的文件系统中必须与源文件在同一文件系统内

硬链接

ln 源文件 目标位置

软链接

ln 【-s】源文件或者目录....链接文件或者目录位置

三、恢复误删除文件

3.1 恢复EXT类型的文件

  • 编译安装extundelete软件包
    • 安装依赖包
      • e2fsprogs-libs-1.41.12-18.el6.x86 64.rpm
      • e2fsprogs-devel-1.41.12-18.el6.x86 64.rpm
    • 配置、编译及安装
      • entundelete-0.2.4.tar.bz2
  • 模拟删除并执行恢复操作

extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
#使用fdisk创建分区/dev/sdc1,格式化ext3文件系统

fdisk /dev/sdc
mkfs.ext3 /dev/sdc1
mkdir /test
mount /dev/sdc1 /test
df -hT

#安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs
#编译安装 extundelete
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
#安装依赖环境
yum install -y bzip2 gcc* pcre* 
#解压缩文件
tar jxvf extundelete-0.2.4.tar.bz2
#进入文件中编译
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
#创建软链接优化路径
ln -s /usr/local/extundelete/bin/* /usr/bin/

#模拟删除并执行恢复操作
cd /test
echo a>a
echo a>b
echo a>c
echo a>d
ls
extundelete /dev/sdc1 --inode 2			#查看文件系统/dev/sdc1下存在哪些文件,i 节点是从 2 开始的,2 代表该文件系统最开始的目录。

rm -rf a b    #删除a b 文件
extundelete /dev/sdc1 --inode 2	    #重新查看
cd ~
umount /test    #解挂载
extundelete /dev/sdc1 --restore-all		#恢复/dev/sdc1 文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/

3.2 恢复XFS类型的文件

3.2.1 xfs文件类型恢复工具

  • CentOS 7 系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
  • xfsdump 的备份级别有两种:0 表示完全备份;1-9 表示增量备份。xfsdump 的备份级别默认为 0。    

3.2.2 xfsdump命令--------xfs系统恢复工具

xfsdump 的命令格式为

xfsdump -f  备份存放位置  要备份的路径或设备文件

xfsdump 命令常用的选项:

选项说明
-f指定备份文件目录
-L指定标签 session label
-M指定设备标签 media label
-s备份单个文件,-s 后面不能直接跟路径

xfsdump使用限制:

  1. 只能备份已挂载的文件系统
  2. 必须使用root的权限才能操作
  3. 只能备份XFS文件系统
  4. 备份后的数据只能让xfsrestore解析
  5. 不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)

3.2.3 xfs文件系统恢复步骤

fdisk /dev/sdb             #使用fdisk创建分区
mkfs.xfs [-f] /dev/sdb1    #xfs类型格式化新建的分区
mkdir /data                #创建一个date目录用作挂载点
mount /dev/sdb1 /date/     #挂载sdb1分区至date目录下
cd /data                   #进入到挂载点
cp /etc/passwd ./          #复制一个文件到此目录下
mkdir test                 #创建一个test目录
touch test/a               #在test目录下创建一个文件


rpm -qa | grep xfsdump     #查看系统是否有xfsdump命令工具
yum install -y xfsdump     #没有就安装一下

touch /opt/dump_sdb1       #创建一个备份文件目录

xfsdump -f /opt/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1    #备份sdb1到dump_sdb1中

#模拟数据丢失并使用 xfsrestore 命令恢复文件
cd /data/
rm -rf ./*
ls

xfsrestore -f /opt/dump_sdb1 /data/

四、分析日志文件

4.1 日志文件

4.1.1 日志功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

4.1.2 日志文件的分类

  • 内核及系统日志
    • 由系统服务rsyslog统一进行管理,日志格式基本相似
    • 主配置文件/etc/rsyslog.conf
  • 用户日志
    • 记录系统用户登录及退出系统相关信息
  • 程序日志
    • 由各种应用程序独立管理日志文件,记录格式不统一

4.1.3 日志保存位置

  • 默认位于:/var/log 目录下

4.1.4 主要日志文件介绍

常见日志文件目录说明
内核及公共消息日志/var/log/messages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、10错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信点
计划任务日志/var/log/cron记录crond计划任务产生的事件信息。
系统引导日志/varr/log/dmesg记录Linux系统在引导过程中的各种事件信息,
邮件系统日志/var/log/maillog记录进入或发出系统的电子邮件活动。
用户登录日志/var/log/secure记录用户认证相关的安全事件信息,
/var/log/lastlog记录每个用户最近的登录事件。二进制格式
/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件。二进制格式
/var/run/btmp记录失败的、错误的登录尝试及验证事件。二进制格式

4.2 内核及系统日志

4.2.1 由系统服务rsyslog 统一管理

  • 软件包:rsyslog-7.4.7-16.el7.x86_64
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf

4.2.2 日志消息级别

级号消息级别说明
0EMERG紧急会导致主机不可用的情况
1ALERT警告必须马上采取措施解决的问题
2CRIT严重比较严重的情况
3ERR错误运行出现错误
4WARNING提醒可能会影响系统功能的时间
5NOTICE注意不会影响系统但值得注意
6INFO信息一般信息
7DEBUG调试程序或者系统调试信息等

4.2.3 日志记录的一般格式

  • 时间标签:消息发出的日期和时间
  • 主机名:生成消息的计算机的名称。
  • 子系统名称:发出消息的应用程序的名称。
  • 消息:消息的具体内容。

4.3 用户日志分析

4.3.1 保存了用户登录、退出系统等相关信息

  • /var/log/lastlog:最近用户登录时间
  • /var/log/wtmp:  用户登录、注销及系统开、关机事件
  • /var/run/utmp:  当前登录的每个用户的详细信息
  • /var/log/secure:  与用户验证相关的安全性事件

4.3.2 分析工具

  • users、who、w、last、lastab
  • last 命令用于查询成功登录到系统的用户记录
  • lastb 命令用于查询登录失败的用户记录

4.4 程序日志分析

4.4.1 由相关的应用程序独立进行管理

  • Web服务:/var/log/httpd
    • access_log        //记录客户访问事件
    • error_log            //记录错误事件
  • 代理服务:/var/log/squid/
    • access.log、cache.log
  • 分析工具
  • 文本查看、grep过滤检索、Webmin管理套件中查看
  • awk、sed等文本过滤、格式化编辑工具
  • Webalizer、Awstats等专用日志分析工具

4.5 日志管理策略

  • 及时做好备份和归档
  • 尽量延长日志保存期限
  • 控制日志访问权限
    • 日志中可能会包含各类敏感信息,如账户、口令等
  • 集中管理日志
    • 将服务器的日志文件发到统一的日志文件服务器
    • 便于日志信息的统一收集、整理和分析
    • 杜绝日志信息的意外丢失、恶意篡改或删除
  • 29
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值