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.7441.7861.8582.758
2filesystem mounting s0.0240.0390.2990.0790.0683.524
3filesystem unmounting s0.0110.020.0740.0250.0480.037
4copy a large file (4GB) s35.48637.22730.60543.54730.3242.17
5recopy the large file s56.91957.52659.89359.31555.65457.925
6remove the large file s3.1260.2952.1780.0160.0184.137
7copy linux kernel archive.tar s0.1030.1430.5740.0940.5520.564
8extract files from kernel.tar s42.6784439.68157.37470.99347.538
9create kernel.tar from linux source s32.73339.14539.30539.16737.9243.828
10compile linux kernel s561.834566.474557.429571.3551773.143828.028
11copy kernel file tree s190.701197.191194.864217.355255.777185.406
12recopy kernel file tree s66.272170.643100.67143.517194.89879.247
13remove kernel file tree s13.7193.7833.66150.07292.06833.2
14list all files for kernel source(tree) s15.96115.53920.71715.81829.13915.611
15file search in kernel source (find) s0.1190.90.3312.5150.7915.913
16create 1 million files s1000.969986.712940.2011128.2441111.5092462.65
17recopy the 1 million files s4783.069595.82859.252972.6711005.0571734.48
18remove the 1 million files s3257.384396.3274.917735.0482395.4171165.314
19dd read IOPS (bs=1KB,4GB) s26.79527.25726.03626.15825.94826.485
20dd write IOPS (bs=1KB,4GB) s27.00626.46132.57726.16429.203126.906
21dd read BW (bs=1MB,4GB) s26.78423.55225.99926.23328.63526.541
22dd write BW (bs=1MB,4GB) s29.42926.12330.6424.68331.44631.925
Postmark (postmark.conf)
23transaction /s333384384113166416
24read MB/s27.9820.4224.379.6910.6430.22
25write MB/s87.3263.7276.0630.2333.2194.31
Randomio (randomio bigfile 10 .25 .01 2048 60 1)(X表示Randomio不支持该文件系统)
26create 4GB file MB/s16716616416815651.3
27random io/s372.1382.3378.8521.5382.7X
28random read latency ms26.926.226.613.226.3X
29random write latency ms26.52625.937.125.6X
30random read latency std dev ms17.916.716.613.116.3X
31random write latency std dev ms15.814.914.538.814.3X
Bonnie++ (-d /cacheX -s 7920 -x 1 -u root)(+++++表示未获得准确测试结果)
32read KB/s155161150029160919159242155811144079
33write KB/s155150150635142801159393139770107923
34seek /s812.9816.7816806.4730.7775.9
35sequential create /s7374(+++++)29088710136610031
36sequential delete /s(+++++)(+++++)251606354703123
37random create /s7558(+++++)281787455095015
38random delete /s25292(+++++)247235592873365
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值