产品现象 : 设备(Linux 系统) 运行一段时间后,其中某一个分区 /et/config 突然占用率为100%,而实际空间可能1%都不到。 这种问题百思不得其解。谷歌/百度 所遇到的解决方案都是嵌入式系统中磁盘空间占用率100% , 针这种情况,完全没用。

继续寻找问题: 大量老化设备之后,其中有一台完全复现,只要应用程序S10进程启动之后,磁盘空间就100%。 起初怀疑是应用程序S10进程的问题,但是没有说法,应用程序中也没有频繁操作文件的情况。

继续探索: 开机禁止启动S10进程,发现系统正常,磁盘空间占用率也正常。但是往/etc/config 随便写一个文件,磁盘空间立马就100%

Filesystem                Size      Used Available Use% Mounted on
/dev/config              28.0M    844.0K     25.1M   100% /etc/config
/dev/info                 3.8M     54.0K      3.4M   2% /etc/info

这个时候发现一些报错打印

[  172.603143@2] EXT4-fs error (device mmcblk0p16): ext4_mb_generate_buddy:758: group 0, block bitmap and bg descriptor inconsistent: 4941 vs 4942 free clusters
[  172.611759@0] EXT4-fs (mmcblk0p16): Delayed block allocation failed for inode 12 at logical offset 0 with max blocks 1 with error 28
[  172.623793@0] EXT4-fs (mmcblk0p16): This should not happen!! Data will be lost
[  172.623793@0]
[  172.632576@0] EXT4-fs (mmcblk0p16): Total free blocks count 0
[  172.638018@0] EXT4-fs (mmcblk0p16): Free/Dirty block details
[  172.643497@0] EXT4-fs (mmcblk0p16): free_blocks=1
[  172.648144@0] EXT4-fs (mmcblk0p16): dirty_blocks=1
[  172.652983@0] EXT4-fs (mmcblk0p16): Block reservation details
[  172.658696@0] EXT4-fs (mmcblk0p16): i_reserved_data_blocks=1

开机异常打印

[    3.455929] meson_uart ff803000.serial: ttyS0 use xtal(8M) 24000000 change 115200 to 115200
[    3.460932] Freeing unused kernel memory: 4480K
[    3.716471] EXT4-fs (mmcblk0p13): mounted filesystem with ordered data mode. Opts: (null)
[    3.862473] meson_uart ff803000.serial: ttyS0 use xtal(8M) 24000000 change 115200 to 115200
[    3.886295] EXT4-fs (mmcblk0p13): re-mounted. Opts: errors=remount-ro,data=ordered
[    4.040478] EXT4-fs (mmcblk0p15): mounted filesystem without journal. Opts: (null)
[    4.071872] EXT4-fs (mmcblk0p16): mounted filesystem without journal. Opts: (null)
[    4.155793] EXT4-fs (mmcblk0p14): mounted filesystem without journal. Opts: (null)
[    4.234014] EXT4-fs (mmcblk0p3): mounted filesystem without journal. Opts: (null)
[    5.156790] EXT4-fs (mmcblk0p17): mounted filesystem without journal. Opts: (null)
[    5.500780] EXT4-fs (mmcblk0p18): mounted filesystem without journal. Opts: (null)

通过这些异常打印,问题的矛头指向了启动 挂载分区的脚本

     mount -t ext4 /dev/config /etc/configif [ $? -ne 0 ]then//第一次烧录固件,启动的时候,先会调用mk2fs格式化分区mke2fs /dev/config//挂载分区mount -t ext4 /dev/config /etc/configfi开机的时候这行打印:  mounted filesystem without journal. Opts: (null)表示挂载文件系统的时候没有日志,这样系统出现问题之后,也不会调用系统修复工具的正常的逻辑: 开启日志,系统分区出现异常,系统自动调用系统修复工具修复

那接下来的问题主要是如何开启挂载文件系统时候的日志,参考mounted filesystem without journal. Opts: (null) while mounting ext4 fs , 第二个回答

ext4 file system corrupted with ext4_mb_generate_buddy messages seen in the logs 指导了查找问题方向的回答

大概意思就是: 格式化分区的时候调用mkfs.ext4 /dev/config之后,挂载分区mount 就会出现日志, 然而mke2fs 需要配置一些参数才可以,但我实际尝试之后: mkfs.ext4格式分区之后,mount 确实会有日志,但是mk2fs配置相关参数之后还是不行

步骤:

mkfs.ext4 /dev/config
mount -t ext4 /dev/config /etc/config
有日志的正常打印 :  mounted filesystem with ordered data mode. Opts: (null)

还发现一个系统潜在的问题: 测试过程中发现系统根本没有 mkfs.ext4,而有mk2fs很奇怪, 但是Emmc Ext4文件系统中mkfs.ext4 这个是标配的。 仔细排查之后:

mk2fs 是 busybox 提供的工具,而mkfs.ext4相关工具编译选项根本没有打开

mkfs.ext4相关工具 主要在 buildroot/package/e2fsprogs

e2fsprogs.mk
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_BADBLOCKS) += usr/sbin/badblocks
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_CHATTR) += usr/bin/chattr
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_DUMPE2FS) += usr/sbin/dumpe2fs
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_E2FREEFRAG) += usr/sbin/e2freefrag
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_E2FSCK) += usr/sbin/e2fsck
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_E2LABEL) += usr/sbin/e2label
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_E2UNDO) += usr/sbin/e2undo
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_E4DEFRAG) += usr/sbin/e4defrag
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_FILEFRAG) += usr/sbin/filefrag
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_FSCK) += usr/sbin/fsck
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_LOGSAVE) += usr/sbin/logsave
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_LSATTR) += usr/bin/lsattr
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_MKE2FS) += usr/sbin/mke2fs
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_MKLOSTFOUND) += usr/sbin/mklost+found
E2FSPROGS_BINTARGETS_$(BR2_PACKAGE_E2FSPROGS_UUIDGEN) += usr/bin/uuidgen打开对应的BR2_PACKAGE_E2FSPROGS_BADBLOCKS 相关宏控制就可以了

可以得出结论: busybox 中提供的mk2fs应该是裁剪版本,实际的版本应该是 e2fsprogs 编译出来的

实际调试过程中也发现 dumpe2fs命令用于打印“ext2/ext3”文件系统的超级块和快组信息 ,能给调试带来便利。

基本定位: 应该是格式化分区的工具用错了,导致日志没有开启,是该问题产生的原因

[ Linux驱动炼成记 ] 15 - 存储器EMMC中Ext4文件系统 中 磁盘空间占用率100%相关推荐

  1. [Linux驱动炼成记] 11-快速修改芯片驱动中寄存器的值

    实际项目的调试中,往往需要快速修改驱动芯片(只针对IIC通讯)中对应寄存器的值,传统的方式一般是编译驱动 -> 烧录固件 -> 测试,而这样的方式往往很繁琐.这里介绍使用i2c-tools ...

  2. [Linux驱动炼成记] 10 -光感ISL29035调试/IIO子系统

    简介 项目中需要加入光感检测功能,需求一到,就打算自己写驱动,意外的发现最新内核中已经支持该驱动ISL29035.配置好DTS应该初步可以使用.看代码过程中发现isl29035的实现主要是采用IIO子 ...

  3. 【转】雄鹰计划-卓越工程师炼成记

    原文网址:http://bbs.elecfans.com/jishu_400775_1_1.html 注意: 雄鹰计划所有信息都将有朱兆祺ForARM进行实时更新,注意不良人士的骗局.这个计划全程免费 ...

  4. 证券一哥炼成记——郭树清

    证券一哥炼成记--郭树清 富凯摘要:改革力度超过所有前任的郭树清,在亿万股民中有着种种争议.不过只有读懂自"整体改革理论"以来的郭树清,才能读懂中国资本市场改革真实的行进路线. 从 ...

  5. 前沿|PaddlePaddle开源项目DeepNav“无人船”炼成记(二)

    前言:本篇继续讲述DeepNav自动驾驶船项目,本次讲解无人船的设计思路和硬件搭建过程.文章素材来源于百度美国研究院王益老师的知乎专栏,欢迎小伙伴们持续关注. 同时,对项目理论基础感兴趣的小伙伴,可以 ...

  6. 全球首颗量子卫星炼成记:“墨子号”打造保密通信新产业

    "墨子号"炼成记 对于我们普通卫星而言,只要顺利升空就意味着至少成功了一半.麻麻不用太操心. 但对于我们量子卫星来说,发射升空后,卫星还要在太空中与地面机构光学实验站进行" ...

  7. PPT炼成记 高效能PPT达人的10堂必修课pdf

    下载地址:网盘下载 内容简介 <PPT炼成记>一书主要讲解的内容包括:了解真正的PPT是怎样的,懂得PPT的基本理念和操作规则,文字设计和编排,如何利用图片来突出自己的PPT,巧用颜色才能 ...

  8. linux emmc vfs错误,Hi3519a EMMC挂载EXT4文件系统失败

    环境:hi3519AV100+ Hi3519A V100R001C02SPC010 问题:使用Hitool5.0.46烧写EMMC,成功烧写uboot.Image和EXT4文件系统,uboot和内核都 ...

  9. Linux下解决CPU占用率100%问题的步骤

    CPU占用率100%问题的解决步骤 1. 确定cpu占用率高的进程ID - PID 2. 查看进程中cpu占用率高的线程ID - TID 3. 将线程ID - TID 转换成16进制 - XTID 4 ...

最新文章

  1. 论文阅读笔记01-attention-is-all-you-need
  2. git 切换分支
  3. 小波变换如何去噪的思想
  4. MyEclipse完好提示配置
  5. 叮咚!你有一份来自明源云的圣诞邀约
  6. if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...
  7. Hadoop框架:HDFS读写机制与API详解
  8. 研发管理---(1)持续交付
  9. linux下导入mysql数据库命令
  10. linux-centos6.5一键安装 Redmine
  11. 全能模拟器retroarch+android,全能模拟器 RetroArch Android
  12. CanMV K210 AI开发板全网首发,项目代码完全开源,千套开发板限时优惠!
  13. vsCode在window电脑中安装FiraCode字体(好看字体)
  14. unity3d 图文并排--动态表情--超链接。
  15. Win10取消应用商店版的Python
  16. java编程之如何计算正弦值、余弦值和正切值
  17. 尖叫吧!2015创新中国春季峰会 880元VIP门票免费送
  18. [附源码]计算机毕业设计Python+uniapp安卓门禁系统appo8yd7(程序+源码+LW+远程部署)
  19. Docker基础26--6.1 Etcd—高可用的键值数据库
  20. java工程师报考费用_java工程师工资一般有多少

热门文章

  1. 疫情当前,推荐几本医学科普著作防身
  2. 工作六年后,我对软件开发的认知转变
  3. jacob 模板生成word文档 表格(合并单元格以及各种表格样式)、图片
  4. python3利用twilio(国际)免费向手机发送短信
  5. 串口通讯 IM1281
  6. 解决移动硬盘里的文件在Mac上显示灰色的问题
  7. 【PCB工程师必备】3D元件封装库
  8. matlab 脸部血容积脉搏波,一种人体光电容积脉搏波频谱特征的快速提取方法
  9. 怎样修改日立uax规格表_UAX型电梯调试手册
  10. 传感器i2c与arduino连接_Arduino中进行I2C通信发送数据案例分析