SDCardFS 지원 중단

SDCardFS는 Android 11 이상으로 출시되고 커널 버전 5.4 이상을 실행하는 기기에서 지원 중단되었습니다. VTS 테스트는 이러한 기기에서 SDCardFS로 표시되는 마운트된 파일 시스템을 허용하지 않습니다. Android 11 이상으로 출시되었지만 커널 버전 4.19 이하를 실행하는 기기에서는 SDCardFS를 계속 사용할 수 있지만 Google은 추가 지원을 제공하지 않습니다.

지원 중단되기 전에는 SDCardFS가 에뮬레이션된 내부 저장소 및 외부 SD 카드 액세스를 제어하는 방법을 제공하여 앱이 이와 관련된 데이터에만 액세스할 수 있었습니다. 또한, 대소문자를 구분하지 않는 레이어와 추가 저장소 추적을 제공했습니다.

SDCardFS 교체 기능

SDCardFS의 교체 기능은 유사한 결과를 얻을 수 있도록 여러 Linux 커널 파일 시스템 기능을 사용합니다. 대소문자 구분은 파일 시스템에서 직접 처리하므로 대소문자를 구분하는 폴더와 구분하지 않는 폴더에서 조회 시간은 거의 동일합니다. 따라서, SDCardFS에서 큰 폴더의 속도가 느려지지 않습니다. SDCardFS가 설정의 저장소 데이터를 신속하게 수집하려고 실행한 할당량 추적이 이제 프로젝트 할당량을 사용하여 사용자 공간에서 구성됩니다. 성능에 민감한 컨텍스트에서는 디렉터리가 제 위치에 마운트됩니다. 새로운 FUSE 구현은 직접적인 파일 시스템 액세스를 위한 범위 지정 저장소를 제공하며, 주로 위치 정보 수정을 지원합니다.

SDCard 교체 기능 구성

Android 11 이상으로 출시된 기기에서 SDCardFS 없이 에뮬레이션된 저장소에 프로젝트 할당량 및 케이스 폴딩을 사용 설정하려면 device.mk 파일의 emulated_storage.mk에서 상속합니다.

$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)

경고: Android 10 이하로 출시된 기기에서는 이 작업을 실행하면 안 됩니다. 파일 시스템 네이티브에서 대소문자를 구분하지 않으면 이러한 기기에서 사용되는 파일 기반 암호와 설정과 호환되지 않기 때문입니다. 이러한 기기에서는 SDCardFS를 계속 사용해야 합니다.

SDCardFS 지원 중단 이유

SDCardFS가 지원 중단되는 데에는 여러 가지 이유가 있습니다.

안정성

SDCardFS에는 대소문자 구분과 관련된 여러 경합 상태 및 메모리 부족 상황과 관련된 문제가 있습니다. 대소문자를 구분하지 않는 조회는 큰 디렉터리에서 다소 느려질 수 있습니다. 조회 시 대체 케이스를 찾으려고 하위 디렉터리를 거쳐야 하기 때문입니다. 상위 및 하위 파일 시스템에 동시에 액세스하면 문제가 발생할 수도 있습니다.

업스트림 패리티

SDCardFS에는 바인드 마운트에서 옵션 변경을 지원하기 위해 VFS 추가 패치가 필요합니다. 이러한 패치로 인해 추가 작업에서 이러한 영역의 업스트림 변경을 허용합니다. SDCardFS의 기능은 업스트림 구성요소로 복제할 수 있으므로 이 문제가 해결됩니다.

API와의 기능 패리티

이전 버전의 Android에서는 범위 지정 저장소가 특정 유형의 메타데이터 액세스를 제한했습니다. SDCardFS를 통한 직접적인 저장소 액세스는 이러한 범위 지정 저장소 기능을 지원하지 않습니다.