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

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

 

              一、inode和block概述

               1)文件数据

               2)block(块)

               3)inode(索引节点)

              二、inode的号码

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

               2)查看文件名称的inode号码有两种方式

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

              四、inode的大小

              五、inode的特殊作用

              六、链接文件

              七、inode节点耗尽故障处理

              八、EXT类型文件恢复

              九、xfs类型文件备份和恢复

              十、文件日志

               1)日志的功能

               2)日志文件的分类

               3)日志保存位置

               4)常见的一些日志文件

               5)日志消息的级别

               6)日志文件的记录格式

               7)用户日志分析

               8)程序日志分析

               9)日志管理策略

 

 

 

 

一、inode和block概述

1)文件数据

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

元数据存在inode。

实际数据存在block。

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

2)block(块)

一般连续八个扇区组成一个"块"(block),一个块是4K大小,是文件存取的最小单位。

操作系统读取硬盘的时候,是一次性连续读取多个文件数据包括实际数据与元信息(类似文件属性)。

文件数据存储在“块”中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode。

因此,一个文件必须占用一个inode,并且至少占用一个block。

3)inode(索引节点)

inode中文译名为“索引节点”,也叫“i”节点

inode不包含文件名。

文件名是存放在目录当中的。

Linux系统中一切皆文件,因此目录也是一种文件。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。

Linux系统内部不适用文件名,而使用inode号码来识别文件。对于系统来说,文件名知识inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。

所以,当用户在Linux系统中视图访问一个文件时,系统会先根据文件名去查找对应的inode号码,通告inode号码获取inode信息,根据inode信息,看该用户是否具有访问这个文件的权限,如果有,就指向相对应的数据block,并读取数据。

二、inode的号码

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

①系统找到这个文件名对应的inode号码。

②通过inode号码,获取inode信息。

③根据inode信息,找到文件数据所在的block,读出数据。

2)查看文件名称的inode号码有两种方式

①查看文件名对应的inode号码

ls -i 文件名

②查看文件inode信息中的inode号码

stat 文件名

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

atime(accesstime)

当使用这个文件的时候就会更新这个时间。

mtime(modifcation time)

当修改文件内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。

ctime(status time)

当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time。

只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。

四、inode的大小

inode也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。

一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息。

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

通常情况下不需要关注单个inode的大小,而是需要重点关注inode总数。inode的总数在格式化时就给定了,执行 df -i 命令即可查看每个硬盘分区对应的inode总数和已经使用的inode数量。

五、inode的特殊作用

由于inode号码与文件名分离,导致Linux系统具备以下几种特有现象:

①文件名包含特殊字符,可能无法正常删除,这时直接删除inode,能够起到删除文件的作用。

②移动文件或重命名文件,只是改变文件名,不影响inode号码。

③打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。

④文件数据被修改保存后,会生成一个新的inode号码。

删除文件inode号码的几种方法:

find ./ -inum 67357281 -exec rm -rf  {} \;
或
find ./ inum 67357281 -delete
或
find ./ inum 67357281 | xargs rm -rf

例:

使用find ./ -inum 67357281 -exec rm -rf {} \;删除

六、链接文件

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

链接文件分类

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

必须与原始文件在同一个文件系统

(如一个Linux分区)内

七、inode节点耗尽故障处理

#使用fdisk创建分区/dev/sdb1,分区大小30M即可
fdisk /dev/sdb
mkfs -t ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
df -i
#模拟inode节点耗尽故障
for ((i=1; i<=7680; i++));do touch /data /file$i;done
df -i
df -hT
#删除文件恢复
rm -rf /data/*
df -i
df -hT

例:

首先创建一块硬盘,进行分区

进行格式化

查看一下

模拟inode节点耗尽故障

这时已无法创建

最后,进行删除恢复操作

八、EXT类型文件恢复

extundelete是一个开源的Linux数据恢复工具,支持ext3、ext4文件系统。(ext4只能在centos6版本恢复)

#使用fdisk创建分区/dev/sdb2,格式化ext3文件系统
fdisk /dev/sdb
partprobe /dev/sdb
mkfs -t ext3 /dev/sdb2
mkdir /data
mount /dev/sdb2 /data
df -hT
#安装依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs
#编译安装extundelete
cd /data
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 /urs/local/extundelete/bin/* /urs/bin/

模拟删除并执行恢复操作

cd /data
echo a > a
echo a > b
echo a > c
echo a > d
ls
extundelete /dev/sdb2
#查看文件系统/dev/sdb2下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录

rm -rf a b 
extundelete /dev/sdb --inode 2
cd ~
umount /data
extundelete /dev/sdb2 --restore-all  #恢复/dev/sdb2 文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
ls RECOVERED_FILES/

例:

首先进行分区

进行格式化

挂在前因为之前挂载了,所以先解挂

然后进行挂载

创建几个文件

安装软件extundelete-0.2.4.tar.bz2,然后进行解压

进行编译安装之前,查看光盘有没有挂载

安装依赖包

然后进行编译安装

把extundelete加入到软连接

看一下文件系统/dev/sdb2下存在哪些文件

模拟删除a b c

最后,进行恢复操作

九、xfs类型文件备份和恢复

CentOS 7系统默认采用xfs类型文件,xfs类型的文件可用xfsdump与xfsrestore工具进行备份恢复。

xfsdump的备份级别有两种:0表示完全备份;1-9表示增量备份。xfsdump的备份级别默认为0。

xfsdump的命令格式

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

xfsdump命令的常用选项

-f:指定备份文件目录

-L:指定标签session label

-M:指定设备标签media label

-s:备份单个文件,-s后面不能直接跟路径

xfsdump使用限制

①只能备份已挂载的文件系统

②必须使用root的权限才能操作

③只能备份XFS文件系统

④备份后的数据只能让xfsrestore解析

⑤不能备份两个具有相同UUID的文件系统(可用blkid命令查看)

操作步骤

#使用fdisk创建分区/dev/sdb,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb
mkfs -t xfs 【-f】 /dev/sdb3
mkdir /data
mount /dev/sdb3 /data
cd /data
cp /etc/passwd ./
mkdir data
touch data/a
#使用xfsdump命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb3 /dev/sdb3 【-L dump_sdb3 -M sdb3】
#模拟数据丢失并使用xfsrestore命令恢复文件
cd /data
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb3 /data

例:

首先还是分区

然后进行格式化

进行挂载

模拟数据丢失恢复操作,首先复制一些文件

进行备份操作

删除这些文件

进行恢复操作

在查看一下,文件已恢复

十、文件日志

1)日志的功能

▪用于记录系统、程序运行的发生的各种事件

▪通过阅读日志,有助于诊断和解决系统故障

2)日志文件的分类

①内核及系统日志

▪由系统服务rsyslog统一进行管理,日志格式基本相似

▪主配置文件/etc/rsyslog.conf

②用户日志

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

③程序日志

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

3)日志保存位置

Linux操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下。

4)常见的一些日志文件

内核及公共消息日志

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

计划任务日志

/var/log/cron:记录crond计划任务产生的事件信息

系统引导日志

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

邮件系统日志

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

用户登录日志

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

/var/log/lastlog:记录每个用户最近的登录事件。二进制格式

/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。二进制格式

/var/run/utmp:记录失败的、错误的登录尝试及验证事件。二进制格式

5)日志消息的级别

Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)

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

6)日志文件的记录格式

时间标签:信息发出的日期和时间

主机名:生成消息的计算机的名称

子系统名称:发出消息的应用程序的名称

消息:消息的具体内容

7)用户日志分析

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

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

/var/log/wtmp:用户登录、注销及系统开、关机事件

/var/run/utmp:当前登录的每个用户的详细信息

/var/log/secure:与用户验证相关的安全性事件

分析工具

users、who、w、last、lastb

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

lastb命令用于查询登录失败的用户记录

8)程序日志分析

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

Web服务:/var/log/httpd/

access_log  #记录客户访问事件

error_log   #记录错误事件

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

access.log
cache.log

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

Webalizer、Awstats等专用日志分析工具

9)日志管理策略

及时做好备份和归档

延长日志保存期限

控制日志访问权限

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

集中管理日志

▪将服务器的日志文件发到统一的日志文件服务器

▪便于日志信息的统一收集、整理和分析

▪杜绝日志信息的意外丢失、恶意篡改或删除

posted @ 2020-06-26 22:48  盖旭昇  阅读(137)  评论(0编辑  收藏  举报