ZFS raidz1 原地升級:2TB x4 逐顆換成 8TB x4(含完整指令)
家裡 Proxmox 主機 zp 資料池由 4 顆 2TB 組成 raidz1,可用空間只剩 6TB 左右,眼看就要見底。這篇記錄如何不關機、不搬資料,把 4 顆 2TB 逐顆換成 8TB,最後容量從 7.27TB 長到約 29TB 的完整過程,指令都可以直接拿去用。
環境
- Proxmox VE 主機,系統碟
rpool獨立,資料池zp為 4 顆 2TB 的 raidz1 - 池使用率約 12%(924GB),scrub 乾淨無錯誤
ashift=12,新舊碟都適用- 主機板沒有空 SATA 口,只能用 USB 3.0 硬碟座搭橋
- 新碟:8TB CMR 企業碟(SMR 也能用,但 resilver 會慢很多)
核心觀念:先接後換,一次一顆
千萬不要先把舊碟抽掉。正確順序是:新碟先接上去 → 下 zpool replace → 等 resilver 跑完 → 系統自動踢掉舊碟 → 再拔舊碟。resilver 期間舊碟還在線上,raidz1 的備援全程都在;先抽的話整池降級,幾小時內再壞一顆就全滅。

步驟一:前置檢查
開工前先確認佈局,並跑一次 scrub,確保沒有既有壞塊。同時確認備份是最新的——這是唯一的保命符。
zpool status zp zpool list zp zdb -C zp | grep -i ashift # 應為 ashift=12 zpool scrub zp # 跑完確認 0 errors 再開工
另外 replace 一定要用 /dev/disk/by-id/ 名稱,sdc 這種順序開機後會飄:
ls -l /dev/disk/by-id/ | grep -E "sdc|sdd|sde|sdf"
步驟二:新碟上 USB 座,執行 replace
把 8TB 裝進 USB 3.0 硬碟座接上機器(認成 /dev/sdX,用 by-id 指它)。買硬碟座注意兩點:支援 8TB 以上(舊款有 2TB 上限)、USB 3.0 以上。頻寬不是問題——USB 3.0 約 400MB/s,HDD 持續寫入頂多 200MB/s,瓶頸在硬碟不在 USB。
# 找出新碟的 by-id(容量 7.3T 那顆就是) lsblk -d -o NAME,SIZE,MODEL,SERIAL,TRAN # 第一顆:把 sdc 換掉(舊碟先不要拔) zpool replace zp /dev/disk/by-id/ata-舊碟型號_舊序號 /dev/disk/by-id/usb-新碟識別_新序號
步驟三:等 resilver 完成
ZFS 只抄已使用的資料,900GB 級距約 2 小時左右,睡一覺就好。看到 resilver completed 才能動下一顆,也不要在 resilver 中重開機:
zpool status zp # scan: resilvered 232G in 00:30:11 with 0 errors on ... ← 出現這行才算完
步驟四:關機,把新碟搬進機箱
resilver 完成後舊碟已被自動踢掉,此時關機,把 USB 座裡的 8TB 拆下來裝進機箱原本的槽位,開機。ZFS 認碟靠 label 不是槽位,搬家後自己找得到,zpool export 都不用:
zpool status zp # 確認 4 顆 ONLINE,無 resilver
步驟五:重複,直到四顆全換完
下一顆 8TB 照樣:裝進 USB 座 → replace 下一顆舊碟 → 等完 → 關機換槽位。筆者實測一晚一顆,四晚換完。換完兩顆時可以用 zpool list -v zp 看到新舊碟並存(8T+8T+2T+2T),容量仍顯示舊大小是正常的——被最小顆卡住而已。

步驟六:擴容
四顆全換完後才長大:
zpool set autoexpand=on zp zpool online -e zp /dev/disk/by-id/新碟1 zpool online -e zp /dev/disk/by-id/新碟2 zpool online -e zp /dev/disk/by-id/新碟3 zpool online -e zp /dev/disk/by-id/新碟4 zpool list zp # SIZE 應變成約 29T,raidz1 可用約 21T
地雷區
- 先抽後換是大忌:pool 降級+零備援,resilver 幾小時內再壞一顆就全滅
- 用 by-id 不用 sdX:裝置順序會飄,寫錯顆就悲劇
- resilver 沒跑完不動下一顆:用
zpool status確認 completed - SMR 碟能用但慢:預算允許優先 CMR/企業碟
- 系統池另當別論:如果是開機池(rpool),換完要重裝 bootloader(
proxmox-boot-tool refresh),資料池則無此問題 - USB 座要支援 8TB+:舊款轉接器有 2TB 上限,買前先看規格
整個流程資料原地保留、VM 不用停(效能會慢,排離峰做),是 ZFS 管理員必備的基本功。希望這篇對同樣空間見底的人有幫助。