我正在开发一个充当服务器的嵌入式系统,问题是它将运行的环境非常激进,并且会遭受突然的电源中断。所以我打算使用 OverlayFS 将根文件系统挂载为可伪造的。这个想法来自 RaspberryPi,开发人员有一种机制可以启用/禁用将 rootfs 挂载为 OverlayFS(如您所见,可以使用raspi-config脚本启用它)
我的问题是……这是否有助于保护物理设备免受损坏?甚至是文件系统本身?我的想法是延长物理设备的寿命,我认为我可以避免写操作,但系统不能是纯只读的,因为某些程序需要将 FS 视为可写,这就是我在 OverlayFS 中思考的原因.
你怎么看?你对如何解决这个问题有其他想法吗?谢谢你们。
PS:我必须使用的系统是Debian Buster。
写入仍然发生,overlayfs 将它们重定向到上层。底层最终需要更新。所以不,仅仅有一个覆盖层并不能解决耐用性方面的挑战。您应该考虑哪些数据需要持久化,以及如何从故障中恢复。
在写入过程中断电可能会导致数据在文件系统、块和存储介质的几层中的某处丢失。好的文件系统有元数据日志,因此它们可以存活,但可能会丢失数据。通过在使用时关闭设备进行测试,检查数据是否保持完整性。
该 raspi-config 似乎在 tmpfs 上具有上限,因此可以避免存储介质磨损,但重新启动时写入会丢失!在某些用例中这可能是可以接受的,重新启动并返回到已知状态。
需要保存的数据可以发送到其他地方,例如系统日志转发到稳定电源的中央日志服务器。或者将数据发布到某个远程 API。或保存到与已安装软件的卷分开的本地数据分区。
说到稳定的电源,如果电源不可靠,不间断电源是一项很好的投资。如果断电,一个相对较小的电池就足以优雅地关闭。
对于底层来说,升级软件是一个必须成功的操作,设备才能正常工作。考虑基于映像的更新,例如SWUpdate 嵌入式设备更新程序(或Ubuntu 映像升级或Fedora IoT,有几个可供选择)。即使没有为此项目实施,具有恢复功能的双映像也值得研究。