我有这些基于树莓派的迷你服务器。其中很多。但目前我们遇到的故障相对频繁,因为由于某种原因,SD 卡上的文件系统被损坏,设备将不再正常工作。
我们将通过迁移到 CM3+ 来解决这个问题,这样我们就可以得到更可靠的 MMC,但我们也希望提高每个单独设备的可靠性。
那么,问题是:
是否可以创建这样一种磁盘布局,即有两个引导/根分区 - 一个主分区和一个备份分区,以防主分区搞乱。然后引导加载程序(grub?)将记录引导尝试,成功引导的系统将重置它们。如果不成功的启动次数超过给定的数量,我们将复制备份到主数据库或从备份启动。
答案1
我有这些基于树莓派的迷你服务器。其中很多。但目前我们遇到的故障相对频繁,因为由于某种原因,SD 卡上的文件系统被损坏,设备将不再正常工作。
用于 rootfs 的 SD 卡不是一个好主意。至少:
- 不要记录。或者登录到 tmpfs。
- 调整挂载选项以避免无用的 FS 修改(
noatime
、、nodiratime
...)
我们将通过迁移到 CM3+ 来解决这个问题,这样我们就可以得到更可靠的 MMC,但我们也希望提高每个单独设备的可靠性。
eMMC应该更好。
是否可以创建这样一种磁盘布局,即有两个引导/根分区 - 一个主分区和一个备份分区,以防主分区搞乱。
不确定这是解决方案。相反,我会研究更好的文件系统。例如,F2FS或类似的东西。
然后引导加载程序(grub?)将记录引导尝试,成功引导的系统将重置它们。如果不成功的启动次数超过给定的数量,我们将复制备份到主数据库或从备份启动。
看这个帖子关于 Grub 和 Raspberry Pi。问题是你需要 rapsberry pi 特定的加载器,我认为它无法做到这样的技巧。
如果我必须解决像你这样的问题,我会做的是:
- 构建一个最小的操作系统(例如使用 Yocto 或手工制作的 raspbian)。
- 使用 NFS 或 TFTP 启动它,并使用 tmpfs 作为 rootfs
- 仅将 eMMC 用于持久存储,显然,优化我对它的使用。
优点:
- 系统文件只存在于RAM中,所以不用担心烧毁eMMC或SD卡。
- 只需更新一棵树(在 NFS/TFTP 服务器上)+ 重新启动,所有 rapsberry pi 都会更新。
缺点:
- 由于您的 rootfs 存储在 RAM 中,因此可供应用程序使用的 RAM 较少。