檔案系統與儲存

快照(snapshot)

想像你能在一瞬間把整個檔案系統凍結成它此刻的模樣——每個檔案、每個目錄——而不複製任何位元組,然後一邊自由地繼續使用與更改它,一邊讓那個凍結的視角持續可供回望。那個凍結的、就此刻而言唯讀的映像就是快照。它正是你如何在幾秒(而非完整複製要花的幾小時)內為一個運轉中的系統取得一致的備份、或在升級出錯時把它回滾的方式。

在寫入時複製檔案系統上,建立快照幾乎不費吹灰:它只是一個對目前區塊樹之根的已存參考。因為檔案系統從不就地覆寫區塊,從那個已存根可達的每個區塊都保持存活且不變——快照與運轉中的檔案系統單純地共享所有那些區塊。當你繼續寫入,被改的區塊的新版本寫到全新位置、運轉中的根往前推進,而快照的根則繼續指向舊的、共享的區塊。儲存只在資料分歧時才增長:一個 1 TiB 檔案系統的快照起初幾乎不費空間,只隨你後續所改之物的大小而增長。(較舊的系統在卷層用寫入時複製實作同樣的概念,LVM 式地,在某區塊首次被覆寫之前一刻才把它複製到一塊保留區。)

為何重要:快照給你便宜、一致的時間點復原與一個忙碌系統的乾淨備份,並支撐 Btrfs/ZFS 回滾與 Time Machine 式歷史等功能。兩個誠實的注意事項。第一,快照本身「不是」備份——它住在同一顆磁碟上,所以那顆磁碟壞了,快照便隨之而亡;你仍需把快照複製到其他媒體上。第二,快照釘住儲存:一個只被舊快照參考的區塊無法被釋放,所以對一個被大量改寫之檔案系統長期保留的快照,可能悄悄消耗大量空間。

$ sudo btrfs subvolume snapshot -r / /snaps/2026-06-23 # 瞬時:快照共享所有目前的區塊;起初磁碟佔用約為 0 # 日後的改動寫入新區塊;快照讓舊區塊持續存活

CoW 快照建立時瞬時且近乎免費;它只隨運轉中的資料與它分歧而增長。

快照不是備份。它與運轉中的資料坐在同一個裝置上,所以一次磁碟故障、控制器故障或全檔案系統的損壞會一次摧毀兩者。快照是用於快速的本地回滾與一致的來源映像;真正的備份必須複製到分離的、最好是異地的儲存。

又称
filesystem snapshotpoint-in-time copy檔案系統快照時間點副本