EXT4文件系统特性说明

在嵌入式设备中,针对EMMC使用的文件系统,很多都使用了EXT4格式,下面介绍几个实用的功能。

首先获取EXT4的特性:

复制代码
root@test:~# dumpe2fs /dev/mmcblk0p15 
dumpe2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          64783e92-dd8f-4eed-bd6d-58dbce16e654
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         unsigned_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              708528
Block count:              2833920
Reserved block count:     0
Free blocks:              2762800
Free inodes:              708514
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8144
Inode blocks per group:   509
Flex block group size:    16
Filesystem created:       Thu Jan  1 08:00:39 1970
Last mount time:          Mon Dec  8 22:16:37 2025
Last write time:          Mon Dec  8 22:16:37 2025
Mount count:              2
Maximum mount count:      -1
Last checked:             Thu Jan  1 08:00:39 1970
Check interval:           0 (<none>)
Lifetime writes:          177 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)

这是读的EXT4超级块的信息,从这里我们可以得到好多信息,挑几个说明一下:

1、Filesystem features:

文件系统支持的特性,比如has_journal large_file等

2、Errors behavior:

文件系统出错时采用的方式,有以下几个选择:

continue:忽略错误,继续运行

remount-ro:将文件系统重新挂载为只读

panic:触发内核 panic(系统崩溃)

一般推荐使用remount-ro的方式

这个特性可以通过tune2fs工具来修改,如下:

1)查看当前特性

bash 复制代码
root@test:~# tune2fs -l /dev/mmcblk0p15 | grep "Errors behavior"
Errors behavior:          Continue

2)修改remount-ro

bash 复制代码
root@test:~# tune2fs -e remount-ro /dev/mmcblk0p15
tune2fs 1.46.5 (30-Dec-2021)
Setting error behavior to 2
root@test:~# tune2fs -l /dev/mmcblk0p15 | grep "Errors behavior"
Errors behavior:          Remount read-only 

重启后生效

3)手动破坏分区进行试验

bash 复制代码
root@test:~# dd if=/dev/zero of=/dev/mmcblk0p15 count=3
3+0 records in
3+0 records out
1536 bytes (1.5 kB, 1.5 KiB) copied, 0.000317058 s, 4.8 MB/s 
root@test:~# echo 11111 > /second/2.txt
[   95.782427] EXT4-fs error (device mmcblk0p15): ext4_map_blocks:601: inode #2: block 9203: comm bash: lblock 0 mapped to illegal pblock 9203 (length 1)
[   95.801136] Aborting journal on device mmcblk0p15-8.
[   95.806432] EXT4-fs (mmcblk0p15): Remounting filesystem read-only
-bash: /data/2.txt: Structure needs cleaning
root@test:~# 

可以看到分区检测到错误后,就被重新挂载为read-only了,避免进一步被破坏。

3、Lifetime writes:

记录自文件系统创建以来(对应镜像烧录以来)总写入数据量的持久化计数器(单位 KB),主要用于评估闪存设备的磨损程度。

相关推荐
Elastic 中国社区官方博客2 分钟前
不再有分配延迟:在无状态 Elasticsearch 中将快照与分片迁移解耦
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索
hacker_LeeFei20 分钟前
Flyway使用手册
运维
CS_Zero36 分钟前
Ubuntu 22.04挂载新硬盘
linux·运维·ubuntu
雾隐隐o41 分钟前
Docker Compose 多容器编排实战
运维·docker·容器
姚不倒1 小时前
负载均衡架构设计:F5 ↔ Nginx/HAProxy ↔ Keepalived 全链路映射
运维·网络·nginx
好评1241 小时前
【Linux】应用层自定义协议与序列化
linux·运维·网络
fengyehongWorld1 小时前
Linux caddy的安装与配置
linux·运维·服务器
2401_862880821 小时前
Linux应用层开发 --- HTTP
linux·运维·http
可爱系程序猿2 小时前
libcrypto-3-x64.dll 加载失败排查:OpenSSL 3 版本、PATH 顺序与 x64 依赖如何对应
linux·运维·服务器·程序人生·电脑
zbyyd2 小时前
Linux 网络编程:IO 多路复用
linux·运维·c语言·网络