通过综合使用多种标准文件系统Benchmarks对Ext3, Ext4, Reiserfs, XFS, JFS, Reiser4的性能测试对比,对不同应用选择合适的文件系统给出以下方案,供大家参考。文件系统性能测试数据见附表。
1、大量小文件(LOSF, Lost of small files)I/O应用(如小图片)
Reiserfs(首选), Ext4文件系统适合这类负载特征,IO调度算法选择deadline,block size = 4096, ext4关闭日志功能。
reiserfs mount参数:-o defaults, async, noatime, nodiratime, notail, data=writeback
ext4 mount参数:-o defaults, async, noatime, nodiratime, data=writeback, barrier=0
关闭ext4日志:tune2fs -O^has_journal /dev/sdXX
 
2、大文件I/O应用(如视频下载、流媒体)
EXT4文件系统适合此类负载特征,IO调度算法选择anticipatory, block size = 4096, 关闭日志功能,启用extent(default)。
mount参数:-o defaults, async, noatime, nodiratime, data=writeback, barrier=0
关闭ext4日志:tune2fs -O^has_journal /dev/sdXX
 
3、SSD文件系统选择
EXT4/Reiserfs可以作为SSD文件系统,但未对SSD做优化,不能充分发挥SSD性能,并影响SSD使用时间。
Btrfs对SSD作了优化,mount通过参数启用。但Btrfs仍处于实验阶段,生产环境谨慎使用。
JFFS2/Nilfs2/YAFFS是常用的flash file system,在嵌入式环境广泛应用,建议使用。性能目前还未作测试评估。
 
 
简单分析一下选择Reiserfs和ext4文件系统的原因:
1、Reiserfs
 大量小文件访问,衡量指标是IOPS,文件系统性能瓶颈在于文件元数据操作、目录操作、数据寻址。reiserfs对小文件作了优化,并使用B+ tree组织数据,加速了数据寻址,大大降低了open/create/delete/close等系统调用开销。mount时指定noatime, nodiratime, notail,减少不必要的inode操作,notail关闭tail package功能,以空间换取更高性能。因此,对于随机的小I/O读写,reiserfs是很好的选择。
 
2、Ext4
 大文件顺序访问,衡量指标是IO吞吐量,文件系统性能瓶颈在于数据块布局(layout)、数据寻址。Ext4对ext3主要作了两方面的优化:
 一是inode预分配。这使得inode具有很好的局部性特征,同一目录文件inode尽量放在一起,加速了目录寻址与操作性能。因此在小文件应用方面也具有很好的性能表现。
 二是extent/delay/multi的数据块分配策略。这些策略使得大文件的数据块保持连续存储在磁盘上,数据寻址次数大大减少,显著提高I/O吞吐量。
  因此,对于顺序大I/O读写,EXT4是很好的选择。另外,XFS性能在大文件方面也相当不错。
 
附表:文件系统性能测试数据
Testing Host:              
CPU Genuine Intel(R) 2.13GHz 4 cores              
MEM 4GB              
DISK SAS 146.8GB * 4              
  /dev/sdb Ext3 disable journal defaults,async,noatime,nodiratime    
  /dev/sdc Ext4 disable journal defaults,async,noatime,nodiratime,data=writeback,barrier=0
  /dev/sdd XFS has_journal defaults,async,noatime,nodiratime,barrier=0  
  /dev/sde Reiser4 has_journal defaults,async,noatime,nodiratime    
  /dev/sde reiserfs has_journal defaults,async,noatime,nodiratime,notail,data=writeback
  /dev/sde JFS has_journal defaults,async,noatime,nodiratime    
  /dev/sde btrfs has_journal defaults.async.noatime,nodiratime,data=writeback  
                 
NO. Test Points Ext3 Ext4 Reiserfs XFS JFS Reiser4 Btrfs
1 filesystem creation s 37.381 22.333 3.744 1.786 1.858 2.758  
2 filesystem mounting s 0.024 0.039 0.299 0.079 0.068 3.524  
3 filesystem unmounting s 0.011 0.02 0.074 0.025 0.048 0.037  
4 copy a large file (4GB) s 35.486 37.227 30.605 43.547 30.32 42.17  
5 recopy the large file s 56.919 57.526 59.893 59.315 55.654 57.925  
6 remove the large file s 3.126 0.295 2.178 0.016 0.018 4.137  
7 copy linux kernel archive.tar s 0.103 0.143 0.574 0.094 0.552 0.564  
8 extract files from kernel.tar s 42.678 44 39.681 57.374 70.993 47.538  
9 create kernel.tar from linux source s 32.733 39.145 39.305 39.167 37.92 43.828  
10 compile linux kernel s 561.834 566.474 557.429 571.355 1773.143 828.028  
11 copy kernel file tree s 190.701 197.191 194.864 217.355 255.777 185.406  
12 recopy kernel file tree s 66.272 170.643 100.67 143.517 194.898 79.247  
13 remove kernel file tree s 13.719 3.783 3.661 50.072 92.068 33.2  
14 list all files for kernel source(tree) s 15.961 15.539 20.717 15.818 29.139 15.611  
15 file search in kernel source (find) s 0.119 0.9 0.331 2.515 0.791 5.913  
16 create 1 million files s 1000.969 986.712 940.201 1128.244 1111.509 2462.65  
17 recopy the 1 million files s 4783.069 595.828 59.252 972.671 1005.057 1734.48  
18 remove the 1 million files s 3257.384 396.32 74.917 735.048 2395.417 1165.314  
19 dd read IOPS (bs=1KB,4GB) s 26.795 27.257 26.036 26.158 25.948 26.485  
20 dd write IOPS (bs=1KB,4GB) s 27.006 26.461 32.577 26.164 29.203 126.906  
21 dd read BW (bs=1MB,4GB) s 26.784 23.552 25.999 26.233 28.635 26.541  
22 dd write BW (bs=1MB,4GB) s 29.429 26.123 30.64 24.683 31.446 31.925  
                 
  Postmark (postmark.conf)              
23 transaction /s 333 384 384 113 166 416  
24 read MB/s 27.98 20.42 24.37 9.69 10.64 30.22  
25 write MB/s 87.32 63.72 76.06 30.23 33.21 94.31  
                 
  Randomio (randomio bigfile 10 .25 .01 2048 60 1) (X表示Randomio不支持该文件系统)      
26 create 4GB file MB/s 167 166 164 168 156 51.3  
27 random io/s 372.1 382.3 378.8 521.5 382.7 X  
28 random read latency ms 26.9 26.2 26.6 13.2 26.3 X  
29 random write latency ms 26.5 26 25.9 37.1 25.6 X  
30 random read latency std dev ms 17.9 16.7 16.6 13.1 16.3 X  
31 random write latency std dev ms 15.8 14.9 14.5 38.8 14.3 X  
                 
  Bonnie++ (-d /cacheX -s 7920 -x 1 -u root) (+++++表示未获得准确测试结果)      
32 read KB/s 155161 150029 160919 159242 155811 144079  
33 write KB/s 155150 150635 142801 159393 139770 107923  
34 seek /s 812.9 816.7 816 806.4 730.7 775.9  
35 sequential create /s 7374 (+++++) 29088 710 1366 10031  
36 sequential delete /s (+++++) (+++++) 25160 635 470 3123  
37 random create /s 7558 (+++++) 28178 745 509 5015  
38 random delete /s 25292 (+++++) 24723 559 287 3365  
                 
  IOZone (-Razc -s 8192m -y 4k|1m -q 4k|1m -i 0 -i 1 -i 2 -b iozone.xls)        
39 sequential read with 4KB KB/s              
40 sequential write with 4KB KB/s   (测试用时太长,暂未完成)    
41 random read with 4KB KB/s              
42 random write with 4KB KB/s              
43 sequential read with 1MB KB/s 156790 153432 160142 159591 161785 143197  
44 sequential write with 1MB KB/s 155928 156378 131246 162226 143348 138672  
45 random read with 1MB KB/s 101004 98060 102840 101225 101100 95864  
46 random write with 1MB KB/s 110537 102245 97924 107140 119733 97941  
                 
  FileBench (load)              
47 randomread              
48 randomwrite              
49 varmail                   
49 iops /s 1292.33 1921.658 1276.035 710.653 692.282 772.895  
  BW MB/s 4.2 6.3 4.3 2.4 2.3 2.6  
  webproxy                  
50 iops /s 14868.189 16379.942 14984.04 6156.159 2830.036 8705.437  
51 BW MB/s 55.5 60.8 56 25.1 12.3 34.7  
  videoserver                  
  iops /s 395.147 392.849 391.85 391.65 391.74 391.048  
  BW MB/s 97.5 227.9 96.7 227.6 96.7

转载自:http://blog.csdn.net/liuaigui/article/details/5521024/

Linux文件系统选择的更多相关文章

  1. 关于linux下的嵌入式文件系统以及flash文件系统选择

    嵌入式linux下常见的文件系统 • RomFS:只读文件系统,可以放在ROM空间,也 可以在系统的RAM中,嵌入式linux中常用来作 根文件系统 • RamFS:利用VFS自身结构而形成的内存文件 ...

  2. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  3. 磁盘、分区及Linux文件系统 [Disk, Partition, Linux File System]

    1.磁盘基础知识 1.1 物理结构 硬盘的物理结构一般由磁头与碟片.电动机.主控芯片与排线等部件组成:当主电动机带动碟片旋转时,副电动机带动一组(磁头)到相对应的碟片上并确定读取正面还是反面的碟面,磁 ...

  4. Linux文件系统的barrier:启用还是禁用

    大多数当前流行的Linux文件系统,包括EXT3和EXT4,都将文件系统barrier作为一个增强的安全特性.它保护数据不被写入日记.但 是,在许多情况下,我们并不清楚这些barrier是否有用.本文 ...

  5. linux 文件系统解析及相关命令(转)

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  6. Linux文件系统十问,你知道吗?

    关于文件系统,相信大家都不陌生.身为攻城狮的我们几乎天天都会与之打交道,但是细深剖一下,其中又有多少是我们理解深度不够的呢.那么让我们一起来看一下下面这一组Linux文件系统相关的问题吧: 1.机械磁 ...

  7. Linux文件系统的目录结构

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  8. Windows与Linux文件系统互访的几种方法

    首先,我们知道基于文件的几种服务:ftp,sftp,这两种服务都是文件传输服务,偏重于网络传输,并不是实时互访.通常,我们需要在远程和本地 同时操作同一个目录,如:在Windows下使用各种强大的ID ...

  9. 理解Linux文件系统之inode

    很少转发别人的文章,但是这篇写的太好了. 理解inode   作者: 阮一峰 inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础. 我觉得,理解inode,不仅有助于提高系统 ...

随机推荐

  1. JDK8安装时错误1335的解决

    Win7安装JDK8 update65版本时,碰到错误1335,错误信息大概是一个cab文件损坏了,搜索了一下,有网站提供这个错误的修补工具,不过最终我没有下载这个工具,说是系统问题,但工具不是MS官 ...

  2. C语言编对双精度数保留一位小数

    /*第一题*/ #include<stdio.h> //输入1.2345 输出1.2000 //输入1.2547 输出1.3000 main(){ ; printf("请输入:\ ...

  3. JavaScript中对数组和数组API的认识

    JavaScript中对数组和数组API的认识 一.数组概念: 数组是JavaScript中的一类特殊的对象,用一对中括号“[]”表示,用来在单个的变量中存储多个值.在数组中,每个值都有一个对应的不重 ...

  4. JavaScript(二、BOM 浏览器对象模型)

    一.BOM是什么 BOM是browser object model的缩写,简称浏览器对象模型 BOM提供了独立于内容而与浏览器窗口进行交互的对象 由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心 ...

  5. Centos6.5DRBD加载失败,系统更换yum源(国内163)

    我安装的系统是centos6.5的,要在系统上安装DRBD镜像软件,安装完后,无法加载modprobe drbd. 需要更新kernel. 1,首先,先把yum源更换成国内的,不然无法更新kernel ...

  6. Cookie与 Session使用详解

    Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不设置 过期时间,则表示这个 Cookie生命 ...

  7. Myeclipse按包装SVN

    最简单步骤:把features和plugins直接放到Myeclipse安装包的dropins中,从新启动eclipse即可 features和plugins下载地址:http://pan.baidu ...

  8. PAT1027:Colors In Mars

    1027. Colors in Mars (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People ...

  9. SQL的操作方法

    1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...

  10. Vim手册

    什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是 ...