深入解析文件系统原理
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的改变
文件写入内容,查看Mtime/Ctime的改变
修改文件权限,查看Ctime的改变
建硬链接,查看Ctime的修改
修改文件名,查看Ctime的改变
Touch更新时间,三个时间全部修改
目录文件的结构
目录也是一种文件
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
文件系统内部不使用文件名引用文件,而是使用inode号码来识别文件。对于文件系统来说,文件名只是inode号码便于识别的别称,文件名是目录的数据。
Inode的号码
文件系统访问文件的步骤:
1.用户在目录中看到要访问的文件名
2.通过目录的数据找到这个文件名对应的inode号码
3.通过inode号码,获取inode信息(文件的元信息)
4.根据inode信息,找到文件数据所在的block,读出数据
查看文件的inode号码
ls -i 文件名
stat 文件名
删除指定inode号所对应的文件
格式:find ./ -inum inode号
示例:当文件名中包含特殊符号时我们可以删除其inode号达到删除文件的目的
从/root/目录下查找3天内修改的文件,并复制到/tmp下
‘-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有效
示例:
加一块磁盘
重启
磁盘分区
格式化时指定文件系统的inode个数与block大小
mkfs.ext4 -N inode数 -b 块大小(单位字节) 设备名
示例:inode数设定为60000个,block大小为1KB
解决inode耗尽导致的磁盘故障
1. 删除不使用的文件,配置磁盘配额
cd /data
touch 1..10000.txt
2.将文件备份,重新格式化此文件系统,指定较多的inode个数
Linux文件系统软硬链接原理
硬链接(hard link)
方法:ln 源文件 目标文件
特点:
硬链接指向的文件inode号,新生成的硬链接文件的inode号与源文件的inode号相同,不可针对目录进行硬链接,必须在同一文件系统内。删除一个文件名,不影响另外一个的访问。
软链接(soft link)
方法:ln -s 源文件或目录 目标文件或目录
特点:
软连接又被称为符号链接
软链接指向的文件名,新生成的软链接文件的inode号与源文件不同,目录也可以生成软链接,软链接文件与源文件可以不在同一文件系统内,软链接文件的内容是源文件的路径,读取时系统会自动导向源文件路径,根据源文件找到文件内容,但当源文件移动或重命名时,软链接将报错。
重命名源文件,硬链接不受影响,但软链接失效
以上是关于深入解析文件系统原理的主要内容,如果未能解决你的问题,请参考以下文章