inode
http://www.cnblogs.com/itech/archive/2012/05/15/2502284.html
Ex3使用15个inode查询数据块,前12个为直接数据块,直接指向存储数据的数据块,接下来分别为一级间接块,二级间接块,三级间接块:
其中point本来也是数据块,现在拿来做数据块的索引使用,其中ext3的头文件定义为__u32i_block[EXT3_N_BLOCKS]
最大分区:无符号32位整数,block的范围为2^32,4G,按照每个block的size为4KB,所以为4G*4KB=16TB
最大文件:
前面直接指向12个数据块,一级间接块最大为block size/4,block size为数据块的大小,因为一个索引是4个字节,所以除以4,这样计算下来,
最大的文件可以使用的总块数为12+(block size/4)+(block size/4)^2+(block size/4)^3,设置block size为4KB,约为4T
Ext4
ext4使用48位的数据块索引空间,使用如下数据结构替代inode索引方式:
struct ext3_extent { __u32 ee_block; /* first logical block extent covers */ __u16 ee_len; /* number of blocks covered by extent */ __u16 ee_start_hi; /* high 16 bits of physical block */ __u32 ee_start; /* low 32 bigs of physical block */ };
这样查找数据的时候不是每个块都建立一个索引,而且使用连续的数据块,分别只是起始位置,以及连续的块数。
这样在大文件的时候,磁盘IO效率以及查找数据块效率上都有很大的提高。
理论上最大分区为2^48*4KB=1EB,目前由于工具限制只能使用16TB
http://os.51cto.com/art/201205/334497_2.htm