版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告黄宗文1基本概念1.1 ZFS ZFS源自于Sun Microsystems为Solaris操作系统开发的文件系统。ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑管理的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS是一个使用CDDL协议条款授权的开源项目。ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统(Dynamic File System),是第一个128位文件系统。最初是由Sun公司为Solaris 10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称
2、为是终极文件系统,经历了10年的活跃开发。而最新的开发将全面开放,并重新命名为 OpenZFS。1.2 ZFS存储池ZFS 使用存储池的概念来管理物理存储。以前,文件系统是在单个物理设备的基础上构造的。为了利用多个设备和提供数据冗余性,引入了卷管理器的概念来提供单个设备的表示,以便无需修改文件系统即可利用多个设备。此设计增加了更多复杂性,并最终阻碍了特定文件系统的继续发展,因为这类文件系统无法控制数据在虚拟卷上的物理放置。ZFS 可完全避免使用卷管理。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。存储池描述了存储的物理特征(设备布局、数据冗余等),并充当可以从其创建文件系统的任意数据
3、存储库。文件系统不再受限于单个设备,允许它们与池中的所有文件系统共享磁盘空间。您不再需要预先确定文件系统的大小,因为文件系统会在分配给存储池的磁盘空间内自动增长。添加新存储器后,无需执行其他操作,池中的所有文件系统即可立即使用所增加的磁盘空间。在许多方面,存储池与虚拟内存系统相似:将一个内存 DIMM 加入系统时,操作系统并不强迫您运行命令来配置内存并将其指定给个别进程。系统中的所有进程都会自动使用所增加的内存。1.3事务性语义ZFS 是事务性文件系统,这意味着文件系统状态在磁盘上始终是一致的。传统文件系统可就地覆盖数据,这意味着如果系统断电(例如,在分配数据块到将其链接到目录中的时间段内断电
4、),则会使文件系统处于不一致状态。以前,此问题是通过使用fsck命令解决的。此命令负责检查并验证文件系统状态,并尝试在操作过程中修复任何不一致性。这种文件系统不一致问题曾给管理员造成巨大困扰,fsck命令并不保证能够解决所有可能的问题。最近,文件系统引入了日志记录的概念。日志记录过程在单独的日志中记录操作,在系统发生崩溃时,可以安全地重放该日志。由于数据需要写入两次,因此该过程会引入不必要的开销,而且通常会导致一组新问题,例如在无法正确地重放日志时。对于事务性文件系统,数据是使用写复制语义管理的。数据永远不会被覆盖,并且任何操作序列会全部被提交或全部被忽略。因此,文件系统绝对不会因意外断电或系
5、统崩溃而被损坏。尽管最近写入的数据片段可能丢失,但是文件系统本身将始终是一致的。此外,只有在写入同步数据(使用 O_DSYNC 标志写入)后才返回,因此同步数据决不会丢失。事务型文件系统采用类似数据库的事务性操作,在一次安全的数据写回操作完成时 ,创建一个事务点,保存一个正常状态,然后执行下一次文件操作,在写回过程中如果发生掉电 、系统崩溃等突发状态,可以回滚到上一个事务点时刻的文件系统状态,从而保证数据的一致性 。1.4 RAIDRaid-廉价冗余磁盘阵列是将一对磁盘通过相关的技术连接起来,构成逻辑上的空间。RAID可以使用诸多磁盘驱动器同时传输数据,在逻辑上他们又是一个磁盘驱动器,用RAI
6、D可以使单个的磁盘驱动器提高数倍的速率。磁盘阵列根据RAID控制器采用的工作模式和算法不同有不同的级别,分别可以提供不同的速度、安全性和性价比。常用的有RAID0、RAID1、RAID5。RAID0-磁盘条带化,又称数据分块,把数据分布在多个盘上,在读写时是以并行的方式对磁盘同时进行操作。提高了数据访问性能,但是没有冗余。图 1 RAID0数据存储格式Fig 1 RAID0 data storage formatRAID1-磁盘镜像,即每个工作磁盘都有一个镜像盘,每次写数据时必须同时写入镜像盘,读数据时只从工作盘中读出数据。提高了可靠性,但是容量降低了一半。图 2 RAID1数据存储格式Fig
7、 2 RAID1 data storage formatRAID5-磁盘条带化并具有分布式校验,采用奇偶校验,校验信息是分散在不同的硬盘驱动器上的。是一种快速、大容量和容错分布合理的磁盘阵列。图 3 RAID5数据存储格式Fig 3 RAID5 data storage format1.5 RAID5写漏洞RAID5在写条带(strip)数据的时候,如果突然系统断电、系统崩溃、磁盘位错误等故障,可能导致写条带数据单元(chunk)数据丢失的发生,从而导致在降级模式下无法通过正常的异或运算计算出正确的数据。RAID5的写漏洞问题一直是一个影响RAID5可靠性的重要问题。1.6 RAID5小写问题
8、对于RAID5来说,执行小块数据写的效率较低,即小写问题。对于RAID5而言,每执行一次小块数据写操作,不仅需要写入新的用户数据,而且需要写入新的校验数据,校验值的计算要用到旧的用户数据,所以要完成每一个小写请求都要经历4个磁盘操作过程:读取旧用户数据,读取旧校验值,写入新用户数据,写入新校验值。使得RAID5相应时间大大增长。2互相比较 2.1 ZFS和传统文件系统的区别传统的文件系统被限制在单个磁盘设备之内,它们的尺寸是不能超越单个磁盘设备。传统文件系统需要驻留于单独设备或者需要一个卷管理系统去使用一个以上的设备,而ZFS建立在虚拟的,被称为“zpools”的存储池之上 (存储池最早在Ad
9、vFS实现,并且加到后来的Btrfs)。过去的文件系统是被影射到一个物理存储单元,如:分区;所有的ZFS文件系统共享池内的可获得的存储空间。ZFS已经抛弃了卷管理,逻辑卷可以不再使用。因为ZFS在使用和管理raw设备能够有更好的表现。2.2 RAIDZ1和RAID5的区别RAIDZ-1和RAID-5是很相似的,有一个单一的奇偶校验位位于所以的磁盘阵列中,而且条带的宽度都是可变的,基本可以涵盖所有的磁盘阵列的宽度,可以是很多的磁盘,或者很少的磁盘。如同raid-5一样,RAIDZ是一种数据奇偶校验。与raid5不同的是,它使用的是动态地存储条宽度。不论数据块的大小是多少,每个块均是raid-z的
10、一个数据条带。这意味着,每个RAIDZ写操作是一个全条带写操作。同时,与ZFS的写复制事物语义相结合,就完全解决了RAID5的写漏洞问题。RAIDZ还比传统的raid快,因为它从来不用执行rmw。然而,这样的方式会增加RAIDZ重构的实现复杂度。因为数据条带的大小各异,必须遍历ZFS文件系统元数据来进行RAIDZ的重构。图 4 RAID5和RAIDZ1存储格式比较Fig 4 Comparison of RAID5 and RAIDZ1 storage formats3.环境3.1 LINUX系统3.1.1硬件HP电脑,i5处理器,8G内存,除去装系统的硬盘,给虚拟机添加8个1G的硬盘3.1.2
11、软件(1) VMware Workstation 12 Pro(2) ubuntu-16.04-desktop-amd64.iso3.2环境搭建3.2.1创建一个虚拟机,内存为1G,主机名为Ubuntu16.043.2.2 搭建ZFS和ZFSraidz1环境(1) 首先搭建ZFS,在Ubuntu中打开终端(2) sudo su #始终需要管理员权限(3) apt install zfsutils-linux #安装zfs组件 (4) zpool create myzpool /dev/sdb /dev/sdc #创建普通的存储池(5) zfs create myzpool/fly #在存储池中
12、添加文件系统(6) zpool create myraidz1 raidz1 /dev/sdd /dev/sde /dev/sdf #创建raidz1存储池(7) zfs create myraidz1/home #向raidz1存储池中添加文件系统(8)zpool list #显示存储池列表(9)zfs list #显示ZFS文件系统列表3.2.3 搭建raid5环境(1) apt install mdadm #安装mdadm包(2) mdadm examine /dev/sdg /dev/sdh /dev/sdi #检查磁盘是否存在RAID块(3) fdisk /dev/sdg图 5 分区
13、创建过程Fig 5 Partition create process请按照下面的说明在/dev/sdg硬盘上创建分区。-按n创建新的分区-然后按e选择扩展分区。-接下来选择分区号1.默认就是1.-接下来是选择柱面大小,我们选择默认大小,所以只需要按两次Enter键默认将整个容量分配给它。-按p来打印创建好的分区。-改变分区类型,按l可以列出所有可用的类型。-按t修改分区类型。-这里使用fd设置为RAID的类型。-然后再次使用p查看我们所做的更改。-使用w保存更改。(4) 重复上述操作,对/dev/sdh /dev/sdi进行相同处理。注意要对应好相应的硬盘号。(5) mdadm examine
14、 /dev/sdg /dev/sdh /dev/sdi #创建分区后,检查磁盘的变化,磁盘类型为fd类型。(6) mdadm create /dev/md0 level=5 raid-devices=3 /dev/sdg1 /dev/sdh1 /dev/sdi1 #使用所有新建的分区(sdg1,sdh1,sdi1)创建一个RAID设备“md0”,-level=5因为创建的是raid5,-raid-devices=3因为使用了3个设备,后面跟设备名。(7)mkfs.ext4 /dev/md0 #挂载前为md0设备创建ext4文件系统(8)mkdir /mnt/raid5(9)mount /dev
15、/md0 /mnt/raid5/ #挂载设备md04.测试5.1冗余测试5.1.1Raid5冗余测试(1)cd /mnt/raid5/ #转到目录/mnt/raid5/下(2)vi hello.c #创建hello.c文件,并写入“hello world”(3)mdadm fail /dev/md0 /dev/sdg1 #标记sdg1为失效(4)mdadm detail /dev/md0 #显示细节图 6 标记磁盘失效Fig 6 Mark disk failure(5)mdadm remove /dev/md0 /dev/sdg1 #删除磁盘(6)mdadm detail /dev/md0 #
16、显示细节图 7 卸载磁盘Fig 7 Umount disk(7) vi hello.c #打开hello.c文件,看文件是否能正常打开图 8 查看hello.c文件Fig 8 Check hello.c file(8)mdadm manage /dev/md0 add /dev/sdg1 #把磁盘添加回去5.1.2ZFSraida1冗余测试(1)cd /myraidz1/home/(2)vi hello.c(3)zpool offline myraidz1 /dev/sdd #使sdd磁盘脱机(4)zpool status #显示当前所有存储池状态 图 9 存储池状态Fig 9 State o
17、f the storage pool(5) vi hello.c图 10 查看hello.c文件Fig 10 Check hello.c file(6)zpool online myraidz1 /dev/sdd #使sdd磁盘联机(7)zpool status图 11 存储池状态Fig 11 State of the storage pool5.2读写性能测试安装filebench(1)下载filebench-1.5-alpha3.tar.gz压缩包,网址:(2)cd 下载(3)tar zxvf filebench-1.5-alpha3.tar.gz #解压压缩文件(4)cd fileben
18、ch-1.5-alpha3 #进入文件目录(5)sudo su #转换管理员身份(6)apt install intltool automake libtool flex bison #安装filebench依赖的软件包(7)./configure #手动安装软件步骤(8)make #编译软件(9)make install #编译并安装软件5.2.1LinuxFS读写性能测试(1)编写LinuxFS.f文件set $dir=/mnt/raid5set $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;u
19、pper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=filereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=read1,fd=1,iosize=$iosizeflowop closefile name=close1,fd=1run 60(2)file
20、bench f LinuFS.f #测试文件读写性能,注意执行命令时要在LinuxFS.f同一目录5.2.2普通ZFS读写性能测试(1)编写ZFS.f文件set $dir=/myzpool/flyset $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;upper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=f
21、ilereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=read1,fd=1,iosize=$iosizeflowop closefile name=close1,fd=1run 60(2)filebench f ZFS.f #测试文件读写性能,注意执行命令时要在ZFS.f同一目录5.2.3ZFSraidz1读写性能测试(1)编写ZFSraidz1.f文件set $dir=/myraidz1/homeset $filesize=100mset $iosize=cvar(type=cvar-uniform,parameters=lower:4096;upper:8192)define file name=singlefile,path=$dir,size=$filesize,preallocdefine process name=filereader,instances=1thread name=filereader,memsize=1m,instances=1flowop openfile name=open1,filesetname=singlefile,fd=1flowop read name=re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026宁夏教育厅招聘教研员8人笔试模拟试题及答案解析
- 2026福建医科大学附属医院招聘41人笔试参考题库及答案解析
- 2026年3月江苏扬州市教育系统事业单位招聘教师5人笔试备考试题及答案解析
- 2026年南充科技职业学院单招综合素质考试题库有答案详细解析
- 2026上海复旦大学彭慧胜院士团队招聘物理相关背景博士后笔试模拟试题及答案解析
- 中建安装南京公司2026届春季校园招聘笔试模拟试题及答案解析
- 2026四川广安市中医医院招聘12人笔试备考试题及答案解析
- 2026内蒙古包头市昆都仑区青年志愿者协会招聘见习岗位人员20人笔试参考题库及答案解析
- 2026年郑州市郑盐盐业集团有限公司招聘一批工作人员笔试备考试题及答案解析
- 2026届江苏省无锡市南长实验中学初三下学期期末考试(英语试题理)试题含解析
- 2026浙江温州市公安局招聘警务辅助人员42人笔试参考题库及答案解析
- 2026广东茂名市公安局招聘警务辅助人员67人考试参考题库及答案解析
- 2026年希望杯IHC全国赛二年级数学竞赛试卷(S卷)(含答案)
- 中国抗真菌药物临床应用指南(2025年版)
- 2025-2026 学年下学期八年级英语下册教学计划
- 幼儿园春季育儿知识分享:守护成长健康同行
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(预热题)
- 2025年安徽审计职业学院单招职业适应性测试试题及答案解析
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 2025年西南计算机有限责任公司招聘笔试真题
- 2026常德烟草机械有限责任公司招聘35人笔试参考题库及答案解析
评论
0/150
提交评论