`
izuoyan
  • 浏览: 9409959 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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:
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 background-color: t
分享到:
评论

相关推荐

    模拟LINUX文件系统及终端

    (8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...

    linux文件系统

    主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统linux 文件系统。。。。。。。。。。。。。主要讲解linux文件系统,主要讲解linux文件系统,主要讲解linux文件系统,linux 文件系统。。。。。...

    Linux文件系统及文件管理 上机实验报告

    本次实验是关于Linux文件系统及文件管理的上机操作,旨在让学生深入理解和熟练运用Linux操作系统中的文件系统管理和文件操作。实验涵盖了文件系统的格式化、挂载与卸载,目录和文件的创建、移动、复制、删除,以及...

    linux 实验报告 文件系统与文件管理.pdf

    Linux 文件系统与文件管理实验报告 Linux 操作系统是一种广泛使用的操作系统,它提供了强大的文件系统管理功能。本实验报告将对 Linux 文件系统和文件管理进行详细的介绍。 一、实验项目:用户与组管理 Linux ...

    C语言模拟实现Linux文件系统

    C语言模拟实现Linux文件系统 1、在内存中开辟一块空间来模拟文件系统的运行,不读写硬盘。 2、面向单用户、单任务,不考虑并发,不考虑文件属主、组等概念。 3、程序开始后,初始化并接收用户输入。若输入”enter”...

    Linux文件系统.pdf

    这篇学习资料详细介绍了Linux文件系统的一些关键概念和技术。 1. 文件系统类型 Linux支持多种文件系统类型,如EXT2、EXT3、EXT4、XFS、Btrfs、FAT、NTFS等。EXT4是目前最常用的一种,它在EXT2的基础上进行了优化,...

    linux文件系统电子书籍

    ### Linux文件系统基础知识详解 #### 一、文件系统概述 文件系统是操作系统中不可或缺的核心组成部分之一,它负责管理和组织存储设备(如硬盘、SSD等)上的数据。具体而言,文件系统定义了一套规则和数据结构,用...

    linux文件系统的移植

    ### Linux文件系统的移植详解 #### 实验背景与目标 在嵌入式开发领域,Linux文件系统的移植是一项核心技能。本文将详细介绍如何在嵌入式平台上移植Linux文件系统,旨在帮助开发者熟悉Linux文件系统目录结构,掌握...

    linux文件系统.pdf

    Linux文件系统是Linux操作系统的核心组成部分,它负责管理和存储数据,为用户提供访问文件和目录的统一接口。Linux的一大特性是支持多种文件系统,包括但不限于ext、ext2、xia、minix、umsdos、msdos、vfat、proc、...

    linux 文件系统源码

    Linux 文件系统源码是了解操作系统核心机制的重要组成部分,特别是对于那些想要深入理解Linux内核以及文件系统工作原理的开发者和研究者来说。在这个压缩包中,包含了一系列的源码文件,涉及到了多种不同的文件系统...

    Linux文件系统结构分析

    Linux文件系统是Linux操作系统中用于存储、组织文件,并允许用户和程序访问这些文件的子系统。Linux系统支持多种不同的文件系统类型,其中EXT2和EXT3是目前最常用的文件系统类型。EXT2是专为Linux设计的扩展文件系统...

    Linux下一个简单的文件系统实现

    在Linux操作系统中,文件系统是...通过这个项目,开发者不仅可以深入了解Linux文件系统的运作机制,还能提升C语言编程和系统级编程的能力,对于想要深入学习Linux内核和文件系统的人员来说,这是一个很好的实践机会。

    嵌入式Linux文件系统

    嵌入式Linux文件系统是操作系统的核心组成部分,负责管理和组织存储设备上的数据,使得程序和用户能够高效地访问和操作文件。文件系统不仅包含常规的文件和目录,还映射了与设备相关的各种实体,如磁盘、打印机和...

    模拟Linux文件系统

    在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。 1. 在现有机器硬盘上开辟100M的硬盘空间,作为设定的硬盘空间。 2. 编写一管理程序simdisk对此空间进行管理,以模拟Linux...

    linux文件系统的构造

    总结来说,构建Linux文件系统涉及选择和配置系统文件、设定用户和属组权限,以及优化文件系统结构以适应嵌入式环境的特定需求。这个过程既包括了对Linux基础架构的理解,也涉及到系统安全和资源管理的实践,是嵌入式...

    基于C++的命令行linux文件管理系统源码.zip

    基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux文件管理系统源码基于C++的命令行linux...

    浅析Linux文件系统管理.pdf

    本文主要探讨了在Red Hat 9.0环境下Linux文件系统的管理,包括磁盘管理的各个方面。 1. Linux 文件系统类型 Linux 支持多种文件系统,如ext2、ext3和ext4,其中Red Hat 9.0默认使用ext3文件系统。ext3是一种日志...

    Linux文件系统概念解释和Linux文件系统精通指南

    Linux文件系统是Linux操作系统的核心组成部分,它负责组织和管理存储设备上的数据,为用户提供有序、高效的数据访问方式。本文将深入解析Linux文件系统的概念,并提供一份精通Linux文件系统的指南。 一、Linux文件...

    LINUX常用文件系统

    文件系统指文件存在的物理空间,linux系统中每个分区都是一个文件系统,都有自己的目录层次结构。linux会将这些分属不同分区的、单独的文件系统按一定的方式形成一个系统的总的目录层次结构。一个操作系统的运行离不...

Global site tag (gtag.js) - Google Analytics