Mac 需要重組磁碟嗎?新款 Mac 為什麼用不著
不需要,用 SSD 和 APFS 的 Mac 不用重組磁碟,也不該在上面跑第三方的磁碟重組工具。磁碟工具程式裡沒有重組按鈕,是因為 macOS 自己管著檔案配置,而在快閃儲存上,重組要收拾的那些零散區塊,本來就不會拖慢任何東西。
搜「Mac 怎麼重組磁碟」的人,多半真正想問的是 Mac 為什麼變慢了,或者磁碟為什麼老是滿,這兩件事都有實實在在的原因和解法,沒有一個跟重新排列資料區塊有關。這篇講清楚磁碟重組為什麼不再重要,老式傳統硬碟在哪一種情況下還能從重新配置裡得到好處,以及該做什麼來代替它。
磁碟重組原本是做什麼的
Apple 已經封存的舊支援文件 About disk optimization with Mac OS X 把最佳化定義為重新排列檔案和中繼資料,「以縮短資料存取時間,並盡量減少硬碟讀寫頭移動的時間」。傳統硬碟上一個有碎片的檔案被拆成幾段存在不同位置,讀寫頭得在它們之間來回跑,每跑一趟都要花時間。
就算在傳統硬碟的年代,這篇文件也說「如果你用的是 Mac OS X,很可能根本不需要做最佳化」,理由都落在 Mac OS 擴充格式(HFS Plus)上:檔案系統會避免重複利用刪除檔案後留下的小空隙,延遲配置會把許多小的寫入合併成一次較大的配置,Mac OS X 10.3 及更新版本還「可以自動重組」那些慢慢變大的檔案,Apple 把這個過程叫做 Hot File Adaptive Clustering。文件同時提醒,最佳化過程中斷電可能損壞檔案,而把 macOS 放在快速啟動區的檔案挪走,反而可能讓效能變差。
所以 Mac 從來就沒有重組磁碟的習慣需要戒掉,真正要緊的那部分,它一直在自己做。
SSD 為什麼不在乎碎片
傳統硬碟上碎片的全部代價,就是讀寫頭在旋轉的磁盤上移動,SSD 既沒有讀寫頭也沒有磁盤,它用電子方式讀取快閃記憶體,讀一個位置的區塊和讀另一個位置的區塊花的時間差不多,所以一個拆成十段的檔案,讀起來和完整的一段幾乎一樣快。
因此在 SSD 上把每個檔案重寫成連續的,什麼也換不來,還要賠上寫入次數,快閃記憶體單元會隨寫入磨損,而一次全碟重組,差不多是你能刻意製造的最大一類寫入負載。
SSD 真正需要的,是知道哪些區塊是空的,好在下一次寫入前先準備好,這就是 TRIM 的工作:macOS 告訴硬碟哪些區塊已經不再存放檔案資料。Apple 自家的內建 SSD 預設就會收到 TRIM 指令,可以在系統資訊(在應用程式 › 工具程式裡)確認:在硬體底下選 NVMExpress 或 SATA,然後看內建硬碟那一項有沒有 TRIM 支援:是。也可以在終端機裡檢查一顆磁碟是不是 SSD:
diskutil info / | grep "Solid State"
第三方 SSD 的 TRIM 和 trimforce
如果你幫舊 Mac 換上了第三方 SATA SSD,系統資訊裡可能顯示 TRIM 支援:否,trimforce 指令就是為這種情況準備的。它的手冊頁(在終端機執行 man trimforce)寫著它「允許向連接在 AHCI 控制器上的第三方硬碟傳送 TRIM 指令」,「預設情況下不會向第三方硬碟傳送 TRIM 指令」,還提醒「啟用 TRIM 時務必極度謹慎,因為有些硬碟可能無法正確處理這些指令」。執行它需要管理者權限,之後要重新開機。
sudo trimforce enable
執行前先確認硬碟廠商寫明在 macOS 上支援 TRIM,並且手上有一份最新的備份,之後要是出了問題,執行 sudo trimforce disable 再重新開機,就能停止傳送這些指令。已經顯示 TRIM 支援:是的 Mac 不要再跑它,沒有任何好處。
APFS 帶來的變化:寫入時拷貝和快照
從 macOS High Sierra 10.13 起,Mac 用的是 APFS。Apple 的檔案系統格式說明寫著 APFS「針對新款 Mac 電腦使用的快閃/SSD 儲存裝置最佳化」,並把快照和空間共享列為它的功能。Apple File System Reference 描述了「修改物件時採用的寫入時拷貝方式」:變更的資料寫進新的區塊,而不是原地覆寫舊區塊,這也是 APFS 能撐過當機的原因之一。
寫入時拷貝正是傳統重組工具不適合的原因,一個為了讓檔案連續而「搬移」檔案的工具,實際上是在替它的區塊寫一份新副本,如果某個 Time Machine 本機快照還參照著舊區塊,那些區塊會一直被占用,直到快照消失,於是重組一輪下來可能反而多占了空間。Apple 說明 Time Machine 大約每小時儲存一個本機快照,並且會隨著快照變舊或需要空間時刪除它們,這是正常現象,不用去對抗。
APFS 還有自己的使用者資料重組功能,由 macOS 管理而不是由某個 App 管理。diskutil 的手冊頁列出了一個 defragment 動詞,可以「在 APFS 容器或宗卷層級管理使用者檔案資料的自動背景重組」,下面這行只讀取目前狀態,不會改動任何東西:
diskutil apfs defragment / status
在一台 Apple 晶片 MacBook 的內建 SSD 上,宗卷和它所在的容器都回報重組處於停用狀態,這是快閃儲存該有的狀態,不是一個漏開的設定。enable 那種寫法會改動磁碟的設定,除非你在傳統硬碟上有明確的理由,否則別碰它。
搜「重組」的人真正感覺到的是什麼
搜尋背後的症狀,通常是下面兩種之一。
Mac 感覺很慢。 在新款 Mac 上,變慢幾乎總有一個看得見的原因:某個程序吃滿了一個 CPU 核心,記憶體壓力一直是黃色或紅色,過熱降頻,或者更新後 Spotlight 在建立索引。Mac 為什麼這麼慢講了怎麼在活動監視器裡找出是哪一個,怎麼讓 Mac 變快講了那些能帶來可量化差別的改動,兩份清單裡都沒有區塊配置。
磁碟快滿了。 這才是真正會影響速度的那個。macOS 需要可用空間來放置換檔、更新、快取和快照,啟動磁碟只剩幾 GB 時會變得遲鈍並跳出警告,清出空間比重新排列剩下的東西有用得多。Mac 啟動磁碟已滿講了刪東西之前怎麼先量清楚空間跑去哪裡。
如果你懷疑的是磁碟本身而不是裡面的內容,比如出現了當機、儲存時出錯,或者硬碟無法裝載,磁碟工具程式的修理工具會檢查檔案系統結構並修復能修的部分,這是 macOS 要你做的最接近「磁碟維護」的事。具體步驟,包括檢查啟動磁碟時從 macOS 復原裡執行,寫在怎麼使用磁碟工具程式的修理工具裡。
舊 iMac 和外接傳統硬碟
旋轉的傳統硬碟,不管是在舊 iMac、Mac mini 裡,還是裝在外接 USB 硬碟外接盒裡,是唯一還感覺得到碎片的情況。Apple 封存的那篇文件描述過這種情形:「如果你的磁碟快滿了,又經常修改或建立大型檔案(例如剪輯影片)……磁碟就有可能產生碎片。」
它的第一個建議很簡單,「先試試重新開機」,第二個辦法到今天仍然成立:「備份重要檔案,清除硬碟」,然後把系統和檔案放回去。在一顆空碟上一次性回復,所有檔案都會以大段連續的方式寫下去,做完你還多了一份驗證過的備份。
- 用 Time Machine 備份這顆硬碟,或者用另一份你已經從中回復過檔案、確認可用的備份。
- 依照 Apple 的清除並重新格式化說明在磁碟工具程式裡清除硬碟,如果是啟動磁碟,這一步要在 macOS 復原裡做。
- 如果是啟動磁碟就重新安裝 macOS,然後從備份回復檔案。
花這番功夫之前,先確認硬碟做完之後還有可用空間,一顆用到 95% 的傳統硬碟很快又會產生碎片,而一顆發出喀喀聲、或在修理工具裡報錯的硬碟需要的是更換,不是重新排列。對一台還從傳統硬碟開機的舊 Mac 來說,換成 SSD 帶來的變化,比任何配置整理都大得多。
為什麼要對 Mac 上的「重組」App 存疑
一個說要幫 SSD Mac 重組磁碟的工具,賣的是一個在這種硬體上根本不存在的成本的解藥,進度條和重組前後的對照圖看起來很有說服力,結果卻是快閃記憶體上多出來的寫入、可能被快照占住的空間,最糟還有 Apple 提到的斷電風險。
要提防那些為了「最佳化」宗卷而索取大範圍磁碟取用權限、不說明支援哪種檔案系統、或者把磁碟重組說成例行維護的工具。如果一個工具自己的文件都沒講它怎麼處理 APFS 快照和寫入時拷貝,就當它是為別的東西設計的。磁碟工具程式的修理工具、一份備份,加上足夠的可用空間,就是一台 Mac 的磁碟真正需要的全部。
Mole 在其中的位置
Mole 不重組磁碟,以後也不會,在 SSD 上沒什麼可得的,在 APFS 上配置歸 macOS 管。Mole 只管問題裡看得見的那部分:「清理」在刪除任何東西之前,會先讓你過目快取、日誌、已解除安裝 App 的殘留、Time Machine 本機快照和垃圾桶,「分析」會把磁碟畫成一張矩形樹狀圖,方便你一層層點進最大的資料夾。
拿不準問題是不是出在磁碟上時,「狀態」面板會顯示 CPU、記憶體、磁碟和占用資源最多的程序,每秒更新一次。Mole 的「系統診斷」也會在啟動磁碟使用率超過 90% 時提醒你,因為 macOS 需要可用空間來放置換檔、快照和更新。Mole 說明頁面列出了每一項檢查的意思。
常見問題
用 SSD 的 MacBook 需要重組磁碟嗎?
不需要。只有當硬碟讀寫頭必須在檔案的各段之間移動時,碎片才會耗費時間,而 SSD 沒有活動零件,替它重組只會增加寫入,讀取並不會變快。
Mac 有內建的磁碟重組工具嗎?
磁碟工具程式裡沒有重組按鈕。APFS 有一個透過 diskutil apfs defragment 管理的自動背景重組功能,在內建 SSD 上它通常處於停用狀態,這就是設計上該有的狀態。
Mac 上的外接傳統硬碟需要重組嗎?
通常不用。如果一顆快滿、存著經常變動的大型檔案的傳統硬碟變慢了,就備份、清除再把檔案回復回去,這樣你還順帶得到一份測試過的備份。
Mole 能幫我的 Mac 重組磁碟嗎?
不能。Mole 不重組磁碟,它用「清理」和「分析」幫你清出空間,用「狀態」看正在執行什麼。