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

本文详细介绍了Linux文件系统,包括inode和block的概念,inode表结构,三种时间戳,目录的工作原理,访问文件的流程,以及如何使用extundelete进行文件恢复。讨论了文件删除后数据如何处理,并提供了数据恢复工具的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、inode和block概述

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

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

block(块)

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

是文件存取的最小单位

inode(索引节点)

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

用干存储文件元信息

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

二、 inode表结构

每个文件的属性信息,比如:文件的大小,时间,类型,权限等,称为文件的元数据(meta data)

元数据是存放在inode (index node)表中。inode表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。

每一个inode表记录对应的保存了以下信息:

inode number节点号

文件类型

权限

UID

GID

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据

硬盘上最小的存储单位为扇区(512字节)

文件存储的最小单位为块8个扇区组成为4k

每个分区都有自己的分区字节

三、三种时间戳

当新创建一个文件时,这个文件的最后访问时间、最后内容修改时间、最后状态更新时间都是一致的。修改一个文件的权限状态信息,只会更新这个文件的最后状态修改时间

对比事例2,这里最后状态时间、最后内容改变时间都被更新了。当修改一个文件时,文件的Modify.Change会被更新

当查看文件时,文件的Access time会更新。

当需要了解这个文件有没有被修改过- Modify Time

当需要了解这个文件最后被查看的时间-Access Time

当需要了解这个文件权限最后变动的时间- Change Time

新建文件的时候三种状态时间是一样的

写内容( echo没打开)最后两种变

修改权限只有最后一种变最近改动

vim打开只有第一种变

四、目录

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系

文件引用一个是inode号

是通过文件名来引用一个文件

一个目录是目录下的文件名和文件inode号之间的映射

cp和inode

cp命令:

分配一个空闲的inode号,在inode表中生成新条目

在目录中创建一个目录项,将名称与inode编号关联

拷贝数据生成新的文件

rm命令:

链接数递减,从而释放的inode号可以被重用

把数据块放在空闲列表中

删除目录项

数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

mv和inode

·如果mv命令的目标和源在同一设备,

不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!

删除旧的目录对应关系新建目录对应关系

硬盘分区后的结构

五、访问文件的简单流程

inode的大小

inode也会消耗硬盘空间

每个inode的大小

一般是128字节或256字节

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

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

六、文件恢复extundelete

删除一个文件,实际上并不清除inode 节点和block的数据,只是在这个文件的父目录里面的 block 中,删除这个文件的名字。Linux是通过Link的数量来控制文件删除的,只有当一个文件不存在任何Link的时候,这个文件才会被删除。

在Linux系统运维工作中,经常会遇到因操作不慎、操作错误等导致文件数据丢失的情况,尤其对于客户企业中一些新手。当然,这里所指的是彻底删除,即已经不能通过“回收站"找回的情况,比如使用"rm -rf"来删除数据。针对Linux下的EXT文件系统,可用的恢复工具有debugfs、ext3grep、extundelete等。其中extundelete是一个开源的 Linux数据恢复工具,支持ext3、ext4文件系统。

恢复EXT类型的文件

编译安装extundelete

在编译安装extundelete之前需要先安装两个依赖包 e2fsprogs-libs和e2fsprogs-devel,这两个包在系统安装光盘的/Package目录下就有,使用rpm 或yum命令将其安装。e2fsprogs-devel安装依赖于libcom_err-devel包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值