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

相关推荐
峰顶听歌的鲸鱼6 分钟前
Kubernetes介绍和部署
运维·笔记·云原生·容器·kubernetes·学习方法
信创天地41 分钟前
自动化运维利器赋能信创:Ansible与SaltStack在国产系统的部署与批量管理实战
运维·自动化·ansible
东城绝神1 小时前
《Linux运维总结:基于ARM64+X86_64架构使用docker-compose一键离线部署MySQL8.0.43 NDB Cluster容器版集群》
linux·运维·mysql·架构·高可用·ndb cluster
creator_Li1 小时前
即时通讯项目--(1)环境搭建
linux·运维·ubuntu
Ka1Yan1 小时前
Docker:基本概念与快速入门
运维·docker·容器
文静小土豆3 小时前
Rocky Linux 二进制 安装K8S-1.35.0高可用集群
linux·运维·kubernetes
小技工丨3 小时前
华为TaiShan 200 2280 ARM服务器虚拟化部署完整指南
运维·服务器·arm开发
403240735 小时前
[Jetson/Ubuntu 22.04] 解决挂载 exFAT 硬盘报错 “unknown filesystem type“ 及只读权限问题的终极指南
linux·运维·ubuntu
零意@5 小时前
debian如何把新编译的内核镜像替换原来的内核
运维·debian·更新内核版本·linux内核版本更新·debian更新内核
Love丶伊卡洛斯5 小时前
Ubuntu 部署 STUN服务端
linux·运维·ubuntu