深入解析文件系统原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入解析文件系统原理相关的知识,希望对你有一定的参考价值。

Inode and Block概述

文件储存在硬盘上,硬盘的最小储存单位叫“扇区”(sector),每个扇区拥有512字节。

操作系统从硬盘上读取数据时,不会按照扇区的方式读取,这样读取效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(Block,由多个扇区的空间组成)。这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是4KB,即连续八个sector组成一个Block。Block存储文件数据。

文件数据存储在“块”中,那么还必须找到一个地方存储文件的元信息,比如文件的所属用户、文件所属组、文件的类型、文件的权限、文件的创建时间、文件的修改时间、文件的访问时间、文件使用的Block信息、文件的硬链接数、文件的大小等等属性信息。这种储存文件元信息的区域叫做Inode。中文译名为“索引节点”,也叫i节点。

Inode 和 Block 是文件系统组成的基本核心概念,文件系统是在分区格式化的时候形成的,文件系统负责组织文件在分区上的存放的。

 

注意:

Inode不包含文件名。文件名是储存在目录的目录项中。

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

查看文件的inode信息:stat

在虚拟机上面实验

深入解析文件系统原理_源文件

读取文件内容,查看Atime的改变

深入解析文件系统原理_源文件_02

文件写入内容,查看Mtime/Ctime的改变

深入解析文件系统原理_文件系统_03

修改文件权限,查看Ctime的改变

深入解析文件系统原理_文件系统_04

建硬链接,查看Ctime的修改

深入解析文件系统原理_文件名_05

修改文件名,查看Ctime的改变

深入解析文件系统原理_文件名_06

Touch更新时间,三个时间全部修改

深入解析文件系统原理_文件名_07

目录文件的结构

目录也是一种文件

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

         文件系统内部不使用文件名引用文件,而是使用inode号码来识别文件。对于文件系统来说,文件名只是inode号码便于识别的别称,文件名是目录的数据。

Inode的号码

文件系统访问文件的步骤:

1.用户在目录中看到要访问的文件名

2.通过目录的数据找到这个文件名对应的inode号码

3.通过inode号码,获取inode信息(文件的元信息)

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

 

查看文件的inode号码

ls -i 文件名

stat 文件名

深入解析文件系统原理_源文件_08

删除指定inode号所对应的文件

格式:find ./ -inum inode号

示例:当文件名中包含特殊符号时我们可以删除其inode号达到删除文件的目的

深入解析文件系统原理_源文件_09

从/root/目录下查找3天内修改的文件,并复制到/tmp下

深入解析文件系统原理_文件名_10

-amin +n 查找n分钟以前被访问过的所有文件。


-atime -n 查找n天以内被访问过的所有文件。


-cmin +n 查找n分钟以前文件状态被修改过的所有文件。


-ctime +n 查找n天以前文件状态被修改过的所有文件。


-mmin +n 查找n分钟以前文件内容被修改过的所有文件。


-mtime +n 查找n天以前文件内容被修改过的所有文件。

查看文件系统的inode与block的信息

df -i 设备名(文件系统已挂载时查询,查询inode总数与已用数量)

dumpe2fs -h 设备名(文件系统无需挂载)ext有效

tune2fs -l 设备名(文件系统无需挂载)ext有效

 

示例:

加一块磁盘

深入解析文件系统原理_文件系统_11

重启

深入解析文件系统原理_文件名_12

磁盘分区

深入解析文件系统原理_文件系统_13

深入解析文件系统原理_文件系统_14

深入解析文件系统原理_文件系统_15


深入解析文件系统原理_文件名_16


格式化时指定文件系统的inode个数与block大小

mkfs.ext4 -N inode数 -b 块大小(单位字节) 设备名

 

示例:inode数设定为60000个,block大小为1KB

深入解析文件系统原理_文件系统_17

深入解析文件系统原理_文件系统_18

深入解析文件系统原理_源文件_19

解决inode耗尽导致的磁盘故障

1.  删除不使用的文件,配置磁盘配额

cd /data

touch 1..10000.txt

深入解析文件系统原理_文件系统_20

2.将文件备份,重新格式化此文件系统,指定较多的inode个数

Linux文件系统软硬链接原理

硬链接(hard link)

方法:ln 源文件 目标文件

特点:

         硬链接指向的文件inode号,新生成的硬链接文件的inode号与源文件的inode号相同,不可针对目录进行硬链接,必须在同一文件系统内。删除一个文件名,不影响另外一个的访问。

 

深入解析文件系统原理_文件系统_21

深入解析文件系统原理_文件名_22


软链接(soft link)

方法:ln -s 源文件或目录 目标文件或目录

特点:

         软连接又被称为符号链接

         软链接指向的文件名,新生成的软链接文件的inode号与源文件不同,目录也可以生成软链接,软链接文件与源文件可以不在同一文件系统内,软链接文件的内容是源文件的路径,读取时系统会自动导向源文件路径,根据源文件找到文件内容,但当源文件移动或重命名时,软链接将报错。

深入解析文件系统原理_文件系统_23

重命名源文件,硬链接不受影响,但软链接失效

深入解析文件系统原理_文件名_24

深入解析文件系统原理_文件名_25









以上是关于深入解析文件系统原理的主要内容,如果未能解决你的问题,请参考以下文章

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

深入理解Linux文件系统

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

深入了解Linux文件系统

Windows操作系统深入解析原理

NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)