raid1即mirror
pve wiki上的教法,建 raid1 語法:
zpool create 儲存池名稱 raid格式 裝置名稱
zpool create -m 掛載點 儲存池名稱 裝置名稱
zpool create -f -o ashift=12 儲存池名稱 mirror 裝置1 裝置2
zpool的用法詳細說明
這段主要就講這一行指令
zpool create -f -o ashift=12 vic1 mirror sdb sdc
上面這個指令會建立一個 vic1 的儲存池(storage pool)、自動產生zfs檔案系統和掛載點(預設都是在系統的根目錄底下),並且會自動掛載該檔案系統。
一個指令就幫你做了這麼多事,真是簡便到有點不太習慣,它把我這些全都做了:
建raid指令mdadm、格式化mkfs.ext4、建掛載點mkdir /mnt/vic1、掛載mount
-m 指定掛載點,這個掛載點可不用先建資料夾。若已建資料夾也沒關係,但該資料夾內有檔案則會報錯
-f Forces use of vdevs, 即便它正在使用中或有其它的衝突。並非所有裝置都可靠此指令解決。
-o ashift=12 是指先進格式化(4K)的硬碟所需要下的參數。但新版的zpool本身已有支援4K sector的功能了,所以不用特別指定這個參數。
4K問題參考資料:心誌、Silent Melody、delphji's Chaos、
若想查你的 zpool 建立時是否有使用 ashift 指定12 可用此指令zdb |grep ashift來查詢那個數值是否等於12
若你有4顆硬碟想要建mirror的話,會建議你這麼下指令:
zpool create vic1 mirror sdb sdc mirror sdd sde
這樣你建出來的 raid 會變成 raid10 效能會比較好。
或是你一開始只有兩顆硬碟先建mirror了,後來想要再加兩顆進去,指令是這麼下的
zpool create vic1 mirror sdb sdc
zpool add vic1 mirror sdd sde
使用zpool statu 看的效果如下:
NAME STATE READ WRITE CKSUM
vic1 ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
不建議使用這樣的方式來下指令
zpool create vic1 mirror sdb sdc sdd sde
若想建立單顆硬碟的儲池存指令語法:
zpool create 儲存池名稱 裝置名稱
zfs 在預設的情況下,不帶任何參數所建立的儲存池就是raid0
裝置名稱可以寫成 /dev/sdb 或簡寫成 sdb 都可以
例:
zpool create vic2 sdb
若你一開始只是建立單碟,之後想要多加一顆進這個儲存池以達加速效果,也很容易實現
zpool add vic2 /dev/sdc
attach指令說明
zpool attach 這個指令是用來加硬碟,但它只能加硬碟進mirrors的最上面那顆硬碟裡
錯誤訊息參考:
$zpool create test1 sdd
invalid vdev specification
use '-f' to override the following errors:
/dev/sdd does not contain an EFI label but it may contain partition
information in the MBR.
若出現以上的錯誤訊息,大意是指 sdd 已有分割區了,使用參數 -f 來強制覆蓋過去即 $zpool create -f test1 sdd