2016 WWDC 上推出的神秘 Apple File System,將會成為「appleOS」的底層

作者 | 發布日期 2016 年 08 月 01 日 18:26 | 分類 Apple follow us in feedly
Apple

蘋果在今年的 WWDC 上其實悄悄地推出了一個神秘的檔案系統,稱為「Apple File System」。儘管這個系統已經推出,但目前的用途仍很受限。官方既沒有多作說明,許多現行的功能像是 Time Machine 也不支援,不過,這個新檔案系統卻承擔一個重要的工作:取代運作超過 15 年 HFS+,同時成為蘋果生態系的唯一底層。




現行的 HFS+ 檔案系統

HFS+ 最早可以追溯到蘋果在麥金塔(Macintosh)時代就採用的老舊檔案系統 HFS。1997 年 Steve Jobs 重返蘋果,在開發新版 Mac OS X 的過程為了讓 HFS 能追上現代 Unix 檔案系統(UFS),而推出了擴充版的 HFS+,與 UFS 共同作為 Mac OS X 早年的開機卷宗。之後,蘋果亦一再引入 UFS 的特性到 HFS+,甚至加入其他 UFS 缺乏的功能,從而取代掉 UFS 在 Mac OS X 的角色。

日誌(Journaling)是其中一個有名的例子。這個功能可以讓 Mac 在當機或是失去電源而關閉時,讓硬碟保留過去某個時間點的狀態,避免資料留失。Mac OS X 日後的許多新功能,在底層上也需要 HFS+ 支援,像是 FileVault 2 的全磁區加密,Spotlight 檔案搜尋與內容顯示,Boot Camp 雙系統,Time Machine 備份,iMac 上的 Fusion Drive,都需要 HFS+ 有對應的更新。

HFS+ 另一項對蘋果影響深遠的發展,是蘋果依據 HFS+ 開發了一個子版本 HFSX。這個稱作 HFSX 的檔案系統,後來又被調整成一個著重在對每個檔案進行加密的特規版,並被應用到 iOS,既成為蘋果行動裝置作業系統的底層,也讓安全性得以是 iOS 在行銷時的重心。

儘管蘋果的努力,最終讓 HFS+ 成為相較 UFS 功能更完備的系統,然而根植於 HFS 存在超過 30 年的老框架,讓蘋果逐漸難以在兼顧相容性的前提下推出更新,以因應下一個 30 年並照顧現有的多個作業系統。此外,HFS+ 其實仍缺乏不少在現代檔案系統中已經具備的功能,而這些功能例如快照(Snapshot)、寫入時複製(copy-on-write),都不容易在擴充時加入,使得蘋果最終只能重來一遍,設計一個全新的檔案系統來取代它。

 

Apple File System 在底層架構的改進

 

針對 SSD 與快閃記憶體最佳化

Apple File System 想改革的第一點,來自 HFS+ 最初是針對傳統硬碟設計,而不是在現代裝置普遍採用的 SSD 與快閃記憶體。舉例來說,許多現代檔案系統,最初是為了伺服器與工作站而設。這些檔案系統在效能面著重在同步運作多個硬碟,同時傾向優化頻寬(throughput),而不是延遲(latency)。然而對 SSD 與快閃記憶體來說,關鍵其實是減少延遲,好增加讀取速率,而不是強化讓多個連線同時進入裝置的能力。

此外,由於 SSD 的讀寫機制與傳統硬碟完全不同,因此 SSD 與檔案系統之間會有一個 FTL 軟體層(Flash Translation Layer),用來讓檔案系統可以對應 SSD,並讓電腦把 SSD 視為一顆傳統硬碟。儘管蘋果既有能力與供應商定製 SSD 的讀寫介面,也可以處理 FTL 層與檔案系統,設計出一個蘋果獨有的 SSD 軟硬體方案,不過蘋果目前的變革還僅限於檔案系統的層次,在 Apple File System 上設計出一個更能「覺察快閃記憶體」(flash-aware)的模式。

 

支援在所有作業系統上整機加密,或是單一檔份加密

更強的檔案加密將是 Apple File System 的重心。在 Apple File System 中,蘋果會在每筆資料與元數據(Metadata)設計多重的「鍵值」(key),以保護檔案的安全性。所謂「鍵值」,指的是在電腦系統中查詢或尋找資料的指標,因此系統設計者可以藉由設定鍵值的索引與對應方式,保護儲存在電腦裡的資料。至於元數據(Metadata)則是資料的描述檔,像是資料的儲存位置,版本記錄等等。

有趣的是,有開發者也發現 Apple File System 有一種神秘的鍵值,可以用來抹除一些關鍵資料,成為蘋果的新資安手法。

 

將 inode 數量從 HFS+ 的 32 位元增加到 64 位元

inode 是 Unix 或類 Unix 系統的一種資料結構,用途是儲存檔案的元信息,例如檔案擁有者的 ID,讀寫時的權限,或者記錄檔案本身在 block 的位置。由於 Unix 檔案系統會把儲存區分成兩塊,一塊是 inode,一塊則是由眾多細小的 sector 組合而成的 block,用來保存檔案的內容,因此即使 block 區仍有空間,inode 區卻已經來到上限,就會無法再儲存資料。反之,如果提高檔案系統中 inode 的總數,就能提高檔案系統儲存量的上限。

此外,由於現行的 HFS+ 在設計上,會把檔案與目錄(directory)都保留在單一的 Catalog file。在 HFS+ 上,Catalog file 是用來記錄檔案與目錄資訊的資料結構,也是一種容器(container),某種程度也像資料夾,可以定義、區別各別檔案在整個儲存系統的階層。然而這種設計,會讓系統在多工讀取資料時較容易產生資安風險,因此提高 inode 數量,可以幫助作業系統更細微地儲存檔案,降低資安風險。

 

將時間分辨率改進到毫秒(Timestamps)

時間分辨率是指檔案系統記錄時間的格式,例如在 Mac OS X,時間分辨率被設定為 1904 年 1 月 1 日 0 時 0 分 0 秒至今的總秒數。在現代檔案系統中,時間分辨率通常已經能分割到毫秒,好讓系統能分辨同時寫入硬體的檔案,以更好地追蹤每個檔案在系統中的位階。時間分辨率的另外一個應用則是資安,藉由知道每個檔案在時間中的足跡,系統可以更清楚檔案的變更歷程,進而了解是否有不正常的寫入。

目前,蘋果的 HFS+ 的時間分辨率僅被設定成 1 秒。這個由 HFS 繼承來的古老特徵,是考量當時的處理器與硬碟速率較差,每個動作會花上較多時間,然而現代檔案系統處理器的運算效能已經進展到以毫秒為單位,讓 HFS+ 的時間分辨率顯得不合時宜。

 

新增對稀疏文件(Sparse files)的支援

稀疏檔案是一種檔案結構,功用是讓電腦能更有效地使用儲存空間。由於電腦採用二進位,本質上只有 1 和 0 兩種東西,當用戶儲存一個 20GB 的檔案,支援稀疏檔案的電腦系統並不會完整地寫入 20GB 的內容,而是只儲存檔案中有意義的部份,並避開連續的 0 等空資料,以節省儲存空間。這麼一來一個日常使用時的直觀好處,就是下載並儲存大檔案時效率會好得多。

稀疏檔案也是快照(Snapshot)的基礎。因此打算在 Apple File System 新增快照功能的蘋果,加入這項支援就成了必要的事。

 

新增 「寫入時複製」(copy-on-write)的架構

「寫入時複製」是一種設計檔案系統的哲學,基本邏輯是只有當用戶修改一筆資源,系統才會真正複製一個專屬的副本,並寫入磁碟。因此如果只是要讀取資料,許多個對該筆資源的呼叫者(caller)便不會額外複製自己的獨立副本,佔用空間,而是可以共享同一份資源。

「寫入時複製」是現代檔案系統的特徵,除了可以最佳化儲存空間的分配,也是業界用來實現快照(Snapshot)的重要途徑。蘋果對此的另外一個目標,則是想透過新架構,改進 HFS+ 陳舊的日誌功能,提升系統的生產力與穩定性。

值得一提的是,Apple File System 也針對元數據(metadata)設計了一種獨特的「寫入時複製」機制,不過並沒有說明太多技術與應用細節。

 

相容現有的 RAID 邏輯卷宗

Apple File System 可以使用在蘋果現有的 RAID 卷宗,以及其他以 RAID 建置的硬體。RAID 是一種把數個硬碟整合成一個硬碟陣列的架構,但同時會讓電腦作業系統認知為只有一個硬碟,以發揮比單枚硬碟更好的功能,例如許多 NAS 玩家會利用 RAID 來製作更適合自己的小雲端。

讓 Apple File System 支援 RAID 也有其他好處。例如,蘋果可以在作業系統的層次上提供 stripe,用來將大塊的資料分割成幾個小數據以提升運算效率;把資料完全一樣地複製到另一顆硬碟的鏡射(mirroring)則可以用來提升安全性;最後,RAID 機制在某些情況,也能讓用戶節省硬體的設置成本,例如 Fusion Drive 便是在某種程度上相似的例子。

值得一提的是,其實 Apple File System 目前還沒有支援 Fusion Drive,不過在推出時應該還是會加入這項功能。

 

Apple File System 的新功能

在改善 HFS+ 架構上的問題之餘,Apple File System 也加入了其他新功能:

Space Sharing

Space Sharing 是一個有點反直覺的新功能,用途是讓多個不同的檔案系統,可以共用同一個儲存空間,因此誇張一點舉例,在一個 512GB 的 SSD 上,用戶可以同時創建 4 個 512GB 的檔案系統,卻不會癱瘓這枚 SSD。蘋果指出,Apple File System 可以動態地調整儲存空間,而不像以往是強制分割出特定的區塊,給各別的檔案系統,藉此實現讓多個檔案系統共享同一塊儲存空間的功能。

顯然地,Space Sharing 一個直觀的功能就是用來支援虛擬機,或是 Boot Camp,不過一個未來可以想見的功能是,也許蘋果之後可以更無縫地在同一台機器上,結合多個平台的作業系統但又不佔用太多額外空間,例如在 Mac 上執行 iOS。

 

Clones

Clones 是蘋果依「寫入時複製」架構實踐出來的一個新功能。依此途徑,當用戶在 Apple File System「複製」一個檔案甚至整個目錄(Directories),這個檔案並不會真的被複製成一份副本而佔用額外的空間,同時不論大小,複製時間也近乎零。只有當用戶修改該檔案,系統才會把修改的部份寫入磁碟,這麼一來,Apple File System 就可以保存某個檔案的多個修改版本,但又不會佔用太多檔案空間,讓人連想到 Time Machine 的備份機制。

儘管蘋果沒有提及 Clones 的具體應用,不過直觀來說,使用者在複製一些大的檔案,像是藍光影片,或是虛擬機的資料庫,可能會便利一些,或者蘋果也可能據此開發出更好的備份、更新機制。有趣的是,有開發者指出,似乎就連蘋果自己也不完全清楚 Clones 可以做什麼。在 2016 年的 WWDC 中,蘋果的 Apple File System 工程師還向與會的開發者徵求意見。

 

Snapshots

在電腦領域中,「快照」(snapshot)是指電腦會儲存系統在某一時間點的狀態,就像是攝影師可以捕捉景像在某一時間點的狀態。通常來說,快照是一種更有效率的備份還原途徑,而在 Apple File System ,Snapshots 有點像是把 Clones 提升到系統層級的版本,除了會記錄整個系統在一定時間的狀態,也會像 Clones 一樣各別儲存不同的修改版本。

值得一提的是,儘管目前 Apple File System 仍不支援 Mac 的 Time Machine,也沒有在 macOS Sierra 的 beta 版有現身的跡向,不過 Snapshots 應該遲早會用來改善 Time Machine 雜亂的備份檔。

 

Fast Directory Sizing

Fast Directory Sizing 可以讓檔案系統透過目錄階層(directory hierarchy),即時地計算並更新系統的儲存空間大小。在原本的 HFS+ 檔案系統中,系統會在用戶點選「儲存空間」時,才會重新計算空間大小,不過在 Apple File System,系統將可以即時儲存並在檔案系統中過濾檔案與目錄大小,因此可以省去重新計算的步驟。蘋果也在官方文件中指出,它們將會釋出 Fast Directory Sizing 的 API。

Fast Directory Sizing 也如多數 Apple File System 的功能一樣沒有具體的應用方式,不過這項功能應該會與備份、更新檔案有關。

 

Atomic Safe-Save

只要曾經打開 Mac 的資源庫,或使用過 DaisyDisk 這類軟體,一定會發現蘋果的檔案或 App 底層就像一個大目錄,裡面整潔地藏著各個檔案,或是 App 的細部資源,例如框架與插件,亦即所謂的 Bundles。在更新時,系統其實就是把更新的部份儲存進指定的檔案夾,讓電腦有新的功能。

而 Atomic Safe-Save 的目的,便是讓電腦在儲存更新時無法被中斷,導致 Bundle 只儲存到片段的資料,產生錯誤。至於之所以稱為「原子的」(Atomic),是因為 Atomic Safe-Save 會讓更新不是成功完成,就是一開始就無法啟動,不會有部份儲存導致的錯誤,使得每個現有的小目錄就像個不能再分割的「原子」。

儘管也沒有具體的應用,不過在 iOS 平台一個直觀的例子,應該是用戶不會再遇到於 App Store 點下更新後,App Icon 一直呈現「等待中」的 Bug。同時這項功能,應該也能在底層上加強 iOS 近來為人詬病的更新穩定度。

 

Apple File System 的未來

目前,Apple File System 將預計在 2017 年上市,成為所有蘋果作業系統的底層,包括 iOS,macOS,tvOS,以及 watchOS。蘋果應該會在明年的 WWDC 上,於新版的作業系統中直接內建,讓用戶在保留舊資料的前提下,從 HFS+ 升級到 Apple File System,而到那時,可能還會有其他 Apple Filye System 的更新以及對應的具體應用,來匹配 Apple File System 許多仍然抽象的新功能。

而儘管 Apple File System 目前提出的改進大多比較被動,與其說是創新,不如說是一次大規模地補完不足,然而一些重要的更新目標,例如讓現行超過 10 億台蘋果裝置在作業系統底層統一,系統性能改進,全檔案加密,以及更好的備份機制,都是在根基上鞏固蘋果生態系的深遠計劃。

可想而知的是,蘋果將可以讓各個裝置變得更能協同運作,例如 App Store 的統一,甚至透過 Space Sharing,實踐在 iPad 上執行 Mac 功能。而儘管蘋果曾表明它們會繼續現有的多作業系統方針,不會如微軟 Windows 10 般推出統一平台,但 Apple File System 依然可以讓蘋果在底層維持單一的「appleOS」,減少開發與跨平台的成本,同時繼續在 UI 等層面,維持多作業系統的彈性與適應力。

值得注意的是,Apple File System 也可能會產生一些不直覺的使用情境,例如因為 Clones,在 Apple File System 複製的檔案不見得會佔用空間,因此當用戶刪除複製檔後,可能會覺得系統沒有釋出新空間很古怪。此外,一些檔案系統該注重的重要功能像是資料完整性(Data integrity),Apple File System 也沒有提及,不過之後也應該會持續改進。

至於 Apple File System 儘管有強大的平台擴充性,但作為蘋果生態系的底層,短期內應該沒有開源的空間。

(首圖來源:Apple) 

發表迴響