淘汰 SDCardFS

在搭載 Android 11 以上版本且執行核心版本 5.4 以上版本的裝置上,已淘汰 SDCardFS。在這種裝置上,VTS 測試不允許掛載的檔案系統列為 SDCardFS。搭載 Android 11 以上版本,但執行 4.19 以下核心版本的裝置可以繼續使用 SDCardFS,但 Google 不會提供額外支援。

在停用前,SDCardFS 提供一種方法,可控制對模擬內部儲存空間和外部 SD 卡的存取權,讓應用程式只存取與其相關的資料。此外,它還提供一個不區分大小寫的層級,以及一些額外的儲存空間追蹤功能。

SDCardFS 替代功能

SDCardFS 的替代方案會使用多個 Linux kernel 檔案系統功能來達成類似的結果。系統會直接處理大小寫不敏感的情況,因此大小寫不敏感的資料夾與大小寫敏感的資料夾的查詢時間幾乎相同,可消除 SDCardFS 中大型資料夾的速度變慢問題。SDCardFS 為了快速收集設定的儲存空間資料,所進行配額追蹤作業,現在已從使用者空間使用專案配額進行設定。在某些效能敏感的情況下,目錄會綁定並掛載到適當位置。新的 FUSE 實作會提供限定範圍儲存空間,以便直接存取檔案系統,主要用於支援位置資訊的遮蓋。

設定 SD 卡替換功能

如要在搭載 Android 11 以上版本的裝置上,為模擬儲存空間啟用專案配額和大小寫折衷,請從 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 進行直接儲存空間存取作業,不支援這些受控範圍的儲存空間功能。