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