Linux与windows的文件系统结构

时间:2021-10-25 06:54:17

昨天新哥问我iNode的区别,支支吾吾说了好久也没讲清楚,自己回来赶紧百度了一下

照例先搬砖

一.文件存储

文件存储在硬盘上,硬盘的最小存储单位叫做“扇区”。每个扇区存512字节,操作系统读取硬盘的时候,不会一个个扇区地读取,这样

效率太低,而是一次连续地读取多个扇区,即一次性读取一个块。 这种由多个扇区组成的“块”,是文件存取的最小单位。“块”的大小,最常见的是

4kn,即连续八个sector组成一个block。

文件数据都存储在“块”中,那么很显然,我们还必须找到一个地方存储文件的元信息,比如文件的创建者,文件的创建日期,

文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为“索引节点”

inode包含文件的元信息,包括以下内容

1.文件的字节数

2.文件拥有者的userID

3.文件的GroupID

4.文件的读.写.执行权限

5.文件的时间戳 ctime指的是inode上一次改变 的时间(权限,属性)

                     mtime指的是inode上一次修改的时间(内容)

                    atime指的是上一次的访问时间

                    但实际上,会因为修该内容而导致mtime(属性)发生变化,从而间接引起ctime变化

二.inode的大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存文件数据;另一个是

iNode区,存放inode所包含的信息,每个inode节点的大小,一般是128字节或256字节。inode节点的总数,

在格式化时就给定。

unix系统内部不使用文件名,而是使用inode号码来识别文件。

打开文件的过程

1.系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;

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

一个inode对应多个文件的情况称之为硬连接,修改一个文件内容会影响到所有文件名

但删除一个文件不会影响到另外一个文件的访问

二.Windows Fat文件结构

保留扇区

      位于最开始的位置。第一个保留扇区是引导区(分区引导)

FAT区域

      它包含有两份文件分配表,冗余考虑,它是分区信息的映射表指示簇是如何存储的

根目录区域

       它是根目录中存储文件和目录信息的目录表,在FAT32下它可以存在分区中的任何位置。

数据DATA区

Linux与windows的文件系统结构

整个磁盘应该是这样

 

 

Linux与windows的文件系统结构

我们通过bpb,获取每个fat表的所占字节,保留扇区,从而得知fdt的起始扇区

通过fdt得到文件的首簇号,并通过首簇号得到文件的起始扇区位置。

读取文件在数据区中的记录。

个人感觉,通过fdt表定位到文件首簇,通过fat表(它记录着文件如何被分散在不同的扇区中),形成簇链。