Android Automotive 中的 Flash 磨損管理

Android Automotive 內部存儲使用具有數千次擦除/寫入周期的嵌入式多媒體卡 (eMMC);如果 eMMC 發生故障,系統可能無法使用。由於車輛的使用壽命很長(通常為 10 年以上),因此 eMMC 必須非常可靠。本頁介紹 eMMC 行為以及 OEM 如何降低 eMMC 故障風險(從而避免 Android Automotive 系統故障)。

eMMC 行為

eMMC 設備使用磨損均衡技術來解決擦除/寫入限制,方法是安排數據並在系統中均勻分佈寫入(因此不會因密集寫入而導致單個塊失敗)。 eMMC 的預計壽命取決於:

  • 寫入量。在手機上,每天寫入內部存儲的數據量可能超過 10GB。在汽車實現方面,由於應用程序有限,我們沒有關於將寫入多少數據的真實數據。然而,當用戶播放高質量音樂並使用導航時,我們觀察到每分鐘有 50MB 數據寫入 eMMC。未來,我們可能會有其他類型的寫入密集型應用程序,例如持續記錄和存儲視頻的儀表板攝像頭應用程序。此外,一些汽車將成為每天使用數小時的共享汽車。由於這些原因和其他原因,我們預計 Android Automotive 實現的 eMMC 寫入量將超過手機。
  • 寫模式。寫入和擦除是按塊完成的。在小塊中頻繁寫入數據比在較大塊中不頻繁寫入相同數量的數據更快地磨損 eMMC。
  • eMMC 的可用尺寸。更大的存儲大小意味著磨損均衡算法可以將寫入分散到更多的塊中。
  • 磨損均衡技術。
  • 環境因素。示例包括通常為 -20 ~ 85 攝氏度的工作溫度範圍;超出此範圍的溫度可能會進一步縮短 eMMC 的壽命。

對於具有 16GB 可用空間和 3k 擦除/寫入周期的 eMMC,我們估計如下:

每日寫作16 GB 32GB
預計壽命10年5年

但是,隨著可用存儲容量的減少,系統將在 eMMc 完全耗盡之前很久就停止正常運行,並且 eMMC 的壽命可能會更短,具體取決於所使用的調平技術和寫入模式。此外,這個估計沒有考慮行為不端或惡意應用程序的影響,這些應用程序可能會通過在沒有特殊權限的情況下將大塊垃圾數據寫入 eMMC 來攻擊汽車系統。

為了在實際發生之前檢測到可能的 eMMC 故障,應內置適當的存儲健康監控作為整體系統健康監控的一部分

執行

Android O 支持使 OEM 能夠保護和監控 Android Automotive 的內部存儲並延長其使用壽命的功能。

限制第三方應用

為了保護 Android Automotive 系統的內部存儲,Android O 允許 OEM 配置是否可以在內部存儲上安裝第三方應用程序(應用程序只能寫入其安裝所在的分區)。要進行配置,請在資源疊加層中設置以下配置:

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

減少閃光磨損

擔心內部存儲閃存磨損的 OEM 還可以添加足夠快的 SD 卡,以用作採用的存儲。 SD 卡具有以下行為:

  • 採用後,SD 卡將被加密,並且可以安全地存儲應用程序數據。
  • SD 卡插槽必須位於安全的位置(用戶不應頻繁取出 SD 卡)。
  • SD 卡不能用於汽車系統和計算機之間的數據傳輸。
  • 彈出 SD 卡不會影響正在運行的系統。但是,除非需要更換,否則不應將其移除。

如果汽車要求,為了確保第二方應用程序(由汽車應用程序開發人員構建的)可以安裝在 SD 卡上,汽車應用程序開發人員必須包含android: installLocation =["auto" | "preferExternal"]在應用程序的清單文件中。

如果汽車不允許在內部存儲上安裝第三方應用程序(如限制第三方應用程序中所述),沒有此標誌(或者如果配置了installLocation =internalOnly設置),應用程序安裝將失敗。

使用 storaged 獲取磁盤指標

Android O 引入了storaged ,這是一種新的系統服務,它對磁盤和 eMMc 指標進行採樣和發布,例如有關整體磁盤使用情況、eMMC 生命週期估計和每個應用程序磁盤 I/O 統計信息的信息。當內部存儲開始出現故障或特定應用程序執行過多磁盤 I/O 時,OEM 可以使用此信息向用戶發出警告。有關詳細信息,請參閱實現 storaged

驗證

此功能在PackageManager測試中進行了測試。