Ext3和Ext4文件系统区别

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

 

posted @ 2014-04-04 18:13  小郭学路  阅读(2100)  评论(0编辑  收藏  举报