raspberry-pi – 嵌入式Raspberry Pi本地登录策略?

我的公司使用Raspberry Pi 3作为产品中的嵌入式控制器.用户不会优雅地关闭电源,只需拨动开关即可.为避免损坏,/ boot和/ root文件系统是只读的.这似乎是防弹的 – 我们已经使用测试台一遍又一遍地“拉动插头”(2000个循环)而没有任何问题.

我们正在开发一项需要本地日志记录的新功能.为此,我们在SD卡上创建了一个额外的ext4读/写分区(我们目前在8GB卡上使用大约2GB)用于日志文件.为了减少磨损,应用程序缓冲日志数据并每分钟只写一次卡.日志文件在写入之间关闭.没有其他人使用该分区.当应用程序处于可能指示用户即将关闭的状态时,不会写入日志文件.

在测试中,我们发现尽管我们正在使用相当保守的方法,但读/写分区在重新启动后始终标记为“脏”,经常包含文件系统错误,并且通常具有损坏的日志文件.我们还有许多卡遭受不可恢复的错误,导致设备无法启动.

丢失最后一组日志条目不是问题.

丢失日志文件是不可取的,但可以接受.

/ root和/ boot文件系统的损坏是不可接受的,卡的物理损坏(标准NAND闪存磨损除外)也是如此.

如果没有添加UPS以正常关闭Pi,是否有任何方法可以安全地进行读/写操作?

是否有SD卡分区“几何结构”的配置可以确保没有两个分区与一个闪存擦除块重叠?

解决方法

只是一些要点:

脏旗:我猜你没有卸载文件系统,对吧?这是在每次不洁净重启后看到脏标志的可能原因.另一种(可能更好的方法)是在写入之后将文件系统切换到只读模式,并在写入文件之前使其成为读写.

BTW,ext4延迟写入磁盘.文件中的close()并不意味着文件被写入磁盘,您需要调用额外的fsync()或同步(参见Does Linux guarantee the contents of a file is flushed to disc after close()?).所以最好让系统真正写出文件.

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...