zoukankan      html  css  js  c++  java
  • [ext4]磁盘布局

    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 未本地化版本许可协议进行许可。


  • 相关阅读:
    (24)码表
    (23)IO之打印流 PrintStream & Printwriter
    (22)Properties,这不会Io流中的类,但是通常和IO流中的一些流配合使用
    (21)IO流之对象的序列化和反序列化流ObjectOutputStream和ObjectInputStream
    (20)IO流之SequenceInputStream 序列流
    01.vue基础
    02.1插值操作-Mustache语法
    jQuery对节点的增删改查和一些常用的逻辑处理
    递归 阶乘
    电脑远程连接
  • 原文地址:https://www.cnblogs.com/youngerchina/p/5624497.html
Copyright © 2011-2022 走看看