E文详细介绍:https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout

整体来讲,是在ext3的基础上做了些改进。

下面来看看ext3与ext4的对比:

一、磁盘布局对比

ext4 中采用了元块组(metablock group)的概念。所谓元块组就是指块组描述符可以存储在一个数据块中的一些连续块组。仍然以 128MB 的块组(数据块为 4KB)为例,ext4 中每个元块组可以包括 4096 / 64 = 64 个块组,即每个元块组的大小是 64 * 128 MB = 8 GB。

二、节点表对比

索引节点结构并没有发生太大变化,不同之处在于最后添加了 5 个与时间有关的字段,这是为了提高时间戳的精度。

索引节点中的 i_block 字段保持不变,但是由于 extent 概念的引入,对于这个数组的使用方式已经改变了,其前 3 个元素一定是一个ext4_extent_header 结构,后续每 3 个元素可能是一个ext4_extent 或ext4_extent_idx 结构,这取决于所表示的文件的大小。这种设计可以有效地表示连续存放的大文件,

1、ext3中i_block字段使用

i.i_block Offset

Where It Points

0 to 11

Direct map to file blocks 0 to 11.

12

Indirect block: (file blocks 12 to ($block_size / 4) + 11, or 12 to 1035 if 4KiB blocks)

Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Direct map to ($block_size / 4) blocks (1024 if 4KiB blocks)

13

Double-indirect block: (file blocks $block_size/4 + 12 to ($block_size / 4) ^ 2 + ($block_size / 4) + 11, or 1036 to 1049611 if 4KiB blocks)

Double Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Map to ($block_size / 4) indirect blocks (1024 if 4KiB blocks)

Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Direct map to ($block_size / 4) blocks (1024 if 4KiB blocks)

14

Triple-indirect block: (file blocks ($block_size / 4) ^ 2 + ($block_size / 4) + 11 to ($block_size / 4) ^ 3 + $block_size / 4) ^ 2 + ($block_size / 4) + 12, or 1049611 to 1074791436 if 4KiB blocks)

Triple Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Map to ($block_size / 4) double indirect blocks (1024 if 4KiB blocks)

Double Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Map to ($block_size / 4) indirect blocks (1024 if 4KiB blocks)

Indirect Block Offset

Where It Points

0 to ($block_size / 4)

Direct map to ($block_size / 4) blocks (1024 if 4KiB blocks)

2、ext4中i_block字段使用

Ext4在ext3的基础上增加了extern取代了ext3的直接、间接、二级间接和三级间接块的形式来定位磁盘中的数据块

其中相关结构体如下:

 /** This is the extent on-disk structure.* It's used at the bottom of the tree.*/struct ext4_extent {__le32  ee_block;       /* first logical block extent covers */__le16  ee_len;         /* number of blocks covered by extent */__le16  ee_start_hi;    /* high 16 bits of physical block */__le32  ee_start;       /* low 32 bits of physical block */};/** This is index on-disk structure.* It's used at all the levels except the bottom.*/struct ext4_extent_idx {__le32  ei_block;       /* index covers logical blocks from 'block' */__le32  ei_leaf;        /* pointer to the physical block of the next ** level. leaf or next index could be there */__le16  ei_leaf_hi;     /* high 16 bits of physical block */__u16   ei_unused;};/** Each block (leaves and indexes), even inode-stored has header.*/struct ext4_extent_header {__le16  eh_magic;       /* probably will support different formats */__le16  eh_entries;     /* number of valid entries */__le16  eh_max;         /* capacity of store in entries */__le16  eh_depth;       /* has tree real underlying blocks? */__le32  eh_generation;  /* generation of the tree */
};

ext4 笔记一(与ext3比较)相关推荐

  1. linux 2.6.39 ext3 ext4 更快 tf,ext3,ext4,xfs,jfs,reiserfs和btrfs文件系统性能对比(转载)...

    转载自:http://www.cnblogs.com/tommyli/p/3201047.html#top http://blog.csdn.net/kickxxx/article/details/9 ...

  2. linux 文件系统 xfs、ext4、ext3 的区别

    前言 centos7.0开始默认文件系统是xfs,centos6是ext4,centos5是ext3 ext3介绍 ext3和ext4的最大区别在于,ext3在fsck时需要耗费大量时间(文件越多,时 ...

  3. Linux文件系统ext3与ext4主要区别

    很长一段时间以来,ext3是很多linux发行版默认的文件系统,现在ext4已经发布,并且已经有发行版开始使用ext4作为默认的文件系统了(其实最初的时候ext4是作为ext3的扩展,但是为了保证ex ...

  4. ext3格式化成ext4

    Ext4 的功能 Linux 支持几个不同的文件系统.这些文件系统中,一些是专用的网络文件系统或为其他操作系统开发的文件系统,但绝大部分还是用作 Linux 本地文件系统 - 您可以将 Linux 根 ...

  5. mysql ext3 ext4_Mysql如何选择文件系统?(ext4 vs ext3 vs jfs vs xfs vs reise

    如何提高mysql的性能?正确的选择文件系统,绝对是一个有效的方法之一.EXT4已经出现一段时间了,mysql在EXT4下的表现如何? 本文对当前linux几款常用的文件系统(ext4,jfs,rei ...

  6. linux文件系统什么格式转换,什么是Ext2,Ext3和Ext4以及如何创建和转换Linux文件系统...

    我用我的Fedora旧系统进行测试,我从ext2转换为ext3,EXT2 到ext4和ext3到ext4文件系统成功. 按照本指南任何人都可以巧妙地转换自己的文件系统,但我仍然想提醒你将在此之前,因为 ...

  7. indes.php默认文件,ext3,ext4,xfs,jfs,reiserfs和btrfs文件系统性能对比(转载)

    转载自:http://www.cnblogs.com/tommyli/p/3201047.html#top http://blog.csdn.net/kickxxx/article/details/9 ...

  8. Linux笔记 No.17---(磁盘分区fdisk,gdisk,parted、格式化mkfs,mke2fs、挂载mount、卸载umount、df、du、lsof命令)

    文章目录 一.磁盘 (一)机械硬盘(HDD) 1.基本组成 2.逻辑结构 (二)固态硬盘(SSD) 二.硬盘分区 (一)基本概念 1. MBR(MS-DOS 主引导记录区)方案 2.GPT(GUID ...

  9. B站兄弟连Linux视频笔记

    目录 文件处理 ls预览 mkdir创建目录 rmdir删除空目录 pwd显示当前路径 cd切换目录 cp复制文件或目录 mv移动文件或目录 rm删除 touch创建文件 cat查看文件内容 more ...

最新文章

  1. JavaScript 全选函数的实现
  2. 岛国科普第2弹-再造人类生命的神奇细胞Human.Life.Our.Amazing.Cell
  3. 百度地图API使用之实现定位
  4. linux 扫描仪 程序,Linux桌面的4种扫描工具
  5. 【ARM】数据操作指令(上)
  6. 学习一项新技能的公式
  7. IE兼容问题 动态生成的节点IE浏览器无法触发
  8. 云上更安全?亚马逊云科技宣布将持续加大在中国区域安全合规领域投入
  9. Vue-cli项目中路由的基础用法,以及路由嵌套
  10. mysql 模式名表名不支持_MySQL sql_mode 说明(及处理一起sql_mode引发的问题)
  11. 研究svg编辑器过程中遇到的问题总结
  12. Java后台获取Cookie
  13. 如何使用PDF阅读器将PDF转换成图片
  14. 如何去痘痘最快方法简单
  15. elementUI的表格标题换行
  16. matlab2019b classification learner使用笔记
  17. 明尼苏达员工满意度量表包括哪些内容?
  18. 浮点型数据的输入和输出(C语言)
  19. xshell (sed 命令)
  20. SpringCloud(3)——SpringDataJpa之EntityManager的CRUD

热门文章

  1. 固定Java窗口的大小
  2. 英文论文中的accuracy与precision的区别
  3. 磁盘配额--对磁盘容量文件数量进行限制
  4. 刚买的新树莓派怎样用(树莓派新手入门)
  5. 【ESP32_8266_BT篇(三)】GATTATT协议规范
  6. 十年项目经理总结的项目质量管理十要点
  7. DAPM之四:dapm机制深入分析(下)
  8. colt mrr_Learning To Rank 介绍
  9. java反射机制的实现原理 (一)
  10. [C/C++后端开发学习] 7 tcp服务器的epoll实现以及Reactor模型