11 - 深入理解Linux文件系统和日志分析

目录

一、inode和block

1. inode和block概述

2.inode的内容

2.1 inode包含文件的元信息

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

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

3. inode的号码

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

3.2 查看inode号码的方法

4. inode的大小

5. inode的特殊作用

二、文件恢复案例

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

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

三、日志文件

1.日志文件的功能

2.日志文件的分类

3.日志保存位置

4.主要日志文件介绍

5.日志消息的级别

6.日志记录的一般格式

7.程序日志分析

8.日志管理策略


一、inode和block

1. inode和block概述

 文件数据包括元信息与实际数据

 文件存储在在硬盘上,硬盘最小存储单位是"扇区",每个扇区存储512字节

block(块)

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

inode(索引节点)

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

ps:一个文件必须占用一个inode,至少占用一个block

2.inode的内容

2.1 inode包含文件的元信息

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

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

例:

stat a.txt

[root@wzx /]# 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: -

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

ctime(change time):最后一次改变目录(属性)的时间。

atime(access time):最后一次访问文件或目录的时间。

mtime(modify time):最后一次修改文件或目录(内容)的时间。

3. inode的号码

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

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

3.2 查看inode号码的方法

  • ls -i 命令:查看文件名对应的inode号码
[root@wzx /]# ls -i 1.txt
59207 1.txt
  • stat命令:查看文件inode信息中的inode号码
[root@wzx /]# 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
Modify: 2024-08-10 01:24:44.319000182 +0800
Change: 2024-08-10 01:24:44.319000182 +0800
 Birth: -

4. inode的大小

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

5. inode的特殊作用

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

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

二、文件恢复案例

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

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/     #制作命令软链接

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

3.恢复文件

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

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

1.需安装xfsdump软件包

yum install xfsdump -y

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 #需要备份的分区的标签

3.模拟数据丢失

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

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@wzx /]# 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.集中管理日志

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值