闪存磨损管理

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 卡不能用于在 Automotive 系统和计算机之间传输数据。
  • 弹出 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