我正在阅读有关EXT2文件系统的资料,有很多问题。
主要依靠以下资源:
http://e2fsprogs.sourceforge.net/ext2intro.html
http://www.virtualblueness.net/Ext2fs-overview/Ext2fs-overview-0.1.html toc7
http://www.nongnu.org/ext2-doc/ext2.html
http://www.tldp.org/LDP/tlk/fs/filesystem.html
- 块组具有以下结构:
|Super Block(backup)|Group Descriptors(backups)|Block Bitmap|Inode Bitmap|Inode Table|Data Blocks|
(如第一个链接所述)这是否意味着索引节点不能声明比Data Block
中可用的数据更多的数据? -
Super Block(backup)
和Group Descriptors(backups)
是否在块组操作过程中得到更新?http://www.virtualblueness.net/Ext2fs-overview/Ext2fs-overview-0.1-7.html注意到
每个block组包含了表中的组描述符(???)然而,只有第一个Copy(在组0中)实际上由内核使用。其他的副本是用于备份,如果主副本丢失,也可以使用损坏。
如果你看过Group Descriptor
的源代码,它没有 entire table of group descriptors
,正如第一句话试图暗示的那样。(也许我错过了)??
整个备份系统没有任何意义。正确的备份必须保留所有的副本,我不明白这是怎么发生的。
3.Inode Table
的目的是什么?
4. Directories
如何创建子目录?目录表中的每个表项都指向Inode Table
中的表项。
谢谢!(我可能还有其他问题。)
有两种类型的块组:备份类型和正常类型:
备份类型:包含超块和块组描述符表加上中正常类型(如下)的所有内容。
普通类型:块位图、Inode位图、Inode表和数据块。
备份块组为组0和组1,以及所有为3、5、7的幂的组。
每个块组描述符表包含多个块组描述符。每个块组有一个块组描述符。因此,如果有450个块组,那么就会有450个块组描述符,在一个块组描述符TABLE中彼此紧挨着。
创建inode表的目的是创建几个空闲的inode,供文件系统稍后使用。ext2/3文件系统创建完成后,不能再创建新的inode。
创建文件系统时设置的固定数字。创建目录的方式如下:选择一个空闲的inode,并选择它来保存目录信息。接下来,选择一个空闲数据块来保存目录条目信息。即使一个空目录在数据块中也包含两个目录条目;一个目录条目用于它自己的目录,另一个用于它的父目录。因此,对于一个新目录,将选择一个inode,并选择一个数据块来保存前两个目录条目。当新的文件或目录被创建时,更多的目录条目将被添加到它的数据块中。
兼容Unix的文件系统需要有索引节点,这是此类文件系统的核心内容。
回想一下,Unix文件系统可能有由link(2)系统调用添加的硬链接。有些文件可以有多个名称,所有这些名称都是等效的。当一个文件被某些进程打开(2)-ed时,它仍然存在于磁盘上,即使该文件的所有名称后来都被取消链接(2)-ed。特别地,这是创建临时文件的方法。
所以实际上,inode是真正的文件(在文件系统中),目录条目包含名称(与磁盘上的inode编号相关联)。
实际上,Ext2已经过时了,已经演变为Ext4。阅读这两个维基百科页面