Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2396781
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: SOLARIS

2013-07-24 10:18:32

ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统。ZFS是基于存储池的,与典型的映射物理存储设备的传统文件系ZFS统不同,ZFS所有在存储池中的文件系统都可以使用存储池的资源。

Zpool 常见用法


建立Zpool 

  1. ZPool Stripe group:
  2. zpool create vol0 /dev/sda /dev/sdb /dev/sdc

  3. ZPool mirror group:
  4. zpool create vol0 mirror /dev/sda /dev/sdb

  5. ZPool raidz group: Similar to RAID5.
  6. zpool create vol0 raidz /dev/sda /dev/sdb /dev/sdc

  7. ZPool raidz2 set: Similar to RAID5 with dual parity.
  8. 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命令下表现为
  1. Current partition table (original):
  2. Total disk sectors available: 17672849 + 16384 (reserved sectors)

  3. Part Tag Flag First Sector Size Last Sector
  4.   0 usr wm 256 8.43GB 17672849
  5.   1 unassigned wm 0 0 0
  6.   2 unassigned wm 0 0 0
  7.   3 unassigned wm 0 0 0
  8.   4 unassigned wm 0 0 0
  9.   5 unassigned wm 0 0 0
  10.   6 unassigned wm 0 0 0
  11.   8 reserved wm 17672850 8.00MB 17689233
如果某个磁盘要作为根池,他需要是SMI标签,“format -e”命令可以执行这种转换工作。

使用分区

虽然不推荐,不过存储池中也可以使用分区。对于可启动的根池,磁盘中分区必须是SMI标签。
  1. # format
  2. .
  3. .
  4. .
  5. Specify disk (enter its number): 4
  6. selecting c1t1d0
  7. partition> p
  8. Current partition table (original):
  9. Total disk cylinders available: 14087 + 2 (reserved cylinders)

  10. Part Tag Flag Cylinders Size Blocks
  11.   0 root wm 0 - 14086 68.35GB (14087/0/0) 143349312
  12.   1 unassigned wm 0 0 (0/0/0) 0
  13.   2 backup wm 0 - 14086 68.35GB (14087/0/0) 143349312
  14.   3 unassigned wm 0 0 (0/0/0) 0
  15.   4 unassigned wm 0 0 (0/0/0) 0
  16.   5 unassigned wm 0 0 (0/0/0) 0
  17.   6 unassigned wm 0 0 (0/0/0) 0
  18.   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的例子

点击(此处)折叠或打开

  1. # zpool status tank
  2.   pool: tank
  3.  state: ONLINE
  4.  scrub: none requested
  5. config:

  6.         NAME STATE READ WRITE CKSUM
  7.         tank ONLINE 0 0 0
  8.           mirror-0 ONLINE 0 0 0
  9.             c0t1d0 ONLINE 0 0 0
  10.             c1t1d0 ONLINE 0 0 0
  11.           mirror-1 ONLINE 0 0 0
  12.             c0t2d0 ONLINE 0 0 0
  13.             c1t2d0 ONLINE 0 0 0

  14. errors: No known data errors

  15. # zpool add tank mirror c0t3d0 c1t3d0

  16. # zpool status tank
  17.   pool: tank
  18.  state: ONLINE
  19.  scrub: none requested
  20. config:

  21.         NAME STATE READ WRITE CKSUM
  22.         tank ONLINE 0 0 0
  23.           mirror-0 ONLINE 0 0 0
  24.             c0t1d0 ONLINE 0 0 0
  25.             c1t1d0 ONLINE 0 0 0
  26.           mirror-1 ONLINE 0 0 0
  27.             c0t2d0 ONLINE 0 0 0
  28.             c1t2d0 ONLINE 0 0 0
  29.           mirror-2 ONLINE 0 0 0
  30.             c0t3d0 ONLINE 0 0 0
  31.             c1t3d0 ONLINE 0 0 0

  32. errors: No known data errors
"zpool remove"命令可以移除hot spares, log devices, and cache devices, 不能移除主设备。morrored池可以用"zpool detach" 命令来移除,非冗余和RAID-Z设备不能够被移除。

attach/detach设备

attach命令可以向一个镜像或者非镜像设备添加一个新设备,下面是一个把二盘镜像增加为三盘镜像的例子

点击(此处)折叠或打开

  1. # zpool status zeepool
  2.   pool: zeepool
  3.  state: ONLINE
  4.  scrub: none requested
  5. config:

  6.         NAME STATE READ WRITE CKSUM
  7.         zeepool ONLINE 0 0 0
  8.           mirror-0 ONLINE 0 0 0
  9.             c0t1d0 ONLINE 0 0 0
  10.             c1t1d0 ONLINE 0 0 0

  11. errors: No known data errors
  12. # zpool attach zeepool c1t1d0 c2t1d0
  13. # zpool status zeepool
  14.   pool: zeepool
  15.  state: ONLINE
  16.  scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 12:59:20 2010
  17. config:

  18.         NAME STATE READ WRITE CKSUM
  19.         zeepool ONLINE 0 0 0
  20.           mirror-0 ONLINE 0 0 0
  21.             c0t1d0 ONLINE 0 0 0
  22.             c1t1d0 ONLINE 0 0 0
  23.             c2t1d0 ONLINE 0 0 0 592K resilvered

  24. errors: No known data errors
也可以把一个非镜像pool变成一个镜像pool

点击(此处)折叠或打开

  1. # zpool create tank c0t1d0
  2. # zpool status tank
  3.   pool: tank
  4.  state: ONLINE
  5.  scrub: none requested
  6. config:
  7.         NAME STATE READ WRITE CKSUM
  8.         tank ONLINE 0 0 0
  9.           c0t1d0 ONLINE 0 0 0

  10. errors: No known data errors
  11. # zpool attach tank c0t1d0 c1t1d0
  12. # zpool status tank
  13.   pool: tank
  14.  state: ONLINE
  15.  scrub: resilver completed after 0h0m with 0 errors on Fri Jan 8 14:28:23 2010
  16. config:

  17.         NAME STATE READ WRITE CKSUM
  18.         tank ONLINE 0 0 0
  19.           mirror-0 ONLINE 0 0 0
  20.             c0t1d0 ONLINE 0 0 0
  21.             c1t1d0 ONLINE 0 0 0 73.5K resilvered

  22. errors: No known data errors
"zpool detach"命令用来从一个镜像池中移除设备。
# zpool detach zeepool c2t1d0

详细的使用方法,可以参考 http://www.vpsee.com/2009/11/adding-a-mirror-to-a-device-in-zfs-pool/
阅读(9293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~