`
izuoyan
  • 浏览: 9360650 次
  • 性别: 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

    第1章 简介 第2章 编译内核 第3章 什么是文件系统 第4章 Linux VFS 第5章 LVM(逻辑卷管理器) ...第8章 IBM用于Linux的JFS日记文件系统 第9章 Linux的ReiserFS 第10章 XFS 附录A 软件RAID指南 附录B 参考资料

    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