解析文件系统原理的基本知识

Inodeand Block概述

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

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

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

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

注意:

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

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

查看文件的inode信息:stat

[root@localhost ~]# stat install.log

AtimeMtimeCtime详解:

英文          别称        中文翻译         何时修改           查看命令

Access        Atime        访问时间          读取               ls -lu

Modify        Mtime       修改时间         写入、修改           ls -l

Change/Create  Ctime.     改变时间/创建时间  修改文件名、写入   Is-lc

修改、改权限、做链接

操作示例:

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

[root@localhost ~]# echo haha >a.txt

[root@localhost ~]# stat a.txt

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

[root@localhost ~]# stat a.txt

创建硬链接,查看Ctime的修改

[root@localhost ~]# stat a.txt

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

[root@localhost~]# stat a.txt

目录文件的结构

目录也是一种文件

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

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

Inode的号码

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

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

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

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

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

inode一般为128字节或256字节,每个inode中都记录着文件所使用的block号,每条记录着block号的信息占用4字节。inode中关于block号的记录一共包含有12个直接、1个间接、1个双间接和1个三间接。"

12个直接连接,共占用48字节磁盘空间,包含着12个直接指向block号的信息,若此文件系统默认的block大小为4KB,则仅仅可以指向12*4=48KB大小的文件内容。

然而我们的文件若较大时,则需要使用到更多的block,肯定要多于12block,进而有间接、双间接和三间接。

间接指的是,inode中所记录这4字节的内容,所指向一个block,这个block中存放的不是真是的文件内容,而是真实文件所存放位置的block号信息,若每个block大小为4KB,那么可以存放1024block号信息,1个间接可以存放的文件大小为1024*4=4096KB

双间接则可以存放更大的文件内容,即在间接的基础上再进行间接,若此时block

小为默认的4KB1个双间接可以存放的文件内容大小为:1024*1024*4-4096MB

三间接即在双间接的基础上在进行间接,若此时block大小为默认的4KB,则1个三间

接可以存放的文件内容大小为:1024*1024*1024*4=4096GB

也就是说,在一个block大小默认为4KB的文件系统中,一个文件最大存储可以达到48KB+4096KB+4096MB+4096GB,约为4100GB

查看文件的inode号码

Is -i 文件名

stat 文件名

示例:

[root@localhost~]# Is -iaa.txt1186522 aa.txt

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

格式:find./-inuminode-execrm-if\;

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

[root@localhost~]#touchabc de!4'txt

[root@localhost~]#Is -li

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

[root@agent ~]# find /root/-mtime -3-a -type f -exec cp {}/tmp\;

查看文件系统的inodeblock的信息

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

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

tune2fs1设备名(文件系统无需挂载)

示例:

[root@localhost ~]# df-i/data

 

posted @ 2021-09-27 11:09  lucky淼  阅读(568)  评论(0)    收藏  举报