磁盘存储掉电数据丢失fsync

背景
嵌入式linux,将信息写入文件,存到磁盘里,异常关机导致数据丢失
处理逻辑:
修改数据时,新建一个文件,将数据写入文件,执行fflush,再执行fsync,再flose,再copy一个备份文件。
问题:
1. 异常关机,文件与备份文件都有损坏的可能
2. 正常掉电,较低概率出现损坏
原因:
1. 执行完fsync返回0后,并未真正将数据写入磁盘,这也是根因,查了资料问了大佬,目前暂未有方案解决。
2. fsync虽然概率性未实时写入,正常掉电测试,2秒后99.9%会写入磁盘,可尝试延时一会儿来规避出错
3. 若当前文件执行完fsync之后,未写入磁盘那么copy的备份文件也是不完整的。所以备份文件用缓存写入,可以降低概率
4. 确保逻辑上写完当前文件写完后再删除旧的备份文件,可以规避写备份文件之前掉电,确保上一个备份文件是对的
总结:可以在逻辑上做一些规避措施降低概率,但是由于无法确保执行完fsync之后数据完整写入磁盘,所以若出现,备份文件执行完fsync之后当前文件还未完全写入,那么久还是会造成数据完全丢失。
如大家有别的方法解决该问题的方法,欢迎纠正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值