no pools available
现在让我们尝试创建一个简单的镜像池。
zpool create mirror ... 通过重复关键字的驱动器我们可以创建多个镜像。
[root@li1467-130 ~]# zpool create -f mpool mirror sdc sdd mirror sde sdf
[root@li1467-130 ~]# zpool status
pool: mpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
mpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
errors: No known data errors
在上面的例子中,我们创建了每两个磁盘镜像池。
同样的,我们可以创建一个raidz池。
[root@li1467-130 ~]# zpool create -f rpool raidz sdc sdd sde sdf
[root@li1467-130 ~]# zpool status
pool: rpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
errors: No known data errors
在ZFS池管理设备
一旦创建一个池,从池中可以添加或删除热备件和缓存设备,从镜像池和替换设备中连接或者分离。但是冗余和raidz设备不能从池中删除。我们将看到如何在这一节中执行这些操作。
我首先创建一个池称为“testpool”组成的两个设备,sdc和sdd。另一个设备sde将被添加到这里。
[root@li1467-130 ~]# zpool create -f testpool sdc sdd
[root@li1467-130 ~]# zpool add testpool sde
[root@li1467-130 ~]# zpool status
pool: testpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
正如前面提到的,我不能删除这个新添加的设备,因为它不是一个冗余或raidz池。
[root@li1467-130 ~]# zpool remove testpool sde
cannot remove sde: only inactive hot spares, cache, top-level, or log devices can be removed
但我可以在这个池添加一个空闲磁盘和删除它。
[root@li1467-130 ~]# zpool add testpool spare sdf
[root@li1467-130 ~]# zpool status
pool: testpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
spares
sdf AVAIL
errors: No known data errors
[root@li1467-130 ~]# zpool remove testpool sdf
[root@li1467-130 ~]# zpool status
pool: testpool
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
同样的,我们可以使用attach命令附加磁盘镜像或非镜像的池和detach命令从镜像磁盘池来分离。
zpool attach
zpool detach
当设备发生故障或损坏,我们可以使用replace命令替换它。
zpool replace 在镜像配置当中我们将爆力的测试一个设备。
[root@li1467-130 ~]# zpool create -f testpool mirror sdd sde 这将创建一个镜像磁盘池组成的SDD和SDE。现在,让我们故意损坏SDD写零到磁盘中。
[root@li1467-130 ~]# dd if=/dev/zero of=/dev/sdd
dd: writing to ‘/dev/sdd’: No space left on device
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: scrub repaired 0 in 0h0m with 0 errors on Fri Mar 18 09:59:40 2016
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdd UNAVAIL 0 0 0 corrupted data
sde ONLINE 0 0 0
errors: No known data errors
现在我们用SDC替换SDD。
[root@li1467-130 ~]# zpool replace testpool sdd sdc; zpool status
pool: testpool
state: ONLINE
scan: resilvered 83.5K in 0h0m with 0 errors on Fri Mar 18 10:05:17 2016
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
replacing-0 UNAVAIL 0 0 0
sdd UNAVAIL 0 0 0 corrupted data
sdc ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
[root@li1467-130 ~]# zpool status
pool: testpool
state: ONLINE
scan: resilvered 74.5K in 0h0m with 0 errors on Fri Mar 18 10:00:36 2016
config:
NAME STATE READ WRITE CKSUM
testpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0
errors: No known data errors
池的迁移
我们可以使用导出和导入命令在不同的主机之间迁移存储池。对于这个,在池中使用的磁盘应该从两个系统中可用。
[root@li1467-130 ~]# zpool export testpool
[root@li1467-130 ~]# zpool status
no pools available
zpool import命令列出所有可以利用的池。执行这个系统命令,你想要导入的池。
[root@li1467-131 ~]# zpool import
pool: testpool
id: 3823664125009563520
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
testpool/students 100M 1.7M 99M 2% /testpool/students
注意,使用文件系统的大小仅为1.7m,文件大小为15m,我们可以检查压缩比。
[root@li1467-130 ~]# zfs get compressratio testpool
NAME PROPERTY VALUE SOURCE
testpool compressratio 9.03x
配额和预订
让我用一个真实的例子来解释配额。假设我们有一个要求,在一所大学,以限制磁盘空间使用的文件系统为教授和学生。让我们假设我们需要分配给教授和学生分为1GB和100MB。我们可以利用“配额”在ZFS来满足这一要求。配额确保文件系统使用的磁盘空间的数量不超过规定的限度。保留有助于在实际分配和保证所需的磁盘空间的数量是可用的文件系统。
zfs set quota=
zfs set reservation=
[root@li1467-130 ~]# zfs set quota=100M testpool/students
[root@li1467-130 ~]# zfs set reservation=100M testpool/students
no datasets available
结论
在这篇文章中,您学到了如何在CentOS 7安装ZFS和使用一些基本的和重要的从zpool命令和ZFS实用程序。这不是一个全面的列表。ZFS有着更多的功能,你可以进一步的探索官方页面。
本文转载自:http://www.iyunv.com/centos7-install-use-zfs/
免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:http://www.iyunv.com/