在Ubuntu 19.10上入門ZFS文件系統
Ubuntu 19.10 的主要新特性之一就是 ZFS。現在你可以很容易的無需額外努力就可以在 Ubuntu 系統上安裝 ZFS了。
一般情況下,安裝 Linux 都會選擇 Ext4 文件系統。但是如果是全新安裝 Ubuntu 19.10,在安裝的啟動階段可以看到 ZFS 選項。
你可以在安裝 Ubuntu 19.10 的時候選擇 ZFS
讓我們看看 ZFS 為何重要,以及如何在已經安裝了 ZFS 的 Ubuntu 上使用它。
ZFS 與其他文件系統有哪些區別?
ZFS 的設計初衷是:處理海量存儲和避免數據損壞。ZFS 可以處理 256 千萬億的 ZB 數據。(這就是 ZFS 的 Z)且它可以處理最大 16 EB 的文件。
如果你僅有一個單磁盤的筆記本電腦,你可以體驗 ZFS 的數據保護特性。寫時復制(COW)特性確保正在使用的數據不會被覆蓋,相反,新的數據會被寫到一個新的塊中,同時文件系統的元數據會被更新到新塊中。ZFS 可容易的創建文件系統的快照。這個快照可追蹤文件系統的更改,并共享數據塊確保節省數據空間。
ZFS 為磁盤上的每個文件分配一個校驗和。它會不斷的校驗文件的狀態和校驗和。如果發現文件被損壞了,它就會嘗試修復文件。
我寫過一個文章詳細介紹 什么是 ZFS以及它有哪些特性。如果你感興趣可以去閱讀下。
注:請謹記 ZFS 的數據保護特性會導致性能下降。
Ubuntu 下使用 ZFS [適用于中高級用戶]
一旦你在你的主磁盤上全新安裝了帶有 ZFS 的 Ubuntu,你就可以開始體驗它的特性。
請注意所有的 ZFS 設置過程都需要命令行。我不知道它有任何 GUI 工具。
創建一個 ZFS 池
這段僅針對擁有多個磁盤的系統。如果你只有一個磁盤,Ubuntu 會在安裝的時候自動創建池。
在創建池之前,你需要為池找到磁盤的 id。你可以用命令 lsblk
查詢出這個信息。
為三個磁盤創建一個基礎池,用以下命令:
sudo zpool create pool-test /dev/sdb /dev/sdc /dev/sdd
請記得替換 pool-test
為你選擇的的命名。
這個命令將會設置“無冗余 RAID-0 池”。這意味著如果一個磁盤被破壞或有故障,你將會丟失數據。如果你執行以上命令,還是建議做一個常規備份。
你可以用下面命令將另一個磁盤增加到池中:
sudo zpool add pool-name /dev/sdx
查看 ZFS 池的狀態
你可以用這個命令查詢新建池的狀態:
sudo zpool status pool-test
Zpool 狀態
鏡像一個 ZFS 池
為確保數據的安全性,你可以創建鏡像。鏡像意味著每個磁盤包含同樣的數據。使用鏡像設置,你可能會丟失三個磁盤中的兩個,并且仍然擁有所有信息。
要創建鏡像你可以用下面命令:
sudo zpool create pool-test mirror /dev/sdb /dev/sdc /dev/sdd
創建 ZFS 用于備份恢復的快照
快照允許你創建一個后備,以防某個文件被刪除或被覆蓋。比如,我們創建一個快照,當在用戶主目錄下刪除一些目錄后,然后把它恢復。
首先,你需要找到你想要的快照數據集。你可以這樣做:
zfs list
Zfs List
你可以看到我的家目錄位于 rpool/USERDATA/johnblood_uwcjk7
。
我們用下面命令創建一個名叫 1910
的快照:
sudo zfs snapshot rpool/USERDATA/johnblood_uwcjk7@1019
快照很快創建完成?,F在你可以刪除 Downloads
和 Documents
目錄。
現在你用以下命令恢復快照:
sudo zfs rollback rpool/USERDATA/johnblood_uwcjk7@1019
回滾的時間長短取決于有多少信息改變?,F在你可以查看家目錄,被刪除的目錄(和它的內容)將會被恢復過來。
要不要試試 ZFS ?
這篇文章僅簡單介紹的 Ubuntu下 ZFS 的用法。更多的信息請參考 Ubuntu 的 ZFS Wiki頁面。我也推薦閱讀 ArsTechnica 的精彩文章。
這個是試驗性的功能。如果你還不了解 ZFS,你想用一個簡單穩定的系統,請安裝標準文件系統 EXT4。如果你想用閑置的機器體驗,可以參照上面了解 ZFS。如果你是一個“專家”,并且知道自己在做什么,則可以隨時隨地隨意嘗試ZFS。