適用:
- Ubuntu 22.04 / 24.04
- Debian 12
- Rocky Linux / AlmaLinux 9
- OpenZFS 2.x
本文適用於現代 Linux 系統(OpenZFS 2.x)
一、安裝 ZFS(Linux)
✅ Ubuntu / Debian
sudo apt update
sudo apt install zfsutils-linux
✅ Rocky / AlmaLinux
sudo dnf install epel-release
sudo dnf install zfs
啟用模組:
sudo modprobe zfs
確認版本:
zfs --version
二、Zpool(儲存池)管理
✅ 建立 ZFS 儲存池(Mirror)
sudo zpool create -o ashift=12 mpool mirror /dev/sdb /dev/sdc
📌 說明:
ashift=12→ 4K 磁碟最佳化(強烈建議)- mirror → 類似 RAID1
✅ 建立 RAIDZ1
sudo zpool create -o ashift=12 mpool raidz /dev/sdb /dev/sdc /dev/sdd
✅ 建立 RAIDZ2
sudo zpool create -o ashift=12 mpool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde
✅ 查看儲存池
sudo zpool list
sudo zpool status
✅ 增加容量(新增 vdev)
⚠️ 注意:ZFS 無法擴充單一 vdev,只能新增一組 vdev
sudo zpool add mpool mirror /dev/sde /dev/sdf
✅ 加入 Hot Spare
sudo zpool add mpool spare /dev/sdg
✅ 更換故障磁碟
sudo zpool replace mpool /dev/sdb /dev/sdh
✅ Scrub(資料一致性檢查)
sudo zpool scrub mpool
查看進度:
sudo zpool status mpool
建議每月執行一次。
✅ 匯出 / 匯入 Pool
匯出(卸載):
sudo zpool export mpool
匯入:
sudo zpool import mpool
✅ 刪除 Pool(⚠️ 會刪除所有資料)
sudo zpool destroy mpool
三、ZFS 檔案系統管理
✅ 建立檔案系統
sudo zfs create mpool/data
✅ 設定掛載目錄
sudo zfs set mountpoint=/data mpool/data
✅ 建立子檔案系統
sudo zfs create mpool/data/projects
✅ 刪除檔案系統
sudo zfs destroy mpool/data/projects
✅ 查看檔案系統
sudo zfs list
四、Snapshot(快照)
ZFS 最強功能之一 ✅
✅ 建立 Snapshot
sudo zfs snapshot mpool/data@2026-05-06
✅ 查看 Snapshot
sudo zfs list -t snapshot
✅ 還原 Snapshot
sudo zfs rollback -r mpool/data@2026-05-06
✅ 刪除 Snapshot
sudo zfs destroy mpool/data@2026-05-06
✅ 建立可寫 Clone
sudo zfs clone mpool/data@2026-05-06 mpool/testclone
五、壓縮與空間管理
✅ 啟用壓縮(推薦)
sudo zfs set compression=lz4 mpool/data
✅ lz4 幾乎無效能損耗,強烈建議開啟。
✅ 關閉壓縮
sudo zfs set compression=off mpool/data
✅ 設定容量限制(Quota)
sudo zfs set quota=100G mpool/data
✅ 設定保留空間(Reservation)
sudo zfs set reservation=20G mpool/data
六、ZFS Volume(區塊設備)
類似虛擬磁碟,可給 iSCSI / VM 使用。
✅ 建立 Volume
sudo zfs create -V 10G mpool/vm_disk
✅ 查看裝置
ls -l /dev/zvol/mpool/
✅ 刪除 Volume
sudo zfs destroy mpool/vm_disk
七、Linux 最佳實務建議 ✅
✅ 使用磁碟 ID(避免重開機順序改變)
查看:
ls -l /dev/disk/by-id/
建立 pool 範例:
sudo zpool create -o ashift=12 mpool mirror \
/dev/disk/by-id/ata-Samsung_SSD_1 \
/dev/disk/by-id/ata-Samsung_SSD_2
✅ 強烈建議使用 by-id 而非 /dev/sdX
✅ 查看磁碟
lsblk
✅ 自動開機掛載(ZFS 會自動處理)
sudo systemctl enable zfs-import-cache
sudo systemctl enable zfs-mount
八、常用維護指令總整理
| 功能 | 指令 |
|---|---|
| 查看 Pool | zpool list |
| 查看 Pool 狀態 | zpool status |
| 查看 Dataset | zfs list |
| 查看 Snapshot | zfs list -t snapshot |
| 開始 Scrub | zpool scrub mpool |
| 查看 I/O | zpool iostat 2 |
✅ 結語
ZFS 在 Linux 上已非常成熟,適合:
- NAS
- VM 主機
- Docker 儲存
- 資料備份伺服器
- Home Lab
- 企業儲存環境