Linux文件系统选择

通过综合使用多种标准文件系统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:              
CPUGenuine Intel(R) 2.13GHz 4 cores       
MEM4GB       
DISKSAS 146.8GB * 4       
 /dev/sdbExt3disable journaldefaults,async,noatime,nodiratime  
 /dev/sdcExt4disable journaldefaults,async,noatime,nodiratime,data=writeback,barrier=0
 /dev/sddXFShas_journaldefaults,async,noatime,nodiratime,barrier=0 
 /dev/sdeReiser4has_journaldefaults,async,noatime,nodiratime  
 /dev/sdereiserfshas_journaldefaults,async,noatime,nodiratime,notail,data=writeback
 /dev/sdeJFShas_journaldefaults,async,noatime,nodiratime  
 /dev/sdebtrfshas_journaldefaults.async.noatime,nodiratime,data=writeback 
         
NO.Test PointsExt3Ext4ReiserfsXFSJFSReiser4Btrfs
1filesystem creation s37.38122.3333.744 1.7861.8582.758 
2filesystem mounting s 0.0240.0390.2990.0790.0683.524 
3filesystem unmounting s 0.0110.020.0740.0250.0480.037 
4copy a large file (4GB) s35.48637.227 30.60543.547 30.3242.17 
5recopy the large file s 56.91957.52659.89359.315 55.65457.925 
6remove the large file s3.1260.2952.178 0.0160.0184.137 
7copy linux kernel archive.tar s0.1030.1430.574 0.0940.5520.564 
8extract files from kernel.tar s 42.678 44 39.681 57.374 70.993 47.538 
9create kernel.tar from linux source s 32.73339.14539.30539.16737.9243.828 
10compile linux kernel s 561.834 566.474 557.429 571.355 1773.143 828.028 
11copy kernel file tree s 190.701 197.191 194.864 217.355 255.777 185.406 
12recopy kernel file tree s 66.272170.643100.67143.517194.89879.247 
13remove kernel file tree s 13.719 3.783 3.661 50.072 92.068 33.2 
14list all files for kernel source(tree) s 15.961 15.539 20.717 15.818 29.139 15.611 
15file search in kernel source (find) s 0.1190.90.3312.515 0.7915.913 
16create 1 million files s 1000.969 986.712 940.201 1128.244 1111.509 2462.65 
17recopy the 1 million files s 4783.069 595.828 59.252 972.671 1005.057 1734.48 
18remove the 1 million files s 3257.384 396.32 74.917 735.048 2395.417 1165.314 
19dd read IOPS (bs=1KB,4GB) s 26.795 27.257 26.036 26.158 25.948 26.485 
20dd write IOPS (bs=1KB,4GB) s 27.006 26.461 32.577 26.164 29.203 126.906 
21dd read BW (bs=1MB,4GB) s26.784 23.55225.99926.23328.63526.541 
22dd write BW (bs=1MB,4GB) s 29.429 26.123 30.64 24.683 31.446 31.925 
         
 Postmark (postmark.conf)
23transaction /s333384384113166 416 
24read MB/s27.9820.4224.379.6910.64 30.22 
25write MB/s87.3263.7276.0630.2333.21 94.31 
         
  Randomio (randomio bigfile 10 .25 .01 2048 60 1)(X表示Randomio不支持该文件系统)   
26create 4GB file MB/s167166164 16815651.3 
27random io/s 372.1 382.3 378.8 521.5 382.7X 
28random read latency ms 26.9 26.2 26.6 13.2 26.3X 
29random write latency ms 26.5 26 25.9 37.1 25.6X 
30random read latency std dev ms17.916.716.6 13.116.3X 
31random write latency std dev ms15.814.914.538.8 14.3X 
         
  Bonnie++ (-d /cacheX -s 7920 -x 1 -u root)(+++++表示未获得准确测试结果)   
32read KB/s155161150029 160919159242 155811144079 
33write KB/s155150150635142801 159393139770107923 
34seek /s 812.9 816.7 816 806.4 730.7 775.9 
35sequential create /s7374(+++++) 29088710136610031 
36sequential delete /s(+++++)(+++++) 25160635 4703123 
37random create /s 7558(+++++) 28178 745 509 5015 
38random 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)
39sequential read with 4KB KB/s
40sequential write with 4KB KB/s (测试用时太长,暂未完成)
41random read with 4KB KB/s
42random write with 4KB KB/s
43sequential read with 1MB KB/s 156790153432160142159591161785143197 
44sequential write with 1MB KB/s 155928156378131246162226143348138672 
45random read with 1MB KB/s 101004 98060 102840 101225 101100 95864 
46random write with 1MB KB/s 110537 102245 97924 107140 119733 97941 
         
 FileBench (load)
47randomread
48randomwrite
49varmail     
49iops /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    
50iops /s 14868.189 16379.942 14984.04 6156.159 2830.036 8705.437 
51BW 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 96.5 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值