深入理解Linux文件系统与日志分析(包含ext和xfs文件系统误删文件具体如何恢复操作)

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

一、inode与block

1.1inode和block概述

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

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

512字节*8=4096字节,最常见的4k

●block(块)

连续的八个扇区组成一个block

是文件存取的最小单位

●inode(索引节点)

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

用于存储文件元信息

在这里插入图片描述

1.2inode的内容

1.2.1inode包含文件的元信息

文件的字节数

文件拥有者的User ID

文件的Group ID

文件的读、写、执行权限

文件的时间戳

(不包含文件名)

……

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

示例:
在这里插入图片描述

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

ctime(change time)

最后一次改变文件或目录(属性)的时间

atime(access time)

最后一次访问文件或目录的时间

mtime(modify time)

最后一次修改文件或目录(内容)的时间

1.2.4目录文件的结构

目录文件的结构

目录也是一种文件

目录文件的结构

在这里插入图片描述

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

Linux系统内部不使用文件名,而使用incode号码来识别文件

对于用户,文件名只是incode号码便于识别的别称

1.3inode的号码

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

1.系统找到这个文件名对应的inode号码

2.通过inode号码,获取inode信息

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

查看inode号码的方法

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

ls -i aa.txt
在这里插入图片描述

ls -ai 命令查看当前目录的文件及隐藏文件的所对应的inode号码
在这里插入图片描述

stat命令:查看某个文件的inode信息而查看到inode号码

stat aa.txt
在这里插入图片描述

1.4文件存储小结

硬盘分区后的结构

在这里插入图片描述

访问文件的简单流程

在这里插入图片描述

1.5inode的大小

●inode也会消耗硬盘空间

每个inode的大小

一般是128字节或256字节

●格式化文件系统时确定inode的总数

●使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量

在这里插入图片描述

1.6inode的特殊作用

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

●当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件

●移动或重命名文件时,只改变文件名,不影响inode号码

●打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

二、链接文件

●在Linux下面的链接文件有两种:

●一种类似于Windows的快捷方式功能的文件,可以快速连接到目标文件或目录,这种称为软链接

●另一种则是通过文件系统的inode链接文件来产生新的文件名,而不是产生新文件,这种称之为硬链接

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

2.1.1硬链接

一般情况下,文件名和inode号码是一一对应关系,每个inode号码对应一个文件名。

但是Linux系统允许,多个文件名指向同一个inode号码。这表示可以用不同的文件名来访问同样的内容。

ln 源文件 目标位置

运行此命令后,源文件和目标文件的inode号码相同,都指向同一个inode。inode信息中的“链接数”此时就会增加1

当一个文件拥有多个硬链接时,对文件内容修改,会影响到所有文件名。但删除一个文件名,不会影响另一个文件名的访问。删除一个文件名,就会使得inode信息中的“链接数”减少1
在这里插入图片描述

2.1.2软链接

ln -s 源文件或目录 链接文件或目标位置

软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名

文件2依赖于文件1而存在,如果删除了文件1 ,打开文件2就会报错
在这里插入图片描述

2.2链接文件分类

在这里插入图片描述

三、恢复误删除的文件

删除一个文件,实际上并不清除 inode 节点和 block 的数据,只是在这个文件的父目录里面的 block 中删除这个文件的名字。Linux 是通过 Link 的数量来控制文件删除的,只有 当一个文件不存在任何 Link 的时候,这个文件才会被删除。 在 Linux 系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情况,尤其对于客户企业中一些新手。

3.1恢复EXT文件系统

1.编译安装extundelete

第一步,

先安装两个依赖包 e2fsprogs-libs 和 e2fsprogs-devel, 这两个包在系统安装光盘的/Package 目录下就有,安装wget,使用wget去现网下载extundelete 软件包。

yum -y install e2fsprogs-libs  e2fsprogs-devel  wget

wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

第二步,

安装完依赖包之后,再解压、配置、编译、安装。

tar jxf extundelete-0.2.4.tar.bz2 

cd extundelete-0.2.4进入软件包找到configure配置的脚本

./configure --prefix=/usr/local/extundelete 

make 编译

make install安装

第三步,实验验证,格式化后一个分区后挂载到目录,在目录中创建几个文件,删除一个文件模拟误删文件,

先取消挂载,防止新数据写入将误删数据覆盖掉,

使用软件恢复,extundelete /dev/sdb1 --restore-all

在/root中找到恢复的文件存放处:RECOVERED_FILES

注意:如果报错显示extundelete命令未找到,需要先给该软件的命令位置创建软链接到/usr/sbin目录下,才能使用该命令

ln -s /usr/local/extundelete/bin/* /usr/sbin/

3.2 xfs 类型文件备份和恢复

extundelete 工具仅可以恢复 EXT 类型的文件,无法恢复 CentOS 7 系统默认采用 xfs 类型的文件。针对 xfs 文件系统目前也没有比较成熟的文件恢复工具,所以建议提前做好数 据备份,以避免数据丢失。xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。若系统中未安装 xfsdump与xfsrestore工具,可以通过yum install -y xfsdump命令安装。xfsdump 按照inode 顺序备份一个 xfs 文件系统。

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

xfsdump 的备份级别默认为 0。

xfsdump 的命令格式为:xfsdump -f 备份存放位置要备份路径或设备文件。常用的备份参数包括以下几种:

-f:指定备份文件目录;

-L:指定标签 session label;

-M:指定设备标签 media label;

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

3.2.1xfsdump命令格式

xfsdump命令格式

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

xfsrestore命令格式

xfsrestore -f 恢复文件的位置 存放恢复后文件的位置

3.2.2xfsdump使用限制

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

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

●只能备份xfs文件系统

●备份后的数据只能用xfsrestore解析

●不能备份两个具有相同UUID的文件系统

3.2.3备份和恢复步骤

1.先格式化一个分区 mkfs.xfs /dev/sdb1 (如果该分区已经被格式化过,需要加- f 强制格式化)

将其挂载到/1目录中,mount /dev/sdb1 /1
在这里插入图片描述
2.准备需要备份和恢复实验需要的文件

[root@localhost ~]# cp /etc/passwd /1

[root@localhost 1]# mkdir /1/2

[root@localhost 1]# echo “this is test”>/1/2/test.txt ###复制和创建写入些数据到/1目录中,用于恢复数据实验

[root@localhost 1]# yum -y install tree ###安装tree软件查看/1目录树

[root@localhost 1]# tree /1

/1

├── 2

│ └── test.txt

└── passwd
在这里插入图片描述
3.备份

[root@localhost 1]# yum -y install xfsdump ###安装所需软件

[root@localhost 1]# xfsdump -f /opt/xfs_dump /dev/sdb1 ###将/dev/sdb1分区备份到/opt/xfs_dump(会出现交互性界面让我们确认备份到的位置和需要备份的文件 -> xfs_dump和 -> /dev/sdb1)
在这里插入图片描述
4.恢复

[root@localhost 1]# rm -rf /1/* ###删除/1目录中的内容准备恢复

[root@localhost 1]# xfsrestore -f /opt/xfs_dump /1 ###恢复/opt/xfs_dump的数据到/1中
在这里插入图片描述

四、日志文件的分类

4.1 日志的功能

●用于记录系统,程序运行中发生的各种事件

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

4.2 日志文件的分类

●内核及系统日志

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

●用户日志

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

●程序日志

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

4.3 日志保存位置

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

4.4 主要日志文件介绍

在这里插入图片描述
/var/log/messages:记录Linux内核消息和各种应用程序的公共日志信息,包括启动,I/O错误,网络错误,程序故障等

对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的时间记录信息

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

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

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

/var/log/lastlog:记录每个用户最近的登录时间

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

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

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

yum安装的都存放在/var/log/yum.log中;手工编译安装的都是自己指定的目录

五、日志文件分析

●分析日志文件的目的在于通过浏览日志查找关键信息,对系统服务进行调试,以及判断发生故障的原因等

●对于大多数文本格式的日志文件(如内核及系统日志,大多数的程序日志),只要使用tail,more,less,cat等文本处理工具就可以查看日志内容

●对于一些二进制格式的日志文件(如用户日志),需要使用特定的查询命令

5.1内核及系统日志

5.1.1由系统服务rsyslogd统一管理

软件包:rsyslog-7.4.7-16.el7.x86_64

主要程序:/sbin/rsyslogd

配置文件:/etc/rsyslog.conf

5.1.2日志消息的级别

在这里插入图片描述

5.1.3日志记录的一般格式

在这里插入图片描述

5.3用户日志分析

5.2.1保存目录

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

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

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

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

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

5.2.2分析工具

分析工具

users,who,w,last,lastb

查询当前登录的用户情况:users,who,w命令

users命令只简单的输出当前登录的用户名称,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数

在这里插入图片描述
who命令用户报告当前登录到系统中的每个用户的信息

who命令的默认输出包括用户名,终端类型,登录日期及远程主机,从而系统管理员可以查看当前系统存在哪些不合法用户

在这里插入图片描述

w命令用于显示当前系统中的每个用户及其所运行的进程信息,比users,who命令的输出内容要更加丰富一些

在这里插入图片描述

查询用户登录的历史记录:last,lastb命令

last命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面

通过last命令可以及时掌握Linux主机的登录情况,若发现未经授权的用户登录过,则表示当前主机可能已被入侵
在这里插入图片描述

lastb命令用于查询登录失败的用户记录,如登录的用户名错误,密码不正确等情况都会记录在案。

登录失败的情况属于安全事件,因为这表示可能有人在尝试猜出你的密码

除了使用lastb命令查看以外,还可以直接从安全日志文件/var/log/secure中获得相关信息
在这里插入图片描述
在这里插入图片描述

5.3 程序日志

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

web服务:/var/log/httpd/

access_log,error_log(httpd网站服务程序使用的两个日志文件access_log和error_log,分别记录客户访问事件,错误事件。)

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

access.log , cache.log

FTP服务:/var/log/xferlog

5.3.2分析工具

文本查看,grep过滤检索,webmin管理套件中查看

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

webalizer,awstats等专用日志分析工具

5.3.3日志管理策略

●及时做好备份和归档

●延长日志保存期限

●控制日志访问权限

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

●集中管理日志

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

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

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

猜你喜欢

转载自blog.csdn.net/chengu04/article/details/106930578