Android Automotive の内部ストレージでは、数千回の消去 / 書き込みサイクルを伴うフラッシュ メモリが使用されます。フラッシュ メモリで障害が発生した場合、システムが使用不能になる可能性があります。車両の寿命は長い(通常は 10 年を超える)ため、フラッシュ メモリの信頼性は非常に高くなければなりません。このページでは、フラッシュ メモリの動作と OEM がフラッシュ メモリ デバイスの障害発生リスクを軽減する仕組みについて説明します。
フラッシュ メモリのパフォーマンス
フラッシュ メモリ デバイスは、消耗均一化手法を使用してデータの配置や書き込みをシステム全体に均等に分散させることで、消去や書き込みの制限を回避します。このため、大量の書き込みが原因で特定のブロックが失敗することはありません。フラッシュ メモリの推定寿命は次の条件によって異なります。
- 書き込み回数
- 書き込みパターン
- フラッシュ メモリの使用可能なサイズ(ストレージ サイズが大きいほど、消耗均一化アルゴリズムにより書き込みを分散できるブロックの数が増えます)
- 消耗均一化手法
- 環境的な要因(たとえば、動作温度の範囲は通常 -20~85℃ であり、これ以外の温度ではフラッシュ メモリの寿命が短くなる可能性があります)
フラッシュ メモリの寿命は、以下の数式を使って計算できます。
ただし、使用可能なストレージ サイズが小さくなるため、フラッシュ メモリが完全に消耗するよりもかなり早く、システムは正常に動作しなくなります。また、使用する均一化手法や書き込みパターンによっては、フラッシュ メモリの寿命はさらに短くなる場合があります。また、この推定値では、不正な動作や悪意のあるアプリの影響も考慮されていません。これらのアプリは、特別な権限がなくてもジャンクデータの大きなブロックをフラッシュ メモリに書き込むことにより Automotive システムを停止させる恐れがあります。
フラッシュ メモリの障害を未然に検出するには、システム全体のヘルス モニタリングの一環として適切なストレージ ヘルス モニタリングを組み込む必要があります。
フラッシュ メモリの実装
Android Automotive は、OEM がシステムの内部ストレージを保護およびモニタリングし、その寿命を延ばすことができるようにする機能をサポートしています。
フラッシュの消耗の抑制
内部ストレージのフラッシュの消耗を懸念している OEM は、適用ストレージとして使用できる速度を備えた 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 統計データなど)をサンプリングして公開します。OEM は、内部ストレージに障害が発生したときや、特定のアプリが実行しているディスク I/O の数が多すぎるときに、この情報を使用して警告を表示できます。詳しくは、storaged の実装をご覧ください。