基本介紹
ZFS檔案系統最早源自於昇陽電腦為Solaris作業系統,版權後為Oracle所有。
因版權問題,所能支援之OS不多,Ubuntu在16.04版本後開始支援。
原理
ZFS自帶軟體層RAID,可將多顆硬碟整合成一個Pool(儲存池),轉為檔案結構供OS直接存取。
Pool的設定檔是存於實體硬碟上(Import & Export),所以更換OS或抽換硬碟時,可以使用zpool import
掃描pools做匯入。
指令 (For Ubuntu)
- Ubuntu 16.04 安裝ZFS
apt-get install zfs
- Create a Pool (重新格式化所選硬碟)
zpool create pool-name /dev/sdb
zpool create pool-name /dev/sdb /dev/sdc //RAID-0
zpool create pool-name mirror /dev/sdb /dev/sdc //RAID-1
創建完成後根目錄下會產生pool-name檔案系統目錄
/pool-name
- Destroy a Pool (重新格式化Pool所對應硬碟)
zpool destroy pool-name
- Check Pool Status
zpool status
zpool status <pool-name>
- Check Pool List
zpool list
- Import (從硬碟匯入pool設定檔)
zpool import //列出可匯入之pool設定檔
zpool import pool-name //執行匯入
- Export (匯出)
zpool export pool-name
更換OS與更換硬碟 (換頭原理)
凡建立了Pool,其Pool對應的實體硬碟裝置內即產生可供Import之Pool設定檔。
換OS頭即將對應硬碟安裝置新的OS頭上,OS執行zpool import
掃描硬碟裝置上的pool設定檔,即可做匯入。
$ zpool import
pool: raid1
id: 6111887184954803444
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
raid1 ONLINE
mirror-0 ONLINE
xvdf ONLINE
xvdg ONLINE
$ zpool import raid1 //匯入raid1 Pool
注意:做ZFS RAID的硬碟裝置組須整套更換移植,否則Pool設定檔會告知缺少相關硬碟而無法匯入
Pool-name重複名稱
zpool import pool-id
zpool import pool-name pool-name-new
範例:
$ zpool import
pool: poolname
id: 11716532864265332957
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
poolname ONLINE
xvdg ONLINE
pool: poolname
id: 17476865807845147303
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
poolname ONLINE
xvdf ONLINE
$ zpool import 11716532864265332957 //使用ID匯入
$ zpool import poolname poolname2 //匯入的poolname與現有衝突、另外重新命名
Reference: http://docs.oracle.com/cd/E19253-01/819-5461/gazuf/index.html
HA佈署方案
-
建議不要做ZFS RAID,Pool僅使用單顆硬碟裝置創建,以提高維護性。
-
RAID可以做在實體Storage Box(儲存伺服器),界接出單一邏輯硬碟裝置給OS做ZFS Pool。