[ext4]磁盘布局 - group分析
ext4文件系统的磁盘布局是先把磁盘分成一个个相同大小的block块(每个block块的大小默认是4K),然后把这些block块合成一个个group。
group大小最大为256M(默认为256M),其计算公式:
Group_size = (blk_size*8)*blk_size=4096*8*4096= 32768*4096=128M
更详细一点如下,针对第一个group(即group0)而言:
|
Group |
||
|
功能 |
占用块数 |
备注 |
|
Group0 padding |
1024bytes |
仅group0含有 |
|
ext4 super block |
1 block |
仅某些group含有 |
|
Group Descriptors |
many blocks |
仅某些group含有 |
|
Reserved GDT Blocks |
many blocks |
仅某些group含有 |
|
Data Block Bitmap |
1 block |
所有group均含有 |
|
inode Bitmap |
1 block |
所有group均含有 |
|
inode Table |
many blocks |
所有group均含有 |
|
Data Blocks |
many more blocks |
所有group均含有 |
Group0最前面的1024bytes用作它用(比如启动引导等),当然也只有group0中的前1024bytes是保留的,其他任何的group都不会保留。
Ext4 super block大小大约为0x2D0(即720)bytes,如果block块大小为2K或4K,那么super block将存放在第一个block(索引为0)中;如果block块为1K,则super block将存放在第二个block(索引为1)中;如果block块为512bytes(很少设置为这个值了),则super block将存放在第三、四个block(索引为2,3)中。
Group Descriptors blocks(简称GDBs),每一个描述符的大小64byte,GDBs所占用block多少是与卷的大小有关的。
Reserved GDT Blocks(简称RGDTBs),为卷扩容预留的空间。
需要注意的是:superblock有备份机制(关于超级块的备份机制,请阅本系列相关文章),超级块备份时,GDBs数据也是会备份的。而GDBs和RGDTBs一般共计128个blocks。关于flexgroup分析,
Data block bitmap,用于描述本group(即对应所在的group)内各个block块的使用状态,一个bit位对应标识一个block块,如果该bit为0,则表示对应block块为空闲状态,否则表示为使用状态或其它(比如物理上不存在,发生在最后一个group最靠后的位置)。如果一个block块大小为4K,那么可以映射标识4*1024*8=32768个block块的使用状态;由于一个group只有一个Data
Block Bitmap block块,所以一个group组最大为32768*4KB=128MB。
Inode bitmap,用于描述本group(即对应所在的group)内inodetable中各个inode项的使用状态,一个bit位对应标识一个inode项,如果该bit为0,则表示对应inode table的inode项为空闲状态,否则表示为使用状态。Inode
bitmap在每个group中均占用一个block,每个group中可创建文件多少就是由inode bitmap决定的,4K大小的block块可以映射标识4096*8=32768个inode,即是一个group组最多只有32768个inode。,。
Inode table:用于存放inode数据,一个inode数据大小为256bytes,inode block默认为512个block,所以一个group中的文件多少为512*4096/256=8192个。
Datablock,(除去之前那么几类数据,剩余的block全部为data blocks)用于存放普通数据。
注:由于ext4系统引入了Flexible group的概念,本文可以理解为不支持flex_bg特性。
关于flex group分析,请阅本系列其他文章。
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
[ext4]磁盘布局 - group分析的更多相关文章
- [ext4]磁盘布局 - inode bitmap & table
在[磁盘布局 group部分]已经介绍过ext4的整体布局,其中存在两个与inode有关的名称:inode bitmap和inode table. Inode bitmap,用于表示inode tab ...
- [ext4]01 磁盘布局 - block分析
ext4文件系统最基本的分配单元是"block"(块). block是由一组连续的sectors来组成,其大小介于1k~4K之间,当然不可能是任意值,只能是2的整数次幂个secto ...
- [ext4] 磁盘布局 - extent tree
传统的类Unix文件系统,比如Ext3,都是使用一个间接数据块映射表来记录每一个数据块的分配情况的.但是这种机制对于超大文件的存储是有缺陷的,特别是当对超大文件进行删除和截断操作时.映射表会对每一个数 ...
- [ext4]04 磁盘布局 - Meta Block Groups
Meta Block Groups,可以翻译为元块组集. 如果不采用Meta Block Groups特性,在每个冗余备份的超级块的后面是一个完整的(包含所有块组描述符的)块组描述符表的备份.如前所述 ...
- Win10无法安装提示磁盘布局不受UEFI固件支持怎样解决
微软在推出Win10系统以后,就向Win7和Win8.1系统用户提供了免费升级Win10系统的推送,但是用户在安装Win10系统的时候,却有一部分用户反映,遇到提示“无法安装Windows,因为这台电 ...
- ext2磁盘布局
概述 本篇博客主要关注ext2文件系统的磁盘布局,即ext2会在格式化时将磁盘划分成什么样子. ext2磁盘布局 任何Ext2分区中的第一个块从不受Ext2文件系统的管理, ...
- [ext4]03 磁盘布局 – Flexible group分析
Flexible Block Groups (flex_bg),我称之为"弹性块组",是EXT4文件系统引入的一个feature. 所谓Flexible Block Groups, ...
- [ext4]07 磁盘布局 - 块/inode分配策略
Ext4系统从设计上就认为数据局部性是文件系统的文件系统的一个理想品质. 在机械硬盘上,相关联的数据存放在相近的blocks上,可以使得在访问数据时减少磁头驱动器的移动距离,从而加快IO访问. 在SS ...
- [ext4]010 磁盘布局 - 如何查找inode的磁盘位置
在linux系统中,任何一个文件,都有一个inode与其对应,也就是说,在一个文件系统中,一个文件都有唯一的ino来标示他,那么在ext4系统中,ino是如何确定的哪? 当我们新创建的文件或目录时,会 ...
随机推荐
- Android中的WebView实战详解(一)
一.为什么要用WebView? 1.兼容已有的项目2.可动态更新 二.WebView怎样使用? WebView是一个控件,如在布局中设置: <WebView android:id="@ ...
- input的type属性引申的日历组件
HTML5规范里只规定date新型input输入类型,并没有规定日历弹出框的实现和样式.所以,各浏览器根据自己的设计实现日历.目前只有谷歌浏览器完全实现日历功能.相信这种局面很快就会结束,所有的浏览器 ...
- Java程序员应当知道的10个面向对象设计原则
面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注 ...
- 前端学PHP之Smarty模板引擎
前面的话 对PHP来说,有很多模板引擎可供选择,但Smarty是一个使用PHP编写出来的,是业界最著名.功能最强大的一种PHP模板引擎.Smarty像PHP一样拥有丰富的函数库,从统计字数到自动缩进. ...
- jQuery选择器对应的DOM API ——选择元素
英文原文:http://blog.garstasio.com/you-dont-need-jquery/selectors/愚人码头注: 原作者的写这文章的意图是让我们抛弃jQuery,You Don ...
- 工作中的趣事:聊聊ref/out和方法参数的传递机制
0x00 前言 我在之前的游戏公司工作的时候,常常是作为一只埋头实现业务逻辑的码农.在工作之中不常有同事会对关于编程的话题进行交流,而工作之余也没有专门的时间进行技术分享.所以对我而言上家虽然是一家游 ...
- 解决子元素用css float浮动后父级元素高度自适应高度
1.在最后一个子元素后面清除浮动 2.父元素加over-flow:hidden;(副作用:子元素定位不能超出父元素的范围) 3.父元素也一样浮动(最笨的方法): 4.子元素使用inline-block ...
- Linux 搭建svn版本库
一.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端 如果后面执行“svnadmin create /usr/local/svn/sunny”提示 ...
- 使用EPPlus读写xlsx文件
朋友有个需求,想对N张excel表做过滤和合并的处理,拜托我写个小程序.因为用户的背景是非专业用户,因此最好的选择是写个GUI程序,再加上读写excel的需求,所以我的首选就是C#的WinForm了. ...
- WPF自定义控件(2)——图表设计[1]
0.小叙闲言 除了仪表盘控件比较常用外,还有图表也经常使用,同样网上也有非常强大的图表控件,有收费的(DEVexpress),也有免费的.但我们平时在使用时,只想简单地绘一个图,控件库里面的许多功能我 ...