zoukankan      html  css  js  c++  java
  • (ext2,ext3,reiserfs,xfs,jfs)文件系统的性能测试

    http://kingshuo.blog.51cto.com/2534759/672521

    (ext2,ext3,reiserfs,xfs,jfs)文件系统的性能测试 2011-09-24 00:39:43
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://kingshuo.blog.51cto.com/2534759/672521

    几种文件系统

     ReiserFS是一个非常优秀的文件系统。也是最早用于的日志文件系统之一。ReiserFS的开发者非常有魄力,整个文件系统完全是从头设计 的。目前,ReiserFS可轻松管理上百G的文件系统,这在企业级应用中非常重要。ReiserFS有先进的日志(Journaling/logging)功能 机制。日志机制保证了在每个实际数据修改之前,相应的日志已经写入硬盘。文件与数据的安全性有了很大提高。Reiserfs对一些小文件不分配inode。而是将这些文件打包,存放在同一个磁盘分块中。而其它文件系统则为每个小文件分别放置到一个磁盘分块 中。这意味着:如果有10000个小文件,就要占用10000个分块。想想看这多浪费磁盘空间。ReiserFS基于快速平衡树(balanced tree)搜索,平衡树在性能上非常卓越,这是一种非常高效的算法。ReiserFS搜索大量文件时,搜索速度要比ext2快得多。Reiserfs文件 系统使用B*Tree存储文件,而其它文件系统使用B+Tree树。B*Tree查询速度比B+Tree要快很多。Reiserfs在文件定位上速度非常 快。 在实际运用中,ReiserFS 在处理小于 1k 的文件时,比ext2 快 到 15 倍!ReiserFS 几乎在各个方面都优于 ext2.


     

    Ext2: 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良 设计。其单一文件大小与文件系统本身的容量上限与文件系统本身的簇大小有关,在一般常见的 x86 电脑系统中,簇最大为 4KB, 则单一文件大小上限 为 2048GB, 而文件系统的容量上限为 16384GB。但由于目前核心 2.4 所能使用的单一分割区最大只有 2048GB,因此实际上能使用 的文件系统容量最多也只有 2048GB。 


     

    Ext3是一种一种日志文件系统,是Ext2的扩展,文件系统在记录数据时,一般都会先写在缓存中,然后再写入磁盘;然而当突然出现故障时,数据无法写入磁盘,此时就会造成数据的丢失,而ext3文件系统就能根据日志追溯功能,能够重新找到数据,避免数据的丢失。


     

    XFS 是 Silicon GraphicsInc. 于 90 年代初开发的。它至今仍作为 SGI 基于 IRIX 的产品(从工作站到超级计算机)的底层文件系统来使用。由于采用缓存数据、延时智能存储,在操作大文件时,有一定的优势XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。   XFS使用高的表结构(B+),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。 


    JFSIBM公司为linux系统开发的一个日志文件系统。从IBM的实力及它对Linux的态度来看,JFS应该是未来日志文件系统中最具实力的一个文件系统。JFS提供了基于日志的字节级文件系统,该文件系统是为面向事务的高性能系统而开发的。JFS 能够在几秒或几 分钟内就把文件系统恢复到一致状态。JFS能够保证数据在任何意外宕机的情况下,不会造成磁盘数据的丢失与损坏

     

    以上内容摘自互联网, 笔者理解,现在以“数据无价”为主的时代,良好的文件系统,对数据的存储有很大的影响,不仅要满足快速写数据,还要满足数据的完整性和安全性,故很大的文 件系统都会以日志记录相应的一份数据,防止数据在存储时发生错误;同时随着数据的大量拥集,同时要求支持较大的存储数据的能力和快速的写数据能力,但一切 都不是绝对的,人无完人何况是人发明的文件系统,我们只能在实际生产中,依据生产需要,选择合适的文件系统,讲了那么多,笔者就依据自己的系统简单测试这 几种文件系统的性能,供大家以后实际应用中参考。

     


    笔者用的是虚拟机环境,系统是redhat 5.4,由于此内核中无法正常支持xfs,笔者就下载内核安装包,使其能够支持xfs

    安装支持xfs的内核:

    kernel-PAE-2.6.18-274.3.1.el5.centos.plus.i686.rpm

    kmod-xfs-PAE-0.4-2.i686.rpm

    重启系统,选择刚安装的内核。

     

    安装xfs,及管理jfsreiserfs的工具包:

     

    <ol class="dp-xml"><li class="alt"><span><span>#rpm  -ivh  kmod-xfs-0.4-2.i686.rpm </span></span></li><li><span>#rpm  -ivh  xfsprogs-2.9.4-1.el5.centos.i386.rpm </span></li><li class="alt"><span>#rpm  -ivh  jfsutils-1.1.12-1.i386.rpm </span></li><li><span>#rpm  -ivh  reiserfs-utils-3.6.19-2.4.1.i386.rpm </span></li></ol>

     

     

    加载xfs系统:

    #modprobe   xfs

     

    安装测试文件系统性能的工具:

    #rpm  -ivh  iozone-3-397.i386.rpm

    相关命令的介绍:

    Iozone可测试的文件系统的性能:读,写,重读,重写,后向读,条带读,随机读,随机写,异步

     

    <ol class="dp-xml"><li class="alt"><span><span>-a  使用全自动的模式  64k---512M </span></span></li><li><span>-b  将测试的结果保存到指定文件 </span></li><li class="alt"><span>-R  保存为excel文件,生成excel报告信息 </span></li><li><span>-z  包含一些不常用的大小 </span></li><li class="alt"><span>-f  测试固定文件 </span></li><li><span>-g  设置最大文件大小,最大测试文件4G </span></li><li class="alt"><span>-n  设置下限 </span></li><li><span>-s  指定测试文件固定大小 </span></li><li class="alt"><span>-y  指定测试块的大小范围 </span></li><li><span>-q  结合y选项使用 </span></li><li class="alt"><span>-r  指定一次写入/读出的块大小 </span></li><li><span>-i N 用来选择测试项, 比如Read/Write/Random 比较常用的是0 1 2,可以指定成-i 0 -i 1 -i2.这些别的详细内容请查man   <span class="attribute">0</span><span>=</span><span class="attribute-value">write</span><span>/rewrite   </span><span class="attribute">1</span><span>=</span><span class="attribute-value">read</span><span>/re-read   </span><span class="attribute">2</span><span>=</span><span class="attribute-value">random</span><span>-read/write   </span><span class="attribute">3</span><span>=</span><span class="attribute-value">Read</span><span>-backwards   </span><span class="attribute">4</span><span>=</span><span class="attribute-value">Re</span><span>-write-record   </span><span class="attribute">5</span><span>=</span><span class="attribute-value">stride</span><span>-read   </span><span class="attribute">6</span><span>=</span><span class="attribute-value">fwrite</span><span>/re-fwrite   </span><span class="attribute">7</span><span>=</span><span class="attribute-value">fread</span><span>/Re-fread   </span><span class="attribute">8</span><span>=</span><span class="attribute-value">random</span><span> mix   </span><span class="attribute">9</span><span>=</span><span class="attribute-value">pwrite</span><span>/Re-pwrite   </span><span class="attribute">10</span><span>=</span><span class="attribute-value">pread</span><span>/Re-pread   </span><span class="attribute">11</span><span>=</span><span class="attribute-value">pwritev</span><span>/Re-pwritev   </span><span class="attribute">12</span><span>=</span><span class="attribute-value">preadv</span><span>/Re-preadv  </span></span></li></ol>

     

     

    测试ext2文件系统:

     

    <ol class="dp-xml"><li class="alt"><span><span># mke2fs /dev/sdb5 </span></span></li><li><span>#mkdir   /test </span></li><li class="alt"><span>#mount   /dev/sdb5   /test </span></li><li><span>#iozone -a -s 128M -y 512 -q 16384 -i 0 -i 1 -i 2 -f /test/a.out -Rb /root/ext2.wks </span></li></ol>

     

    命令说明:使用iozone工具,128M为指定的测试文件的大小,16384为指定测试块的大小,单位为字节,-i指定对哪些性能进行测试,这里指定的是写/重写,读/重读,随机读/随机重读,/test/a.out为在测试的分区上写数据的文件名,/root/ext2.wks为输出的表格报告信息)

    测试ext3文件系统:

     

    <ol class="dp-xml"><li class="alt"><span><span>#umount   /dev/sdb5 </span></span></li><li><span>#mke2fs -j  /dev/sdb5 </span></li><li class="alt"><span>#mount   /dev/sdb5   /test </span></li><li><span>#iozone -a -s 128M -y 512 -q 16384 -i 0 -i 1 -i 2 -f /test/b.out -Rb /root/ext3.wks </span></li></ol>

     

    测试reiserfs文件系统:

     

    <ol class="dp-xml"><li class="alt"><span><span>#umount   /dev/sdb5 </span></span></li><li><span>#mkfs.reiserfs  /dev/sdb5 </span></li><li class="alt"><span>#mount   /dev/sdb5   /test </span></li><li><span>#iozone -a -s 128M -y 512 -q 16384 -i 0 -i 1 -i 2 -f /test/c.out -Rb /root/reiserfs.wks </span></li></ol>

     

    测试xfs文件系统:

     

    <ol class="dp-xml"><li class="alt"><span><span>#umount   /dev/sdb5 </span></span></li><li><span>#mkfs.xfs    /dev/sdb5 </span></li><li class="alt"><span>#mount   /dev/sdb5   /test </span></li><li><span>#iozone -a -s 128M -y 512 -q 16384 -i 0 -i 1 -i 2 -f /test/d.out -Rb /root/xfs.wks </span></li></ol>

     

    测试jfs文件系统:

     

    <ol class="dp-xml"><li class="alt"><span><span>#umount   /dev/sdb5 </span></span></li><li><span>#mkfs.jfs    /dev/sdb5 </span></li><li class="alt"><span>#mount   /dev/sdb5   /test </span></li><li><span>#iozone -a -s 128M -y 512 -q 16384 -i 0 -i 1 -i 2 -f /test/e.out -Rb /root/jfs.wks </span></li></ol>

     

     

    将生成的表格数据拷入excel表中并制图

     

    性能测试孰高孰低,大家自见分晓!

    本文出自 “痕久远” 博客,请务必保留此出处http://kingshuo.blog.51cto.com/2534759/672521

  • 相关阅读:
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Visual Studio断点调试, 无法监视变量, 提示无法计算表达式
    ASP.NET MVC中MaxLength特性设置无效
    项目从.NET 4.5迁移到.NET 4.0遇到的问题
    发布网站时应该把debug设置false
    什么时候用var关键字
    扩展方法略好于帮助方法
    在基类构造器中调用虚方法需谨慎
    ASP.NET MVC中商品模块小样
    ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现
  • 原文地址:https://www.cnblogs.com/lexus/p/2196992.html
Copyright © 2011-2022 走看看