阅读:2172回复:5
linux文件系统中超级块的困惑。
看到有个资料写着
一个文件系统总是由它的superblock来定义的,所以创建文件系统的同时superblock也被创建。它包含了文件系统的一些基本参数,例如文件系统中的数据块(data blocks)数和最大文件数等等。因为superblock包含了一些临界数据,以便于进行灾难性的恢复。缺省的superblock总是固定地位于文件系统所在磁盘分区的开始处。Superblock还有一个备份叫做冗余superblock,就像DOS中的文件分配表的副本。冗余superblock和缺省的superblock不一样,它被分散地保存在磁盘分区上。 从这个解释来看超级块就象是windows系统的文件分配表。 可是又看到一个资料: Block group:包含如下信息: Super block,Group descripts,block bitmap,inode bitmap,inode table,Data block 从这个来看,super block又好象是包含在block group中,如果是这样的话,那么 操作文件的时候,文件系统又是通过什么来查找到该文件对应的block group呢? |
|
沙发#
发布于:2005-03-29 23:48
My opnion is, Linux get block group information through super block. when you regist a file system, the read_super function tell system how to read the super block. When you mount the file system, it tells the system, where to read the file system (e.g. /dev/hd1). Through these two information, linux could get the super block information, then it can get the block group information.
|
|
板凳#
发布于:2005-03-30 09:03
那到底这个superblock是类似一个文件分配表一样保存在磁盘的头几个磁道。
还是分散分配到各个block group中呢? |
|
地板#
发布于:2005-03-30 11:47
我的感觉是,每个block group 上面就是一个文件系统。
|
|
地下室#
发布于:2005-04-16 20:51
ext3中是把分区分成很多个block group的,block group里面的结构就如你所说的,包括super block ,group description等。要决定一个文件在哪个block里面 要首先看super block的结构,确定很多的基本信息,包括每个block group包含多少个block,每个block的大小等。然后顺序到相应的block group的inode table里面去找文件的inode,以得到文件的信息。
比如每个block group包含200个inode,而你要找的文件的inode是203,那么你就要去第三个block group的第3个inode。以找到文件的内容的blok号码。 详细的内容可以看 ULK 2nd |
|
5楼#
发布于:2005-04-22 22:43
每个block group就是一个磁盘分区,也就是一个文件系统,它的开始是super block,里面有各种信息,当然也包括你要查找的文件在哪个block中!这样说对吗?
|
|