Linux文件系统选择

来源:互联网 发布:怎么禁止下载某个软件 编辑:程序博客网 时间:2024/05/21 06:45

通过综合使用多种标准文件系统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 coresMEM4GBDISKSAS 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=writebackNO.Test PointsExt3Ext4ReiserfsXFSJFSReiser4Btrfs1filesystem creation s37.38122.3333.7441.7861.8582.7582filesystem mounting s0.0240.0390.2990.0790.0683.5243filesystem unmounting s0.0110.020.0740.0250.0480.0374copy a large file (4GB) s35.48637.22730.60543.54730.3242.175recopy the large file s56.91957.52659.89359.31555.65457.9256remove the large file s3.1260.2952.1780.0160.0184.1377copy linux kernel archive.tar s0.1030.1430.5740.0940.5520.5648extract files from kernel.tar s42.6784439.68157.37470.99347.5389create kernel.tar from linux source s32.73339.14539.30539.16737.9243.82810compile linux kernel s561.834566.474557.429571.3551773.143828.02811copy kernel file tree s190.701197.191194.864217.355255.777185.40612recopy kernel file tree s66.272170.643100.67143.517194.89879.24713remove kernel file tree s13.7193.7833.66150.07292.06833.214list all files for kernel source(tree) s15.96115.53920.71715.81829.13915.61115file search in kernel source (find) s0.1190.90.3312.5150.7915.91316create 1 million files s1000.969986.712940.2011128.2441111.5092462.6517recopy the 1 million files s4783.069595.82859.252972.6711005.0571734.4818remove the 1 million files s3257.384396.3274.917735.0482395.4171165.31419dd read IOPS (bs=1KB,4GB) s26.79527.25726.03626.15825.94826.48520dd write IOPS (bs=1KB,4GB) s27.00626.46132.57726.16429.203126.90621dd read BW (bs=1MB,4GB) s26.78423.55225.99926.23328.63526.54122dd write BW (bs=1MB,4GB) s29.42926.12330.6424.68331.44631.925Postmark (postmark.conf)23transaction /s33338438411316641624read MB/s27.9820.4224.379.6910.6430.2225write MB/s87.3263.7276.0630.2333.2194.31Randomio (randomio bigfile 10 .25 .01 2048 60 1)(X表示Randomio不支持该文件系统)26create 4GB file MB/s16716616416815651.327random io/s372.1382.3378.8521.5382.7X28random read latency ms26.926.226.613.226.3X29random write latency ms26.52625.937.125.6X30random read latency std dev ms17.916.716.613.116.3X31random write latency std dev ms15.814.914.538.814.3XBonnie++ (-d /cacheX -s 7920 -x 1 -u root)(+++++表示未获得准确测试结果)32read KB/s15516115002916091915924215581114407933write KB/s15515015063514280115939313977010792334seek /s812.9816.7816806.4730.7775.935sequential create /s7374(+++++)2908871013661003136sequential delete /s(+++++)(+++++)25160635470312337random create /s7558(+++++)28178745509501538random delete /s25292(+++++)247235592873365IOZone (-Razc -s 8192m -y 4k|1m -q 4k|1m -i 0 -i 1 -i 2 -b iozone.xls)39sequential read with 4KB KB/s40sequential write with 4KB KB/s(测试用时太长,暂未完成)41random read with 4KB KB/s42random write with 4KB KB/s43sequential read with 1MB KB/s15679015343216014215959116178514319744sequential write with 1MB KB/s15592815637813124616222614334813867245random read with 1MB KB/s101004980601028401012251011009586446random write with 1MB KB/s1105371022459792410714011973397941FileBench (load)47randomread48randomwrite49varmail     49iops /s1292.331921.6581276.035710.653692.282772.895BW MB/s4.26.34.32.42.32.6webproxy    50iops /s14868.18916379.94214984.046156.1592830.0368705.43751BW MB/s55.560.85625.112.334.7videoserver    iops /s395.147392.849391.85391.65391.74391.048BW MB/s97.5227.996.7227.696.796.5          
原创粉丝点击