Linux设备异常断电导致的SD卡损坏的解决方案

Linux设备异常断电导致的SD卡损坏的解决方案

需求|背景

如果一台linux设备的系统镜像是保存在SD卡中,启动方式是通过SD卡启动,频繁异常断电容易对SD卡和其中的文件造成损坏,这种情况下想要恢复系统极为困难。

解决方案

1.增加一个掉电检测电路,
2.掉电后触发CPU中断
3.增加超级电容,掉电后放电支撑CPU再工作几秒
4.在中断处理函数中,进行掉电后的紧急处理工作

硬件电路

掉电检测电路

检测到+5V衰减后,DECT引脚会从高电平跳变到低电平
将DECT引脚连接到SOC上的中断引脚,掉电时通知SOC进行处理。

软件

通过注册一个GPIO中断,检测DECT引脚,中断信号检测到后,使用系统调用ksys_sync()进行文件系统同步工作。
此函数能立刻将缓存中的文件写入到卡中
在这里插入图片描述
kenel中,电源管理子系统power management中就是使用这个函数去进行同步。
也许还有效率更好的同步方式。俺也不知道。

EXT4文件系统参数修改

改变文件系统的某些参数,通过牺牲部分文件系统的效率,改变文件写入时的动作细节达到减少异常断电时读写中断的问题。

  • barrier=0
  • data=writeback
  • commit=5
    这三个参数,可以在系统启动时的环境变量中添加
    通过cat /proc/cmdline可以查看文件系统这些参数的属性,如果没有显示,那么就是被设置成了默认值。

可以通过直接在 /boot/firmware/cmdline.txt文件后面添加
rootflags=data=writeback rootflags=barrier=0
commit选项并不建议修改,修改较小的值,频繁进行文件系统的同步动作对系统效率影响较大

关于这三个文件系统的参数的解释可以自己搜。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值