liunx ext2

liunx 使用 ext2 的文件系统的管理方式:

liunx 主要使用 superblock、inode,bolck 的方式去管理文件系统

inode:主要存储各个文件的所有者,以及相应的权限,文件信息

block:实际文件二进制的内容存储

superblock:记录 inode 的使用量,block 的文件使用量,等

 

那 ext2 最简单的方式是

一个文件或者目录使用一个 inode,这个 inode 大概有 128 字节。其中 48 个字节用来存储它保存的实际文件的 block 节点,保存一个 block 的需要 4 字节的大小,所以 48 字节可以保存 12 个 block

一个 block 可以设置为的大小为 1k,2K,4k 大小

当我们常见一个文件或者目录的时候,使用一个 inode,并且分配好 block 来保存文件内容,但是一个 inode 仅仅可以保存 12 个 block,一个 block 假设最大设置为 4K,那么一个文件也不过保存了 12*4 = 48k 的大小

根本保存不了我们平常见到的 100 多 m 的文件,那么 ext2 怎么解决这个问题呢,很简单,在使用一个 block 来保存,另外的 block 地址,就跟俄罗斯套娃一样,第一层 block 保存第二层的 block 的地址,那么第二层就实际可以保存,假设一个 block 的大小为 1k,那么可以保存 1024 / 4 = 256 个第二层 block 的信息,如果每一层都使用用来保存新一层的信息,那么这个容量就跟树一样展开,最后一层保存的内容也可以得到极大的扩展,那么 liunx 最大可以保存多少层,理论上可以无限层,但是 ext2 最大只有三层。

而对于目录来说,则没有实际文件的说法了,那个目录是怎么跟文件关联起来的么,首先创建一个目录也创建一个 inode 节点和 block 节点,那么目录的 inode 基本上也是爆粗所有人,权限等一些信息啦,但是目录的 block 却用来保存属于它文件的文件 inode 的 id,以及文件名称,通过目录的 block 来再次追踪它底下文件的 inode 内容。

 

superblock 里面保存了一些 inode 使用了多少个,还剩多少个,对于 block 的信息也如此,所以我们可以通过查询一些磁盘的总计的信息就是用 superblock 里面来