Android Automotive에서 플래시 마모 관리

Android Automotive 내부 저장소는 수천 개의 삭제/쓰기 주기가 있는 eMMC(Embedded MultiMediaCard)를 사용합니다. eMMC에 장애가 발생하면 시스템을 사용할 수 없게 됩니다. 차량은 수명이 길기 때문에(일반적으로 10년 이상) eMMC는 매우 안정적이어야 합니다. 이 페이지에서는 eMMC 동작과 OEM에서 eMMC 장애 발생 위험을 낮추는 방법(따라서 Android Automotive 시스템 장애 방지)을 설명합니다.

eMMC 동작

eMMC 기기는 웨어 레벨링 기법을 사용하여 데이터를 정렬하고 시스템 전체에 쓰기를 균등하게 분산하여 삭제/쓰기 제한을 해결합니다(따라서 집중적인 쓰기로 단일 블록에 장애가 발생하지 않음). eMMC의 예상 수명은 다음 사항에 따라 달라집니다.

  • 쓰기의 양. 휴대전화의 경우 내부 저장소에 기록되는 데이터의 양이 하루에 10GB를 초과할 수 있습니다. Automotive 구현에서는 제한된 애플리케이션으로 인해 얼마나 많은 데이터가 기록되는지에 관한 실제 데이터가 없습니다. 하지만 사용자가 고품질 음악을 스트리밍하고 내비게이션을 사용하는 경우 1분마다 50MB의 데이터가 eMMC에 기록됩니다. 향후 지속적으로 동영상을 녹화하고 저장하는 대시보드 카메라 애플리케이션과 같이 쓰기 작업이 집중적으로 이루어지는 다른 유형의 앱이 있을 수 있습니다. 또한 일부 차량은 매일 여러 시간 동안 사용되는 공유 차량일 것입니다. 이러한 이유로 Android Automotive 구현은 휴대전화보다 eMMC 쓰기가 더 많을 것으로 예상됩니다.
  • 쓰기 패턴. 쓰기 및 삭제는 블록 단위로 실행됩니다. 데이터를 적은 양으로 자주 쓰는 것은 동일한 양의 데이터를 대규모로 드물게 쓰는 것보다 eMMC를 더 빠르게 마모시킵니다.
  • eMMC의 사용 가능한 크기. 저장소 크기가 커지면 웨어 레벨링 알고리즘이 더 많은 블록에 쓰기를 분산시킬 수 있다는 의미입니다.
  • 웨어 레벨링 기법.
  • 환경 요인. 예: -20~85℃의 작동 온도 범위. 이 온도 범위를 초과하면 eMMC의 수명이 더 단축될 수 있습니다.

사용 가능한 공간이 16GB이고, 삭제/쓰기 주기가 3k인 eMMC의 경우 다음과 같이 예측할 수 있습니다.

매일 쓰는 양 16GB 32GB
예상 수명 10년 5년

그러나 사용 가능한 저장소의 크기가 줄어들어 eMMC가 완전히 마모되기 훨씬 전에 시스템이 적절한 작동을 중지할 수 있고, 사용된 레벨링 기법과 쓰기 패턴에 따라 eMMC의 수명이 훨씬 단축될 수 있습니다. 또한 이 예측값은 특수한 권한 없이 큰 용량의 정크 데이터 블록을 eMMC에 기록하여 Automotive 시스템을 공격할 수 있는 오작동 앱 또는 악성 앱의 영향을 고려하지 않습니다.

실제로 발생하기 전에 가능한 eMMC 장애를 감지하려면 전체 시스템 상태 모니터링의 일부로 적절한 저장소 상태 모니터링 기능을 빌드해야 합니다.

구현

Android O는 OEM이 Android Automotive의 내부 저장소를 보호 및 모니터링하고 수명을 연장하는 기능을 지원합니다.

타사 앱 제한

Android Automotive 시스템의 내부 저장소를 보호하기 위해 Android O에서는 OEM이 타사 앱을 내부 저장소에 설치할 수 있는지 여부를 구성할 수 있도록 했습니다. 앱은 앱이 설치된 파티션에만 쓸 수 있습니다. 구성하려면 리소스 오버레이에서 다음 구성을 설정합니다.

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

플래시 마모 감소

내부 저장소의 플래시 마모를 우려하는 OEM은 채택된 저장소로 사용하기에 충분히 빠른 SD 카드를 추가할 수도 있습니다. SD 카드는 다음과 같이 동작합니다.

  • 채택하면 SD 카드가 암호화되어 앱 데이터를 안전하게 보관할 수 있습니다.
  • SD 카드 슬롯은 안전한 위치에 있어야 합니다. 사용자는 SD 카드를 자주 제거하지 않아도 됩니다.
  • SD 카드는 Automotive 시스템과 컴퓨터 간에 데이터를 전송하는 데 사용할 수 없습니다.
  • SD 카드를 꺼내도 실행 중인 시스템은 아무런 영향을 받지 않습니다. 그러나 교체해야 하는 경우가 아니라면 제거하면 안 됩니다.

자동차에서 요청하는 경우 자동차 앱 개발자가 빌드한 제2자 애플리케이션을 SD 카드에 설치할 수 있도록 하려면 자동차 앱 개발자는 앱의 매니페스트 파일에 android:installLocation=["auto" | "preferExternal"] 을 포함해야 합니다.

타사 앱 제한에서 설명한 것처럼 자동차에서 이 플래그 없이 내부 저장소에 타사 앱의 설치를 허용하지 않는 경우 또는 installLocation=internalOnly 설정이 구성된 경우 앱 설치에 실패합니다.

storaged를 사용하여 디스크 측정항목 가져오기

Android O는 전체 디스크 사용량, eMMC 전체 기간 평가, 애플리케이션당 디스크 I/O 통계와 같은 디스크 및 eMMC 측정항목을 샘플링하고 게시하는 새로운 시스템 서비스인 storaged를 도입합니다. OEM은 이러한 정보를 사용하여 내부 저장소에서 장애가 발생하기 시작하거나 특정 애플리케이션이 너무 많은 디스크 I/O를 실행하는 경우 사용자에게 알릴 수 있습니다. 자세한 내용은 storaged 구현을 참고하세요.

유효성 검사

이 기능은 PackageManager 테스트에서 테스트되었습니다.