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),主要用于评估闪存设备的磨损程度。

相关推荐
释怀不想释怀16 小时前
Linux快捷键,软件安装启动
linux·运维·服务器
zhengfei61116 小时前
自动化快速评估工具
运维·自动化
Hello World . .16 小时前
Linux:软件编程
linux·运维·服务器·vim
老师用之于民17 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
路由侠内网穿透.17 小时前
本地部署代码托管解决方案 Gitea 并实现外部访问( Windows 版本)
运维·服务器·网络协议·gitea
江畔何人初18 小时前
pod的内部结构
linux·运维·云原生·容器·kubernetes
齐鲁大虾18 小时前
Linux下用什么编程语言方便开发B/S架构程序
linux·运维·架构
三块钱079418 小时前
群晖docker部署Mattermost,对接openclaw
运维·docker·容器
博客-小覃18 小时前
内网穿透/端口映射之二层穿透访问”FTP共享文件“示例操作教程
运维·服务器·网络
珠海西格19 小时前
光伏电站全景感知体系:数据采集与设备状态监测技术
大数据·运维·服务器·数据库·人工智能