深入理解Linux文件系统与日志分析

目录

一、inode 和 block 

1. 概述

2. inode的内容

2.1 inode包含文件的元信息

2.2 Linux系统文件三个主要的时间属性

2.3 目录文件的结构

3. inode的号码

3.1 用户通过文件名打开文件时,系统内部的过程

3.2 查看inode号码的方法

3.3 文件存储小结

3.4 inode的大小

3.5 inode的特殊作用

二、硬链接与软链接

1. 链接文件

1.1 为文件或目录建立链接文件

链接文件分类

三、恢复误删除的文件

1.案例:恢复EXT类型的文件

1.1 首先需安装extundelete软件包

1.2 模拟误删操作

1.3 恢复文件

2.案例:恢复XFS类型的文件

2.1 需安装xfsdump软件包

2.2 使用xfsdump命令备份整个文件系统分区

2.3 模拟数据丢失

2.4 恢复数据

四、分析日志文件

1.日志文件的功能

2.日志文件的分类

3.日志保存位置

4.主要日志文件介绍

5. 日志消息的级别

6. 日志记录的一般格式

7.程序日志分析

8.日志管理策略


一、inode 和 block 

1. 概述

● 文件数据包括元信息与实际数据
● 文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节
● block(块)

  • 连续的八个扇区组成一个 block(4k)
  • 是文件存取的最小单位

● inode(索引节点)

  • 中文译名为“索引节点”,也叫**i节点**
  • 用于存储文件元信息

2. inode的内容

2.1 inode包含文件的元信息

  • 文件的字节数

  • 文件拥有者的User ID

  • 文件的Group ID

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

  • 文件的时间戳

  • ......

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

  • 示例:stat aa.txt

2.2 Linux系统文件三个主要的时间属性

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

2.3 目录文件的结构

● 结构:

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

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

3. inode的号码

3.1 用户通过文件名打开文件时,系统内部的过程

  1. 系统找到这个文件名对应的inode号码
  2. 通过inode号码,获取inode信息
  3. 根据inode信息,找到文件数据所在的block,读出数据

3.2 查看inode号码的方法

ls -i 命令:查看文件名对应的inode号码

ls -i aa.txt

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

stat aa.txt 

[root@localhost ~]# stat 1.txt
  File: ‘1.txt’
  Size: 12              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 59207       Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:etc_runtime_t:s0
Access: 2024-08-10 01:24:44.308000181 +0800     #atime最后一次访问文件或目录的时间
Modify: 2024-08-10 01:24:44.319000182 +0800     #mtime最后一次修改文件或目录(内容)的时间
Change: 2024-08-10 01:24:44.319000182 +0800     #ctime最后一次改变目录(属性)的时间
 Birth: -

3.3 文件存储小结

● 硬盘分区后的结构

● 访问文件的简单流程

3.4 inode的大小

● inode也会消耗硬盘空间

  • 每个inode的大小
  • 一般是128字节或256字节

● 格式化文件系统时确定inode的总数
● 使用 df -i 命令可以查看每个硬盘分区的inode总数和已经使用得数量

3.5 inode的特殊作用

由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象

  • 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
  • 移动或重命名文件时,只改变文件名,不影响inode号码
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

二、硬链接与软链接

1. 链接文件

1.1 为文件或目录建立链接文件

链接文件分类

● 硬链接

ln 【源文件】 【目标位置】

● 软链接

ln  [ -s ]  【源文件或目录】  【链接文件或目标位置】

软链接硬链接
删除原始文件后失效仍旧可用
使用范围适用于文件或目录可用于文件
保存位置与原始文件可以位于不同的文件系统中

必须与原始文件再同一文件系统·(如一个Linux分区)内

三、恢复误删除的文件

1.案例:恢复EXT类型的文件

1.1 首先需安装extundelete软件包

yum install gcc* pcre* e2fsprogs-devel e2fsprogs-libs wget -y     #安装依赖文件
cd /test
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2     #下载软件包
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/     #制作命令软链接

1.2 模拟误删操作

cd /abc     #挂载ext文件系统的挂载点
echo a>a
echo a>b
echo a>c
echo a>d
extundelete /dev/sdc1 -- inode 2     #查看文件系统下存在哪些文件
 
rm -rf a b     #模拟误删
extundelete /dev/sdc1 -- inode 2

1.3 恢复文件

cd /123     #恢复的文件会保存在当前目录
umount /dev/sdc1 /abc     #恢复前需解挂载
extundelete /dev/sdc1 --restore-all     #恢复/dev/sdc1设备下的所有内容
cd /123/RECOVER_FILES     #恢复的文件

2.案例:恢复XFS类型的文件

2.1 需安装xfsdump软件包

yum install xfsdump -y

2.2 使用xfsdump命令备份整个文件系统分区

cd /data     #挂载xfs文件系统分区的挂载点
 
cp /etc/passwd /data
mkdir abc
touch abc/1.txt
#模拟需要备份的文件
 
xfsdump -f /a/dump_sdb1 /dev/sdb1 -L dump_sdb1 -M sdb1
 
#xfsdump -f /a/dump_sdb1 #备份文件的位置 /dev/sdb1 #需要备份的分区 -L dump_sdb1 #备份文件的标签
 -M sdb1 #需要备份的分区的标签

2.3 模拟数据丢失

cd /data     #挂载xfs文件系统分区的挂载点
rm -rf *     #模拟数据丢失

2.4 恢复数据

xfsrestore -f /a/dump_sdb1 /data     #恢复之前的备份文件

四、分析日志文件

1.日志文件的功能

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

2.日志文件的分类

内核及系统日志

  • 由系统服务rsylog统一进行管理,日志格式基本相似
  • 主配置文件:/etc/rsylog.conf

用户日志

  • 记录系统用户登录及退出系统的相关信息

程序日志

  • 由各种应用程序独立管理的日志文件,记录格式不统一

3.日志保存位置

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

4.主要日志文件介绍

内核及公共消息日志:

  • /var/1og/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

计划任务日志:

  • /var/1og/cron:记录crond计划任务产生的事件信息。

系统引导日志:

  • /var/1og/dmesg:记录Linux系统在引导过程中的各种事件信息。

邮件系统日志:

  • /var/1og/maillog:记录进入或发出系统的电子邮件活动。

用户登录日志:

  • /var/log/secure:记录用户认证相关的安全事件信息。
  • /var/1og/lastlog:记录每个用户最近的登录事件。二进制格式
  • /var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件。二进制格式
  • /var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式

5. 日志消息的级别

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

6. 日志记录的一般格式

[root@localhost ~]# more /var/log/messages
Aug  6 23:04:47 localhost journal: Runtime journal is using 8.0M (max allowed 188.5M, trying to
leave 282.8M free of 1.8G available → current limit 188.5M).
Aug  6 23:04:47 localhost kernel: Initializing cgroup subsys cpuset
Aug  6 23:04:47 localhost kernel: Initializing cgroup subsys cpu
Aug  6 23:04:47 localhost kernel: Initializing cgroup subsys cpuacct
Aug  6 23:04:47 localhost kernel: Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.c
entos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC
2018
  • /var/log/lastlog:最近的用户登录事件
  • /var/log/wtmp:用户登录、注销及系统开、关机事件 
  • /var/run/utmp:当前登录的每个用户的详细信息
  • /var/log/secure:与用户验证相关的安全性事件

分析命令

users、who、w、last、lastb

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

7.程序日志分析

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

Web服务: /var/log/httpd/

  • access_log                //记录客户访问事件
  • error_log                //记录错误事件

代理服务: /var/log/squid/

  • access.log、cache.log

分析工具

  • 文本查看、grep过滤检索、Webmin管理套件中查看
  • awk、sed等文本过滤、格式化编辑工具
  • Webalizer、Awstats等专用日志分析工具

8.日志管理策略

1.及时作好备份和归档

2.延长日志保存期限

3.控制日志访问权限

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

4.集中管理日志

  • 将服务器的日志文件发到统一的日志文件服务器
  • 便于日志信息的统一收集、整理和分析
  • 杜绝日志信息的意外丢失、恶意篡改或删除
  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值