« DTrace GUI 插件Demo | Main | 拨动 Java 的琴弦 »
http://developers.sun.com.cn/blog/functionalca/date/20080524 星期六 2008年05月24日

ZFS Demo

作者:王萌
学校:东南大学
邮箱:apollowm@gmail.com
适用读者:中级

首先是对ZFS的一些介绍,然后是自己讲座时使用的Demo介绍,部分资料来源于http://wiki.huihoo.com/index.php?title=ZFS。
一、对ZFS优点的简单介绍:
1、简单管理
  ZFS 结合了复杂的存储管理理念并可进行自动化管理,从而将管理费用降低了 80%。
2、 可验证的数据完整性
ZFS 使用了 64 位的校验和来保护所有数据,可探测并挽救无记载数据崩溃。
3、 无限制的伸缩性
作为世界上首款 128 位文件系统,ZFS 提供的性能高达 32 位或 64 位系统的 160 亿平方倍。
4、极高的性能
其事务模式摆脱了在 I/O 发布顺序上的诸多传统限制,从而大大提高了性能。
    另外,ZFS 对应用程序来说就是一个标准的 POSIX 文件系统 – 无需移植。但对管理员来说,它就是一种汇集存储模式,它摒弃了过时的容量理念,同时也避免了相关的分区管理、分区分配和文件系统容量调整等问题。成千甚至上万的文件系统都可同时使用 ZFS 的共用存储池,并且每个文件系统都可根据需要恰到好处地占用一定空间。存储池中所有设备的 I/O 带宽组合对任一文件系统都始终可用。
二、选择ZFS的理由:
1、再也不需要fsck, scandisk
    不管你是在用Linux,UNIX还是Windows,相信大家都有过类似的体会:当系统意外断电或者非法关机,系统重起后发现文件系统有 inconsistent的问题,这时 候就需要fsck或者scandisk 来修复,这段时间是非常耗时而且最后不一定能够修复成功。更糟糕的是,如果这是一台服务器需要做fsck的时候,只能offline(下线),而且现有应用往往都是大硬盘,相应fsck修复时间也很长,这对许多使用该服务器的用户来说几乎不能忍受的。而使用ZFS后大家可以彻底抛弃fsck这种工具,因为ZFS是一个基于COW(Copy on Write)机制的文件系统。COW是不会对硬盘上现有的文件进行重写,保证所有硬盘上的文件都是有效的。所以不会有这种inconsistent的概念,自然就不需要这种工具了。
2、管理简单
    ZFS作为一个全新的文件系统,全面抛弃传统File System + Volume Manager + Storage的架构,所有的存储设备是通过ZFS Pool进行管理,只要把各种存储设备加 入同一个ZFS Pool,大家就可以轻松的在这个ZFS Pool管理配置文件系统。大家再也不用牢记各种专业概念,各种命令newfs, metinit及各种Volume Manager的用法。在ZFS中我们只需要两个命令,zpool(针 对ZFS Pool管理)和zfs(针对ZFS文件系统的管理),就可以轻松管理128位的文件系统。举个例子,我们经常会遇到系统数据增长过快,现有存储容量不够,需要添加硬盘,如果依照传统的Volume Manager管理方式,那我们需要预先要考虑很多现有因素,还要预先根据应用计算出需要配置的各种参数。在ZFS情况下,我们的系统管理员可以彻底解放,再也不需要这种人为的复杂考虑和计算,我们可以把这些交给ZFS,因为ZFS Pool会自动调节,动态适应需求。我们只需一个简单的命令为 这个ZFS Pool加入新的硬盘就可以了。
3、没有任何容量限制
    ZFS(Zettabyte File System)文件系统就如其名字所预示,可以提供真正的海量存储,在现实中几乎不可能遇到容量问题。在现有的64位kernel(内核)下,它可以容纳达到16 Exabytes(264)大小的单个文件,可以使用264个存储设备,可以创建264个文件系统。
4、完全保证 数据 的正确和完整
    由于ZFS所有的数据操作都是基 于Transaction(事务),一组相应的操作会被ZFS解析为一个事务操作,事务的操作就代表着一组操作要么一起失败,要么一起成功。而且如前所说,ZFS对 所有的操作是基于COW(Copy on Write), 从而保证设备上的数 据始终都是有效的,再也不会因为系统崩溃或者意外掉电导致数据文件的inconsistent。
5、自我修复功能
    传统的硬盘Mirror及RAID 4,RAID 5阵列方式都会遇到前面提到过的问题:Silent Data Corruption。如果发生了某块硬盘物理问题导致数据错误,现有的Mirror,包括RAID 4,RAID 5阵列会默默地把这个错误数据提交给上层应用。如果这个错误发生在Metadata中,则会直接导致系统的Panic。而且还有一种更为严重的情况是:在RAID 4和RAID 5阵列中,如果系统正在计算Parity数值,并再次写入新数据和新Parity值的时候发生断电,那么整个阵列的所有存储的数据都毫无意义了。在ZFS中则提出了相对应的ZFS Mirror和RAID-Z方式,它在负责读取数据的时候会自动和256位校验码进行校验,会主动发现这种Silent Data Corruption,然后通过相应的Mirror硬盘或者通过RAID-Z阵列中其他硬盘得到正确的数据返回给上层应用,并且同时自动修复原硬盘的Data Corruption 。
6、安全
    在安全上,ZFS支持类似NT风格NFSv4版的ACL(读取控制列表)。而且前面所提到的256位验证码,用户可选择多种验证方式,包括SHA-256验证算法,从而在物理存储单元级别上保证数据的安全性。
7、兼容性
    ZFS是一个完全兼容POSIX规范的文件系统,所以处于上层的应用程序是完全不受影响。ZFS也提供一个Emulated Volume模块,可以把任何一个ZFS文件系统作为普通的块设备使用。同时ZFS也可以使用基于Volume Manager构建的Volume作为存储设备单 元。这样在不需要修改应用程序,不修改已有文件系统下,给了大家最大的自由度去获得ZFS提供的各种特性。
8. 开源
    ZFS是Sun Microsystems公 司作为OpenSolaris的一个开源项目运作并且完全免费使用,点击这里(http://www.opensolaris.org/os/community/zfs/source/) 可以直接浏览到ZFS的代码。 这就代表着我们不仅同时可以享受商业公司的高质量,也可以获得开源模式的优点。
三、ZFS的使用:
在自己的solaris系统下完全可以学习使用zfs:
我们首先为zfs使用创建一个目录,在里面简历4个100m文件用来模拟4个磁盘
mkdir zfsfile
mkdir zfsfile/test
mkfile 100m f1
mkfile 100m f2
mkfile 100m f3
mkfile 100m f4
我们用zpool命令把f1和f2文件放到自己的mypool中,并查看
zpool create mypool /zfsfile/f1 /zfsfile/f2
zpool list
在我们建立的mypool中,简历2个文件aa和bb
zfs create mypool/aa
zfs create mypool/bb
zfs list
我们可以设置系统的一些挂载和mypool关联
zfs set mountpoint=/zfsfile/test mypool
zfs list
我们可以手动设置mypool里文件的大小
zfs set quota=50m mypool/aa
zfs list
zfs set quota=50m mypool/bb
zfs list
当mypool容量不够时,我们可以增加容量扩充mypool
zpool add mypool /zfsfile/f3 /zfsfile/f4
zpool list
某个文件不再使用时,我们可以用命令删除
zfs destroy mypool/bb
zfs list
当mypool也不再使用时,我们也可以用命令删除
zpool destroy mypool
zpool list
当然,如果很多zfs指令不是很了解,我们可以查看相应的手册
man zfs
man zpool
最后,我们的demo完成,删除建立的几个文件和文件目录
rm f1 f2 f3 f4
另外,如果感兴趣,也可以使用一些zfs中快照和回滚的命令
zfs snapshot mypool/aa@Teusday
zfs rollback mypool/aa@monday



发表于 SEU [Solaris Demo] ( 五月 24, 2008 12:11 下午 ) Permalink | 评论[0]
评论:

发表一条评论:
  • HTML语法: 禁用