ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:28.77KB ,
资源ID:9442492      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9442492.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(ZFS文件系统.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

ZFS文件系统.docx

1、ZFS文件系统ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统,经历了 10 年的活跃开发。而最新的开发将全面开放,并重新命名为OpenZFS目录1文件介绍2系统层次3相关区别4创建过程5存储池管理设备6查询存储池状态7管理方式8创新9支持的系统1文件介绍编辑ZFS是一款128bit文件系统,总容量是现有64bit文件系统的1

2、.84x1019倍,其支持的单个存储卷容量达到16EiB(264byte,即 16x1024x1024TB);一个zpool存储池可以拥有264个卷,总容量最大256ZiB(278byte);整个系统又可以拥有264个存储池。可以说在相当长的未来时间内,ZFS几乎不太可能出现存储空间不足的问题。另外,它还拥有自优化,自动校验数据完整性,存储池/卷系统易管理等诸多优点。较ext3系统有较大运行速率,提高大约30%-40%。ZFS是基于存储池的,与典型的映射物理存储设备的传统文件系统不同,ZFS所有在存储池中的文件系统都可以使用存储池的资源。什么是ZFSZFS 文件系统是一个革命性的全新的文件系统

3、,它从根本上改变了文件系统的管理方式,这个文件系统的特色和其带来的好处至今没有其他文件系统可以与之媲美,ZFS被设计成强大的、可升级并易于管理的。ZFS 用“存储池”的概念来管理物理存储空间。过去,文件系统都是构建在物理设备之上的。为了管理这些物理设备,并为数据提供冗余,“卷管理”的概念提供了一个单设备的映像。但是这种设计增加了复杂性,同时根本没法使文件系统向更高层次发展,因为文件系统不能跨越数据的物理位置。ZFS 完全抛弃了“卷管理”,不再创建虚拟的卷,而是把所有设备集中到一个存储池中来进行管理!“存储池”描述了存储的物理特征(设备的布局,数据的冗余等等),并扮演一个能够创建文件系统的专门存

4、储空间。从此,文件系统不再局限于单独的物理设备,而且文件系统还允许物理设备把他们自带的那些文件系统共享到这个“池”中。你也不再需要预先规划好文件系统的大小,因为文件系统可以在“池”的空间内自动的增大。当增加新的存贮介质时,所有“池”中的所有文件系统能立即使用新增的空间,而不需要额外的操作。在很多情况下,存储池扮演了一个虚拟内存。ZFS使用一种写时拷贝事务模型技术。所有文件系统中的块指针都包括256位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖;而是分配一个新块,并把修改过的数据写在新块上。所有与该块相关的元数据块都被重新读、分配和重写。为了减少该过程的开销,多次读写更

5、新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。1利用写时拷贝使ZFS的快照和事物功能的实现变得更简单和自然,快照功能更灵活。缺点是,COW使碎片化问题更加严重,对于顺序写生成的大文件,如果以后随机的对其中的一部分进行了更改,那么这个文件在硬盘上的物理地址就变得不再连续,未来的顺序读会变得性能比较差。1创建一个池的例子?1#zpoolcreatetankmirrorc1t0d0c1t1d0这是一个被镜像了的池,名叫“tank”。如果命令中的设备包含有其他的文件系统或者以别的形式被使用,那么命令不能执行。要查看池是否成功创建,用zpool list 命令,例如:?123#zpooll

6、istNAMESIZEUSEDAVAILCAPHEALTHALTROOT tank80G137K80G0%ONLINE-2系统层次编辑不管层次如何,根总是池的名字。为每个用户及项目创建一个文件系统是个不错的办法!ZFS可以为文件系统分组,属于同一组的文件系统具有相似的性质,这有点像用户组的概念!相似的文件系统能够使用一个共同的名字。大多数文件系统的特性都被用简单的方式进行控制,这些特征控制了各种行为,包括文件系统被mount在哪里,怎么被共享,是否被压缩,是否有限额创建一个文件系统?1# zfs create tank/home下一步,就可以创建各个文件系统,把它们都归组到 home 这个文件

7、系统中。同时可以设置home的特性,让组内的其他文件系统继承的它的这些特性。当一个文件系统层次创建之后,可以为这个文件系统设置一些特性,这些特性将被所有的用户共享:?123456# zfs set mountpoint=/export/zfs tank/home # zfs set sharenfs=on tank/home # zfs set compression=on tank/home # zfs get compression tank/home NAME PROPERTY VALUE SOURCE tank/home compression on local创建单个的文件系统注意:

8、这些文件系统如果被创建好,他们的特性的改变将被限制在home级别,所有的特性能够在文件系统的使用过程中动态的改变。?12# zfs create tank/home/bonwick# zfs create tank/home/billmbonwick、billm文件系统从父文件系统home中继承了特性,因此他们被自动的mount到/export/zfs/user 同时作为被共享的NFS。管理员根本不需要再手工去编辑 /etc/vfstab或 /etc/dfs/dfstab文件。每个文件系统除了继承特性外,还可以有自己的特性,如果用户bonwick的磁盘空间要限制在10G。?1# zfs set

9、 quota=10G tank/home/bonwick用zfs list 命令查看可获得的文件系统的信息,类似于过去的df -k 命令了,呵呵 .?123456# zfs list NAME USED AVAIL REFER MOUNTPOINT tank 92.0K 67.0G 9.5K /tanktank/home 24.0K 67.0G 8K /export/zfstank/home/billm 8K 67.0G 8K /export/zfs/billmtank/home/bonwick 8K 10.0G 8K /export/zfs/bonwick3相关区别编辑传统的文件系统被限制在

10、单个磁盘设备之内,它们的尺寸是不能超越单个磁盘设备。传统文件系统需要驻留于单独设备或者需要一个卷管理系统去使用一个以上的设备,而ZFS建立在虚拟的,被称为“zpools”的存储池之上(存储池最早在AdvFS实现,并且加到后来的Btrfs)。1过去的文件系统是被影射到一个物理存储单元,如:分区;所有的ZFS文件系统共享池内的可获得的存储空间。ZFS 文件系统不需要通过编辑/etc/vfstab文件来维护。ZFS已经抛弃了卷管理,逻辑卷可以不再使用。因为ZFS在使用和管理raw设备能够有更好的表现。Components of a ZFS Storage Pool组成ZFS存储池的元件有:磁盘、文件

11、、虚拟设备,其中磁盘可以是整个硬盘(c1t0d0),也可以是单个slice(c0t0d0s7)。推荐使用整个硬盘,这样可以省去分区操作(format)。RAID-Z 跟 RAID-5的区别传统的raid-5都存在着“写漏洞”,就是说如果raid-5的stripe在正写数据时,如果这时候电源中断,那么奇偶校验数据将跟该部分数据不同步,因此前边的写无效;RAID-Z用了“variable-width RAID stripes”技术,因此所有的写都是full-stripe writes。之所以能实现这种技术,就是因为ZFS集成了文件系统和设备管理,使得文件系统的元数据有足够的信息来控制“variab

12、le-width RAID stripes”理论上说,创建RAID-Z需要至少三块磁盘,这跟raid-5差不多。例如:raidz c1t0d0 c2t0d0 c3t0d0还可以更加复杂一点,例如:raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0 c12t0d0 c13t0d0 c14t0d0上边这个例子创建了14个磁盘的RAID-Z ,这14个盘被分成了两组,但下边这句话有点不大明白:RAID-Z configurations with single-digit

13、groupings of disks should perform better.(我的理解是:相对于大于10个硬盘组成的RAID-Z,少于10个(single-digit 即1位数)硬盘组成的RAID-Z的性能会更好)奇数个硬盘(3)组成的RAID-Z在理论上来说会表现的更好(实际测试中也是,同RAID-5)RAID-Z具有自动修复数据的功能当有损坏的数据块被检测到,ZFS不但能从备份中找到相同的正确的数据,而且还能自动的用正确数据修复损坏的数据。4创建过程编辑创建一个基本的存储池,方法很简单:?1# zpool create tank c1t0d0 c1t1d0这时可以在 /dev/dsk

14、目录下看到一个大的slice,数据动态的stripe跨过所有磁盘!创建一个镜像的存储池也是很简单,只要在上边命令基础上增加“mirror”关键字就可以了,下边是创建一个两路(two-way)镜像的例子:?1# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0创建RAID-Z存储池使用“raidz”关键字就可以了,例如:?1# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0这里/dev/dsk/c5t0d0其实跟用c5t0d0是一样的,由此可以看出,在创建

15、ZFS的时候,磁盘完全可以用物理设备名就可以,不需要指出全路径。检测正在使用的设备在格式化设备之前,ZFS首先决定磁盘是否已经在用或者是否装有操作系统,如果磁盘在用了,那么将会出现下边的错误提示:?1234567# zpool create tank c1t0d0 c1t1d0 invalid vdev specification use -f to override the following errors: /dev/dsk/c1t0d0s0 is currentlymounted on dev/dsk/c1t0d0s1 is currentlymounted on swap /dev/d

16、sk/c1t1d0s0 is part of active ZFS pool zeepool Please see zpool(1M)有些错误可以用 -f 选项来强制覆盖,但是大多错误是不能的。下边给出不能用-f覆盖的错误情况,这时只能手工纠正错误:?1234Mounted file system The disk or one of its slices contains a file system that is currently mounted. To correct this error,use the umount command. File system in /etc/vfst

17、ab The disk contains a file system that is listed in the /etc/vfstabfile,but the file system is not currently mounted. To correct this error,remove or comment out the line in the /etc/vfstab file. Dedicated dump device The disk is in use as the dedicated dump device for the system. To correct this e

18、rror,use the dumpadm command. Part of a ZFS pool The disk or file is part of an active ZFS storage pool. To correct this error,use the zpool command to destroy the pool.创建存储池时默认的mount点在创建存储池时,如果mount点所在目录不存在,系统会自动创建,如果存在,根数据集(root dataset)会自动mount到这个目录上。To create a pool with a different default moun

19、t point,use the -m option of the zpool create command:# zpool create home c1t0d0defaultmountpoint /home exists and is not emptyuse -m option to specifya different default# zpool create -m /export/zfs home c1t0d0This command creates a new pool home and the home dataset with a mount point of /export/z

20、fs.删除存储池Pools are destroyed by using the zpool destroy command. This command destroys the pool even if it contains mounted datasets.# zpool destroy tank5存储池管理设备编辑增加设备到存储池用户可以通过增加一个新的顶级虚拟设备的方法动态给存储池增加空间,这个空间立即对空间中的所有数据集(dataset)有效。要增加一个虚拟设备到池中,用“zpool add”命令,例如:# zpool add zeepool mirror c2t1d0 c2t2d

21、0该命令也可以用 -n选项进行预览,例如:?123456789101112# zpool add -n zeepool mirror c3t1d0 c3t2d0 would update zeepool to the following configuration: zeepoolmirror c1t0d0 c1t1d0 mirror c2t1d0 c2t2d0 mirror c3t1d0 c3t2d0增加和减少一路镜像用“zpool attach”命令增加一路镜像,例如:# zpool attach zeepool c1t1d0 c2t1d0在这个例子中,假设zeepool是第一点里的那个z

22、eepool(已经是两路镜像),那么这个命令将把zeepool升级成三路镜像。用“zpool detach”命令来分离一路镜像# zpool detach zeepool c2t1d0如果池中不存在镜像,这个才操作将被拒绝。错误提示如下边这个例子:# zpool detach newpool c1t2d0 cannot detach c1t2d0: onlyapplicable to mirror and replacing vdevs管理设备的“上线”和“下线”ZFS允许个别的设备处于offline或者online状态。当硬件不可靠或者还没有完全不能用的时候,ZFS会继续向设备读写数据,但不

23、过是临时这么做,因为设备还能将就使用。一旦设备不能使用,就要指示ZFS忽略该设备,并让这个坏掉的设备下线。ZFS不会向offline的设备发送任何请求。注意:如果只是为了更换设备(被换设备并没有出问题),不需要把他们offline。如果offline设备,然后换了一个新设备上去,再把新设备online,这么做会出错!用“zpool offline”命令让设备下线。例如:# zpool offline tank c1t0d0bringing device c1t0d0 offline下边这句话没怎么看懂:You cannot take a pool offline to the point wh

24、ere it becomes faulted. For example,you cannot take offline two devices out of a RAID-Z configuration,nor can you take offline a top-level virtual device.# zpool offline tank c1t0d0cannot offline c1t0d0: no valid replicas默认情况下,offline设备将永久保持offline状态,直到系统重新启动。要临时offline一个设备,用-t选项,例如:# zpool offline

25、-t tank c1t0d0bringing device c1t0d0 offline用“zpoolonine”命令使设备上线# zpool online tank c1t0d0bringing device c1t0d0 online注意:如果只是为了更换设备(被换设备并没有出问题),不需要把他们offline。如果offline设备,然后换了一个新设备上去,再把新设备online,这么做会出错!在这个问题上文档是这么说的:(但愿我没理解错)Note that you cannot use device onlining to replace a disk. If you offline

26、adevice,replace the drive,and try to bring it online,it remains in the faulted state.清扫存储池设备如果设备因为出现错误,被offline了,可以用“zpool clear”命令清扫错误。如果没有特别指定,zpool clear命令清扫池里所有设备。例如:# zpool clear tank如果要清扫指定设备,例如:# zpool clear tank c1t0d0替换存储池里的设备用“zpool replace”命令替换池中设备,例如:# zpool replace tank c1t1d0 c1t2d0c1t

27、1d0 被 c1t2d0 替换注意:如果是mirror或者RAID-Z,替换设备的容量必须大于或等于所有设备最小容量!6查询存储池状态编辑ZFS存储池的基本信息用“zpool list”命令查看存储池的基本信息,例如:?12345678910111213# zpool list NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 80.0G 22.3G 47.7G 28% ONLINE - dozer 1.2T 384G 816G 32% ONLINE - NAME:The name of the pool. SIZE:The total size of

28、the pool,equal to the sum of the size of all top-level virtual devices. USED:The amount of space allocated by all datasets and internal metadata. Note that this amount is different from the amount of space as reported at the file system level. AVAILABLE:The amount of unallocated space in the pool. C

29、APACITY (CAP):The amount of space used,expressed as a percentage of total space. HEALTH:The current health status of the pool. ALTROOT:The alternate root of the pool,if any.可以通过指定名字来查看某一个池的状态,例如:?123# zpool list tank NAME SIZE USED AVAIL CAP HEALTH ALTROOT tank 80.0G 22.3G 47.7G 28% ONLINE -如果要有选择看状

30、态列表,可以用-o选项?12345# zpool list -o name,sizeNAME SIZE tank 80.0G dozer 1.2T Scripting ZFS Storage Pool OutputThe default output for the zpool list command is designed for readability,and is not easy to use as art of a shell script. To aid programmatic uses of the command,the -H option can be used to uppress the column headings and separate fields by tabs,rather than by spaces. For example,to request a simple list of all pool names on the system:?1234567# zpool list -Ho name tank dozer Here is another example: # zpool list -H -o name,sizetank 80.0G dozer 1.2T查看存储池的I/O状态用“zpooliostat”命令查看存储池的I/

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1