Solaris zpool操作與使用
ZFS文件系統的英文名稱為Zettabyte File System,也叫動態文件系統(Dynamic File System),是第一個128位文件系統。最初是由Sun公司為Solaris 10操作系統開發的文件系統。作為OpenSolaris開源計劃的一部分,ZFS於2005年11月發布,被Sun稱為是終極文件系統。ZFS是基於存儲池的,與典型的映射物理存儲設備的傳統文件系ZFS統不同,ZFS所有在存儲池中的文件系統都可以使用存儲池的資源。
Zpool 常見用法
建立Zpool
ZPool Stripe group:
zpool create vol0 /dev/sda /dev/sdb /dev/sdc
ZPool mirror group:
zpool create vol0 mirror /dev/sda /dev/sdb
ZPool raidz group: Similar to RAID5.
zpool create vol0 raidz /dev/sda /dev/sdb /dev/sdc
ZPool raidz2 set: Similar to RAID5 with dual parity.
zpool create vol0 raidz2 /dev/sdb /dev/sdc1 /dev/sdd /dev/sde
刪除 ZPool
zpool destroy nameofzpool
移除(卸載) Zpool
比如說移除USB設備
zpool export nameofzpool
裝載 zpool :
zpool import nameofzpool
zpool import會列出所有可用的zpool
在硬盤文件上建pool
dd if=/dev/zero of=filename.img bs=1M count=1000
zpool create nameofzpool /absolute/path/to/filename.img
will create an image of 1GB. It is also possible to create a sparse image, to create an image that can hold 100GB:
dd if=/dev/zero of=filename.img bs=1k count=1 seek=100M
使用zpool
# zpool create datapool mirror c4t0d0 c4t1d0
# zfs create datapool/bob
# zfs create datapool/joe
# zfs create datapool/fred
# zfs create datapool/pat
磁盤和存儲池
使用磁盤
存儲池中的基本單元是物理存儲,可以是整個磁盤(c1t0d0)或者是某個分區(c0t0d0s7)。推薦使用整個磁盤,這樣的話就不用操心格式化了。ZFS會使用EFI標簽格式化磁盤,格式化之後的磁盤在format命令下表現為
Current partition table (original):
Total disk sectors available: 17672849 + 16384 (reserved sectors)
Part Tag Flag First Sector Size Last Sector
0 usr wm 256 8.43GB 17672849
1 unassigned wm 0 0 0
2 unassigned wm 0 0 0
3 unassigned wm 0 0 0
4 unassigned wm 0 0 0
5 unassigned wm 0 0 0
6 unassigned wm 0 0 0
8 reserved wm 17672850 8.00MB 17689233
如果某個磁盤要作為根池,他需要是SMI標簽,“format -e”命令可以執行這種轉換工作。
使用分區
雖然不推薦,不過存儲池中也可以使用分區。對於可啟動的根池,磁盤中分區必須是SMI標簽。
# format
.
.
.
Specify disk (enter its number): 4
selecting c1t1d0
partition> p
Current partition table (original):
Total disk cylinders available: 14087 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 0 - 14086 68.35GB (14087/0/0) 143349312
1 unassigned wm 0 0 (0/0/0) 0
2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
3 unassigned wm 0 0 (0/0/0) 0
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 0 0 (0/0/0) 0
文件也可以作為存儲池的元素
建立根池
根池是比較特殊的,體現在:
1. 其中磁盤必須是SMI標簽的分區
2. 必須是鏡像或者是整盤,不能使用"zpool add"命令建立多鏡像,但是可以使用"zpool attach"擴充,所以說,根池的大小是不能擴大的
3. RAID-Z和striped是不支持的
4. 不能有單獨的log元件
操作存儲池中的設備
add/remove設備
通過增加一個頂層的設備,可以動態的增加池的容量。下面是一個mirror的例子
點擊(此處)折疊或打開
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
errors: No known data errors
# zpool add tank mirror c0t3d0 c1t3d0
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c1t3d0 ONLINE 0 0 0
errors: No known data errors
"zpool remove"命令可以移除hot spares, log devices, and cache devices, 不能移除主設備。morrored池可以用"zpool detach" 命令來移除,非冗余和RAID-Z設備不能夠被移除。
attach/detach設備
attach命令可以向一個鏡像或者非鏡像設備添加一個新設備,下面是一個把二盤鏡像增加為三盤鏡像的例子
點擊(此處)折疊或打開
# zpool status zeepool
pool: zeepool
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
zeepool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
errors: No known data errors
# zpool attach zeepool c1t1d0 c2t1d0
# zpool status zeepool
pool: zeepool
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010
config:
NAME STATE READ WRITE CKSUM
zeepool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
c2t1d0 ONLINE 0 0 0 592K resilvered
errors: No known data errors
也可以把一個非鏡像pool變成一個鏡像pool
點擊(此處)折疊或打開
# zpool create tank c0t1d0
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
errors: No known data errors
# zpool attach tank c0t1d0 c1t1d0
# zpool status tank
pool: tank
state: ONLINE
scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0 73.5K resilvered
errors: No known data errors
"zpool detach"命令用來從一個鏡像池中移除設備。
# zpool detach zeepool c2t1d0