Ext4 超级块详解
转载:http://blog.csdn.net/sunlei0625/article/details/79011946
先上图:
The Super Block
The superblock records various information about the enclosing filesystem, such as block counts, inode counts, supported features, maintenance information, and more.
If the sparse_super feature flag is set, redundant copies of the superblock and group descriptors are kept only in the groups whose group number is either 0 or a power of 3, 5, or 7. If the flag is not set, redundant copies are kept in all groups.
The superblock checksum is calculated against the superblock structure, which includes the FS UUID.
The ext4 superblock is laid out as follows in struct ext4_super_block
:
Offset | Size | Name | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0 | __le32 | s_inodes_count | Total inode count. | ||||||||||||||||||||||||||||||
0x4 | __le32 | s_blocks_count_lo | Total block count. | ||||||||||||||||||||||||||||||
0x8 | __le32 | s_r_blocks_count_lo | This number of blocks can only be allocated by the super-user. | ||||||||||||||||||||||||||||||
0xC | __le32 | s_free_blocks_count_lo | Free block count. | ||||||||||||||||||||||||||||||
0x10 | __le32 | s_free_inodes_count | Free inode count. | ||||||||||||||||||||||||||||||
0x14 | __le32 | s_first_data_block | First data block. This must be at least 1 for 1k-block filesystems and is typically 0 for all other block sizes. | ||||||||||||||||||||||||||||||
0x18 | __le32 | s_log_block_size | Block size is 2 ^ (10 + s_log_block_size). | ||||||||||||||||||||||||||||||
0x1C | __le32 | s_log_cluster_size | Cluster size is (2 ^ s_log_cluster_size) blocks if bigalloc is enabled, zero otherwise. | ||||||||||||||||||||||||||||||
0x20 | __le32 | s_blocks_per_group | Blocks per group. | ||||||||||||||||||||||||||||||
0x24 | __le32 | s_clusters_per_group | Clusters per group, if bigalloc is enabled. | ||||||||||||||||||||||||||||||
0x28 | __le32 | s_inodes_per_group | Inodes per group. | ||||||||||||||||||||||||||||||
0x2C | __le32 | s_mtime | Mount time, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x30 | __le32 | s_wtime | Write time, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x34 | __le16 | s_mnt_count | Number of mounts since the last fsck. | ||||||||||||||||||||||||||||||
0x36 | __le16 | s_max_mnt_count | Number of mounts beyond which a fsck is needed. | ||||||||||||||||||||||||||||||
0x38 | __le16 | s_magic | Magic signature, 0xEF53 | ||||||||||||||||||||||||||||||
0x3A | __le16 | s_state |
File system state. Valid values are:
|
||||||||||||||||||||||||||||||
0x3C | __le16 | s_errors |
Behaviour when detecting errors. One of:
|
||||||||||||||||||||||||||||||
0x3E | __le16 | s_minor_rev_level | Minor revision level. | ||||||||||||||||||||||||||||||
0x40 | __le32 | s_lastcheck | Time of last check, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x44 | __le32 | s_checkinterval | Maximum time between checks, in seconds. | ||||||||||||||||||||||||||||||
0x48 | __le32 | s_creator_os |
OS. One of:
|
||||||||||||||||||||||||||||||
0x4C | __le32 | s_rev_level |
Revision level. One of:
|
||||||||||||||||||||||||||||||
0x50 | __le16 | s_def_resuid | Default uid for reserved blocks. | ||||||||||||||||||||||||||||||
0x52 | __le16 | s_def_resgid | Default gid for reserved blocks. | ||||||||||||||||||||||||||||||
These fields are for EXT4_DYNAMIC_REV superblocks only.
Note: the difference between the compatible feature set and the incompatible feature set is that if there is a bit set in the incompatible feature set that the kernel doesn't know about, it should refuse to mount the filesystem. e2fsck's requirements are more strict; if it doesn't know about a feature in either the compatible or incompatible feature set, it must abort and not try to meddle with things it doesn't understand... |
|||||||||||||||||||||||||||||||||
0x54 | __le32 | s_first_ino | First non-reserved inode. | ||||||||||||||||||||||||||||||
0x58 | __le16 | s_inode_size | Size of inode structure, in bytes. | ||||||||||||||||||||||||||||||
0x5A | __le16 | s_block_group_nr | Block group # of this superblock. | ||||||||||||||||||||||||||||||
0x5C | __le32 | s_feature_compat |
Compatible feature set flags. Kernel can still read/write this fs even if it doesn't understand a flag; fsck should not do that. Any of:
|
||||||||||||||||||||||||||||||
0x60 | __le32 | s_feature_incompat |
Incompatible feature set. If the kernel or fsck doesn't understand one of these bits, it should stop. Any of:
|
||||||||||||||||||||||||||||||
0x64 | __le32 | s_feature_ro_compat |
Readonly-compatible feature set. If the kernel doesn't understand one of these bits, it can still mount read-only. Any of:
|
||||||||||||||||||||||||||||||
0x68 | __u8 | s_uuid[16] | 128-bit UUID for volume. | ||||||||||||||||||||||||||||||
0x78 | char | s_volume_name[16] | Volume label. | ||||||||||||||||||||||||||||||
0x88 | char | s_last_mounted[64] | Directory where filesystem was last mounted. | ||||||||||||||||||||||||||||||
0xC8 | __le32 | s_algorithm_usage_bitmap | For compression (Not used in e2fsprogs/Linux) | ||||||||||||||||||||||||||||||
Performance hints. Directory preallocation should only happen if the EXT4_FEATURE_COMPAT_DIR_PREALLOC flag is on. | |||||||||||||||||||||||||||||||||
0xCC | __u8 | s_prealloc_blocks | # of blocks to try to preallocate for ... files? (Not used in e2fsprogs/Linux) | ||||||||||||||||||||||||||||||
0xCD | __u8 | s_prealloc_dir_blocks | # of blocks to preallocate for directories. (Not used in e2fsprogs/Linux) | ||||||||||||||||||||||||||||||
0xCE | __le16 | s_reserved_gdt_blocks | Number of reserved GDT entries for future filesystem expansion. | ||||||||||||||||||||||||||||||
Journaling support valid if EXT4_FEATURE_COMPAT_HAS_JOURNAL set. | |||||||||||||||||||||||||||||||||
0xD0 | __u8 | s_journal_uuid[16] | UUID of journal superblock | ||||||||||||||||||||||||||||||
0xE0 | __le32 | s_journal_inum | inode number of journal file. | ||||||||||||||||||||||||||||||
0xE4 | __le32 | s_journal_dev | Device number of journal file, if the external journal feature flag is set. | ||||||||||||||||||||||||||||||
0xE8 | __le32 | s_last_orphan | Start of list of orphaned inodes to delete. | ||||||||||||||||||||||||||||||
0xEC | __le32 | s_hash_seed[4] | HTREE hash seed. | ||||||||||||||||||||||||||||||
0xFC | __u8 | s_def_hash_version |
Default hash algorithm to use for directory hashes. One of:
|
||||||||||||||||||||||||||||||
0xFD | __u8 | s_jnl_backup_type |
If this value is 0 or EXT3_JNL_BACKUP_BLOCKS (1), then the s_jnl_blocks field contains a duplicate copy of the inode's i_block[] array and i_size .
|
||||||||||||||||||||||||||||||
0xFE | __le16 | s_desc_size | Size of group descriptors, in bytes, if the 64bit incompat feature flag is set. | ||||||||||||||||||||||||||||||
0x100 | __le32 | s_default_mount_opts |
Default mount options. Any of:
|
||||||||||||||||||||||||||||||
0x104 | __le32 | s_first_meta_bg | First metablock block group, if the meta_bg feature is enabled. | ||||||||||||||||||||||||||||||
0x108 | __le32 | s_mkfs_time | When the filesystem was created, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x10C | __le32 | s_jnl_blocks[17] |
Backup copy of the journal inode's i_block[] array in the first 15 elements and i_size_high and i_size in the 16th and 17th elements, respectively.
|
||||||||||||||||||||||||||||||
64bit support valid if EXT4_FEATURE_COMPAT_64BIT | |||||||||||||||||||||||||||||||||
0x150 | __le32 | s_blocks_count_hi | High 32-bits of the block count. | ||||||||||||||||||||||||||||||
0x154 | __le32 | s_r_blocks_count_hi | High 32-bits of the reserved block count. | ||||||||||||||||||||||||||||||
0x158 | __le32 | s_free_blocks_count_hi | High 32-bits of the free block count. | ||||||||||||||||||||||||||||||
0x15C | __le16 | s_min_extra_isize | All inodes have at least # bytes. | ||||||||||||||||||||||||||||||
0x15E | __le16 | s_want_extra_isize | New inodes should reserve # bytes. | ||||||||||||||||||||||||||||||
0x160 | __le32 | s_flags |
Miscellaneous flags. Any of:
|
||||||||||||||||||||||||||||||
0x164 | __le16 | s_raid_stride | RAID stride. This is the number of logical blocks read from or written to the disk before moving to the next disk. This affects the placement of filesystem metadata, which will hopefully make RAID storage faster. | ||||||||||||||||||||||||||||||
0x166 | __le16 | s_mmp_interval | # seconds to wait in multi-mount prevention (MMP) checking. In theory, MMP is a mechanism to record in the superblock which host and device have mounted the filesystem, in order to prevent multiple mounts. This feature does not seem to be implemented... | ||||||||||||||||||||||||||||||
0x168 | __le64 | s_mmp_block | Block # for multi-mount protection data. | ||||||||||||||||||||||||||||||
0x170 | __le32 | s_raid_stripe_width | RAID stripe width. This is the number of logical blocks read from or written to the disk before coming back to the current disk. This is used by the block allocator to try to reduce the number of read-modify-write operations in a RAID5/6. | ||||||||||||||||||||||||||||||
0x174 | __u8 | s_log_groups_per_flex |
Size of a flexible block group is 2 ^ s_log_groups_per_flex .
|
||||||||||||||||||||||||||||||
0x175 | __u8 | s_checksum_type | Metadata checksum algorithm type. The only valid value is 1 (crc32c). | ||||||||||||||||||||||||||||||
0x176 | __le16 | s_reserved_pad | |||||||||||||||||||||||||||||||
0x178 | __le64 | s_kbytes_written | Number of KiB written to this filesystem over its lifetime. | ||||||||||||||||||||||||||||||
0x180 | __le32 | s_snapshot_inum | inode number of active snapshot. (Not used in e2fsprogs/Linux.) | ||||||||||||||||||||||||||||||
0x184 | __le32 | s_snapshot_id | Sequential ID of active snapshot. (Not used in e2fsprogs/Linux.) | ||||||||||||||||||||||||||||||
0x188 | __le64 | s_snapshot_r_blocks_count | Number of blocks reserved for active snapshot's future use. (Not used in e2fsprogs/Linux.) | ||||||||||||||||||||||||||||||
0x190 | __le32 | s_snapshot_list | inode number of the head of the on-disk snapshot list. (Not used in e2fsprogs/Linux.) | ||||||||||||||||||||||||||||||
0x194 | __le32 | s_error_count | Number of errors seen. | ||||||||||||||||||||||||||||||
0x198 | __le32 | s_first_error_time | First time an error happened, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x19C | __le32 | s_first_error_ino | inode involved in first error. | ||||||||||||||||||||||||||||||
0x1A0 | __le64 | s_first_error_block | Number of block involved of first error. | ||||||||||||||||||||||||||||||
0x1A8 | __u8 | s_first_error_func[32] | Name of function where the error happened. | ||||||||||||||||||||||||||||||
0x1C8 | __le32 | s_first_error_line | Line number where error happened. | ||||||||||||||||||||||||||||||
0x1CC | __le32 | s_last_error_time | Time of most recent error, in seconds since the epoch. | ||||||||||||||||||||||||||||||
0x1D0 | __le32 | s_last_error_ino | inode involved in most recent error. | ||||||||||||||||||||||||||||||
0x1D4 | __le32 | s_last_error_line | Line number where most recent error happened. | ||||||||||||||||||||||||||||||
0x1D8 | __le64 | s_last_error_block | Number of block involved in most recent error. | ||||||||||||||||||||||||||||||
0x1E0 | __u8 | s_last_error_func[32] | Name of function where the most recent error happened. | ||||||||||||||||||||||||||||||
0x200 | __u8 | s_mount_opts[64] | ASCIIZ string of mount options. | ||||||||||||||||||||||||||||||
0x240 | __le32 | s_usr_quota_inum | Inode number of user quota file. | ||||||||||||||||||||||||||||||
0x244 | __le32 | s_grp_quota_inum | Inode number of group quota file. | ||||||||||||||||||||||||||||||
0x248 | __le32 | s_overhead_blocks | Overhead blocks/clusters in fs. (Huh? This field is always zero, which means that the kernel calculates it dynamically.) | ||||||||||||||||||||||||||||||
0x24C | __le32 | s_backup_bgs[2] | Block groups containing superblock backups (if sparse_super2) | ||||||||||||||||||||||||||||||
0x254 | __u8 | s_encrypt_algos[4] |
Encryption algorithms in use. There can be up to four algorithms in use at any time; valid algorithm codes are given below:
|
||||||||||||||||||||||||||||||
0x258 | __u8 | s_encrypt_pw_salt[16] | Salt for the string2key algorithm for encryption. | ||||||||||||||||||||||||||||||
0x268 | __le32 | s_lpf_ino | Inode number of lost+found | ||||||||||||||||||||||||||||||
0x26C | __le32 | s_prj_quota_inum | Inode that tracks project quotas. | ||||||||||||||||||||||||||||||
0x270 | __le32 | s_checksum_seed | Checksum seed used for metadata_csum calculations. This value is crc32c(~0, $orig_fs_uuid). | ||||||||||||||||||||||||||||||
0x274 | __le32 | s_reserved[98] | Padding to the end of the block. | ||||||||||||||||||||||||||||||
0x3FC | __le32 | s_checksum | Superblock checksum. |
Total size is 1024 bytes.
Ext4 超级块详解相关推荐
- Java 初始化 代码块_Java中初始化块详解及实例代码
Java中初始化块详解 在Java中,有两种初始化块:静态初始化块和非静态初始化块. 静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量, ...
- Java 代码块详解
文章目录 Java 代码块详解 基本介绍 基本语法 代码块示例 代码块使用细节 Java 代码块详解 基本介绍 代码块又称 初始化块, 是类的一部分,属于类中的成员,类似于方法,将逻辑语句封装在方法体 ...
- 全方位揭秘!大数据从0到1的完美落地之HDFS块详解
HDFS块详解 传统型分布式文件系统的缺点 现在想象一下这种情况:有四个文件 0.5TB的file1,1.2TB的file2,50GB的file3,100GB的file4:有7个服务器,每个服务器上有 ...
- Android中内存泄漏超级精炼详解
一.前期基础知识储备 (1)什么是内存? JAVA是在JVM所虚拟出的内存环境中运行的,JVM的内存可分为三个区:堆(heap).栈(stack)和方法区(method). 栈(stack):是简单的 ...
- Windows 下安装Dlib face_recognition人脸识别模块详解
Windows 下安装Dlib人脸识别模块 新版本python官网运行安装,此次安装版本3.8.5,安装注意勾选添加环境变量,通过pip安装方便 安装dlib前需要安装C++环境,实际测试安装visu ...
- java代码讲解_Java基础系列-代码块详解
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 前言 Java基础系列,尽量采用通俗易懂.循序渐进的方式,让大家真正理解Java基础知识! 代码块 ...
- 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
文章目录 图形文件准备 ( PNG 文件 ) PNG 文件信息分类 数据块结构 IHDR 数据块 简介 IHDR 数据块 结构 图形文件准备 ( PNG 文件 ) 分析的文件准备 : 1.创建文件 : ...
- java中static{}语句块详解
原文地址:http://blog.csdn.net/lubiaopan/article/details/4802430 感谢原作者! static{}(即static块),会在类被加载的时候执 ...
- Java基础篇:四种代码块详解
所谓代码块,就是用大括号{}将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说,代码块是不能单独运行的,它必须有运行主体.在Java中代码块主要分为四种:普通代码块.静态代码块. ...
最新文章
- 保研计算机英语词汇,实用英语口语:“保研”怎么说?
- 第一次搭建vue项目--安装vue-cli、初始化项目
- android网络请求流程图,Android OKHttp系列1-流程总结
- bfc是什么_一次弄懂css的BFC
- 学位论文盲审被卡,或直接被毙,问题主要出在这几条!
- 吴恩达机器学习作业4(python实现)
- 转载--页面间大量数据参数传递
- Parallels Desktop 16 升级 macOS Big Sur 无法联网解决方法
- 栈的理解以及如何计算程序所需栈的大小并在IAR中设置栈
- C#.NET自定义报表数据打印
- float在内存中是如何保存的
- 数据库——模式分解和关系范式的分解
- 分享8个超酷的HTML5相册动画应用
- 基于STM32MINI板步进电机程序(有代码)
- 工作环境配置及putty工具常见设置
- PostgreSQL定时删除表数据
- word转html显示不完整,word页面怎么显不完全 word页面视图显示不全怎么办
- Web安全基础一漏洞产生原理漏洞探测(持续更新)
- 为什么SAST和SCA在SDLC中很重要?
- Python生成汉字字库文字,以及转换为文字图片
热门文章
- 阿里云备案+ssl申请+Nginx配置https
- 广州市科学技术局关于开展2022年广州市科技计划项目验收工作的通知
- php 获取开始日期与结束日期之间所有日期
- Java中----Font类简介
- 并行多任务学习论文阅读(二)同步和异步优化算法
- RT-Thread:U盘有时无法识别BUG修复
- 激情个P—leo看赢在中国第三季(2)
- mysql格式化日期如果日期为空_为什么在使用MySQL数据库格式化日期时,此查询会提供一个空集?...
- a标签带参页面跳转并在跳转页面接收参数
- 计算机学生管理系统,计算机学生信息管理系统毕业论文