闪存磨损管理

Android Automotive 内部存储设备使用支持上千次清除和写入周期的闪存。如果闪存出现故障,系统可能会变得无法使用。由于汽车的使用寿命较长(通常为 10 年以上),因此闪存必须非常稳定可靠。本页面介绍了闪存行为,以及 OEM 如何降低闪存设备发生故障的风险。

闪存性能

闪存设备使用耗损均衡技术解决清除/写入限制的问题,具体方法是在整个系统内均匀地放置数据和分配写入操作,以避免单个块因密集写入而发生故障。闪存的预计使用寿命取决于以下因素:

  • 写入次数
  • 写入模式
  • 闪存的可用大小。较大的存储空间意味着耗损均衡算法可以将写入分摊到较多的块中。
  • 耗损均衡技术
  • 环境因素。例如:工作温度范围通常介于 -20 到 85 摄氏度之间。如果温度超出此范围,闪存的使用寿命会进一步缩短。

您可以使用以下公式计算闪存的寿命:

$$ \frac{Max\ erase\ cycles * Storage\ capacity}{Data\ written\ per\ year} = {Flash\ memory\ lifespan\ in\ years} $$

不过,随着可用存储空间的减少,系统可能会早在闪存彻底磨损之前就停止正常运行,并且根据所使用的均衡技术和写入模式,eMMC 的使用寿命甚至可能会更短。此外,这方面的估算并没有将行为异常的应用或恶意应用的影响考虑在内,这些应用可能会在没有特殊权限的情况下将大量垃圾数据写入闪存以中断 Automotive 系统。

为了在潜在的闪存故障实际发生之前就检测出来,应将适当的存储设备运行状况监控功能整合到整体系统运行状况监控功能中。

实现闪存

Android Automotive 支持的功能可让 OEM 保护和监控其系统的内部存储空间,以延长其使用寿命。

减少闪存磨损

如果 OEM 担心内部存储设备上的闪存磨损问题,也可以增加 SD 卡,SD 卡支持足够快的数据写入速度,可用作合并存储设备。SD 卡应具有以下属性:

  • 合并后,SD 卡会加密,可以安全地存储应用数据。
  • SD 卡槽必须位于安全的位置(不要让用户频繁移除 SD 卡)。
  • SD 卡不能用于在 Automotive 系统和计算机之间传输数据。
  • 弹出 SD 卡不会影响正在运行的系统。不过,除非需要更换,否则不应移除 SD 卡。

安装在 SD 卡上的应用

为了进一步保护 Android Automotive 系统的内部存储空间,OEM 可以指定是否允许第三方应用安装在内部存储设备中,以便应用只能向其安装所在的分区写入数据。要进行配置,请在资源叠加层中设置以下配置:

<bool name="config_allow3rdPartyAppOnInternal">false</bool>

为确保第二方应用(由汽车应用开发者构建的应用)可以安装在 SD 卡上(如果汽车提供授权),汽车应用开发者必须将 android:installLocation=["auto" | "preferExternal"] 纳入应用的清单文件中。

如果汽车禁止将第三方应用安装在内部存储设备上,在没有上述标记的情况下(或者如果配置了 installLocation=internalOnly 设置),应用安装将会失败。

获取磁盘指标

AAOS 13 引入了闪存过度使用监控和指标收集,作为汽车监控定时器的一部分。如需了解详情,请参阅监控闪存用量

Android 8 引入了 storaged,这是一项系统服务,会对磁盘和闪存指标进行采样并发布,例如有关总体磁盘使用情况、估算的闪存使用寿命和磁盘 I/O 统计数据(按应用统计)的信息。当内部存储设备开始出现故障或特定应用执行的磁盘 I/O 过多时,OEM 可以使用这些信息向用户发出警告。如需了解详情,请参阅实现 storaged