深入了解:Linux文件系统是什么? (linux fs是什么)

Linux操作系统是当今更受欢迎和广泛使用的操作系统之一,尤其是在服务器端领域。而文件系统是Linux操作系统中的重要组成部分,其作用是管理和组织存储在硬盘上的文件。本文将深入探讨Linux文件系统的概念、结构、类型、应用和重要性。

一、概念

在计算机中,文件系统是数据存储设备同时提供对文件的访问和管理的一种机制。Linux文件系统即在Linux操作系统中运行的文件系统,通常采用磁盘片管理和文件级别的存储和组织方式。

Linux文件系统的基本组成部分包括SuperBlock、Inode和Data block,其中SuperBlock储存文件系统的一般信息,Inode用于存储文件的属性和指向数据块的指针,Data block则是真正存储文件内容的区域。Linux文件系统采用树形分层目录结构,树根为/,表示系统的根目录。

二、结构

Linux文件系统的结构有三个层级,分别是文件、目录和树形层级。

1、文件:是一组数据,可以是文本文件、图片文件、音频文件、视频文件、二进制文件等。文件的重要属性包括文件类型、文件名、文件权限、文件大小、修改时间等。

2、目录:目录是一种特殊的文件,用于组织和管理其他文件和目录。目录也有类似文件的属性,如目录名、目录权限、目录大小等。

3、树形层级:通过树形分层次目录结构,Linux文件系统能够轻松地管理和组织更多的文件和目录。

三、类型

Linux文件系统有多个类型,包括Ext2、Ext3、Ext4、ReiserFS、JFS和XFS等。

1、Ext2文件系统:是Linux最早的文件系统格式,优点是比较简单、稳定和高效,但它不支持日志功能,导致系统发生突然断电会导致文件系统损坏。

2、Ext3文件系统:是Ext2的改进版本,引进了日志功能。在突然断电或系统异常重启的情况下,可以快速恢复文件系统。

3、Ext4文件系统:是Ext3的再次升级版,具有更高的性能和更高的可靠性。

4、ReiserFS文件系统:是一个快速、高效和可靠的文件系统。但由于其数量相对较少,有时会面临一些兼容性问题。

5、JFS文件系统:是IBM开发的一种日志文件系统,处理大型文件和大规模数据的效率很高,但在处理小型文件方面略微缺乏效率。

6、XFS文件系统:是一种高性能文件系统,适用于文件服务器、高速数据库和Web服务器等应用场景。

四、应用

Linux文件系统的应用非常广泛,包括服务器管理、数据存储、大型数据处理、虚拟化、桌面环境等。在服务器管理中,Linux文件系统可用于部署Web服务器、邮件服务器、数据库服务器、文件服务器等。

在数据存储方面,Linux文件系统可以用于存储关键的企业数据、日志文件、备份文件等。

对于大型数据的处理,Linux文件系统可以处理海量数据,从而支持更高效的数据处理和分析。

在虚拟化方面,Linux文件系统可以作为虚拟机的存储介质,本身就支持虚拟化技术,实现容器化和云端隔离等操作。

在桌面环境中,Linux文件系统也可以用于文件和目录的管理、备份和共享等。Linux文件系统提供了丰富的工具和命令行,让用户能够快速、安全地进行文件的操作。

五、重要性

Linux文件系统在Linux操作系统中扮演着至关重要的角色,它是操作系统中的核心之一。Linux文件系统可确保对磁盘上的数据进行安全存储和快速访问,支持对大量数据进行高效的处理和分析。

相比其他操作系统,Linux文件系统的卓越性能和灵活性使其在企业级和个人用户中受到极高的态度和欢迎。因此,熟悉和掌握Linux文件系统架构和运作原理对于Linux系统管理员和开发人员来说至关重要。

Linux文件系统是Linux操作系统中不可缺少的部分。了解和掌握Linux文件系统的原理和特性,能够更好地理解和利用Linux操作系统,为数据存储和管理提供可靠和高效的解决方案。

相关问题拓展阅读:

Linux btrfs文件系统及管理

Linux btrfs文件系统及管理

  linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理,下面一起来看看什么是linux btrfs文件系统及管理关系吧!

  什么是btrfs?

  Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,握孝塌并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理。单段圆文件可达16EB,更大文件数量2^64,更大卷容量16EB,等。

  btrfs功能特性

,COW:写时复制,每次写入数据时,先将数据写入到新的block,写入成功后,更改旧数据块指针到新数据块,而非更改本身。

,多物理卷支持,btrfs内建raid,可在线增删磁盘设备,可在线扩展和缩减磁盘空间。

,数据和元数据校验码,checksum

,子卷,可单独挂载子卷

,可写慎租快照,快照的快照,单个文件快照。

,透明压缩

,ext3/4和btrfs无痛互转

  btrfs 基本用法:

  bash/shell Code复制内容到剪贴板

  # btrfs –help #查看帮助可以看到btrfs 有很多子命令,用法也很多,这里只举例常用选项。

  usage: btrfs

  btrfs subvolume create #创建子卷

  Create a subvolume

  btrfs subvolume delete #删除子卷

  Delete subvolume(s)

  btrfs subvolume list value> value> #显示子卷列表

  List subvolumes (and snapshots)

  btrfs subvolume snapshot | #创建子卷快照

  Create a snapshot of the subvolume

  btrfs subvolume get-default #获取子卷默认的文件系统

  Get the default subvolume of a filesystem

  btrfs subvolume set-default #设置默认系统给子卷

  Set the default subvolume of a filesystem

  btrfs subvolume find-new #列出btrfs文件系统中最近修改的文件,结合find命令

  List the recently modified files in a filesystem

  btrfs subvolume show #显示更多的子卷信息

  Show more information of the subvolume

  btrfs subvolume sync #子卷同步,类似mount同步模式,内存数据同步到磁盘,有待查证。

  Wait until given subvolume(s) are completely removed from the filesystem.

  btrfs filesystem df #显示挂载的文件系统详细信息。

  Show space usage information for a mount point

  btrfs filesystem show #显示创建文件系统的磁盘信息。

  Show the structure of a filesystem

  btrfs filesystem sync #强制文件系统同步,

  Force a sync on a filesystem

  btrfs filesystem defragment |

   #碎片整理

  Defragment a file or a directory

  btrfs filesystem resize |max #btrfs文件系统在线扩展和缩减空间

  Resize a filesystem

  btrfs filesystem label #改变btrfs文件系统卷标

  Get or change the label of a filesystem

  btrfs filesystem usage #显示文件系统当前的使用信息。

  Show detailed information about internal filesystem usage .

  btrfs balance start #改变磁盘chunk,在线改 数据和元数据 存储方式,单盘改raid,前提满足raid要求。

  Balance chunks across the devices

  btrfs balance pause #暂停chunk更改,数据量较大,转换时间较长时,先暂停。

  Pause running balance

  btrfs balance cancel #取消chunk更改,如上

  Cancel running or paused balance

  btrfs balance resume #中断balance的操作,如上

  Resume interrupted balance

  btrfs balance status #显示balance操作状态 如上

  Show status of running or paused balance

  btrfs device add #文件系统增加磁盘

  Add a device to a filesystem

  btrfs device delete #文件系统删除磁盘

  Remove a device from a filesystem

  btrfs device scan > #文件系统磁盘扫描

  Scan devices for a btrfs filesystem

  btrfs device ready #猜测是检测加入的设备有没有被挂载

  Check device to see if it has all of its devices in cache for mounting

  btrfs device stats | #显示文件系统的设备状态

  Show current device IO stats. -z to reset stats afterwards.

  btrfs device usage #显示文件系统内部设备详细使用信息

  Show detailed information about internal allocations in devices.

  btrfs文件系统管理

  为分区创建btrfs文件系统

  bash/shell Code复制内容到剪贴板

  # fdisk -l | grep “^Disk /dev/sd” #准备sd{b,c,d,e}4块20G磁盘,未做任何分区。

  Disk /dev/sda: 107.4 GB,bytes,sectors

  Disk /dev/sdb: 21.5 GB,bytes,sectors

  Disk /dev/sdc: 21.5 GB,bytes,sectors

  Disk /dev/sde: 21.5 GB,bytes,sectors

  Disk /dev/sdd: 21.5 GB,bytes,sectors

  创建单分区btrfs并查看

  bash/shell Code复制内容到剪贴板

  # mkfs.btrfs -L ‘btrfs’ /dev/sdb

  btrfs-progs v3.19.1

  See for more information.

  Turning ON incompat feature ‘extref’: increased hardlink limit per file to 65536

  Turning ON incompat feature ‘skinny-metadata’: reduced-size metadata extent refs

  fs created label btrfs on /dev/sdb

  nodesizeleafsizesectorsize 4096 size 20.00GiB

  # btrfs filesystem show

  Label: ‘btrfs’ uuid: 2a9f0d3d-f8af4e-d1efa04a683a

  Total devices 1 FS bytes used 112.00KiB

  devid 1 size 20.00GiB used 2.04GiB path /dev/sdb

  btrfs-progs v3.19.1

  # mount -o compress=lzo -L btrfs /btrfs/ 挂载时可以设定透明压缩机制。

  # btrfs filesystem df /btrfs

  Data, single: total=8.00MiB, used=256.00KiB

  System, DUP: total=8.00MiB, used=16.00KiB

  System, single: total=4.00MiB, used=0.00B

  Metadata, DUP: total=1.00GiB, used=112.00KiB

  Metadata, single: total=8.00MiB, used=0.00B

  GlobalReserve, single: total=16.00MiB, used=0.00B

  再添加一块磁盘

  bash/shell Code复制内容到剪贴板

  # btrfs device add /dev/sdc /btrfs #添加磁盘,删除用btrfs device delete /dev/sdc /btrfs

  # btrfs fi sh

  Label: ‘btrfs’ uuid: 2a9f0d3d-f8af4e-d1efa04a683a

  Total devices 2 FS bytes used 384.00KiB

  devid 1 size 20.00GiB used 2.04GiB path /dev/sdb

  devid 2 size 20.00GiB used 0.00B path /dev/sdc

  btrfs-progs v3.19.1

  #

  在线增加或缩减空间,在线改变空间,可以让lvm坐冷板凳了。

  bash/shell Code复制内容到剪贴板

  # btrfs fi resize -10G /btrfs/ #在线缩减空间

  Resize ‘/btrfs/’ of ‘-10G’

  # btrfs fi sh

  Label: ‘btrfs’ uuid: 2a9f0d3d-f8af4e-d1efa04a683a

  Total devices 2 FS bytes used 384.00KiB

  devid 1 size 10.00GiB used 2.04GiB path /dev/sdb

  devid 2 size 20.00GiB used 0.00B path /dev/sdc

  btrfs-progs v3.19.1

  # btrfs fi resize +7G /btrfs/ #在线增加空间

  Resize ‘/btrfs/’ of ‘+7G’

  # btrfs fi sh

  Label: ‘btrfs’ uuid: 2a9f0d3d-f8af4e-d1efa04a683a

  Total devices 2 FS bytes used 384.00KiB

  devid 1 size 17.00GiB used 2.04GiB path /dev/sdb

  devid 2 size 20.00GiB used 0.00B path /dev/sdc

  btrfs-progs v3.19.1

  #

  在线更改数据和元数据的结构

  bash/shell Code复制内容到剪贴板

  # btrfs fi df /btrfs/

  Data, single: total=8.00MiB, used=256.00KiB

  System, DUP: total=8.00MiB, used=16.00KiB

  System, single: total=4.00MiB, used=0.00B

  Metadata, DUP: total=1.00GiB, used=112.00KiB

  Metadata, single: total=8.00MiB, used=0.00B

  GlobalReserve, single: total=16.00MiB, used=0.00B

  # btrfs balance start -mconvert=raid1 /btrfs/ #-mconvert 为改变metadata元数据区的存储结构

  Done, had to relocate 4 out of 5 chunks

  # btrfs fi sh

  Label: ‘btrfs’ uuid: 2a9f0d3d-f8af4e-d1efa04a683a

  Total devices 2 FS bytes used 192.00KiB

  devid 1 size 17.00GiB used 296.00MiB path /dev/sdb

  devid 2 size 20.00GiB used 288.00MiB path /dev/sdc

  btrfs-progs v3.19.1

  # btrfs fi df /btrfs/

  Data, single: total=8.00MiB, used=64.00KiB

  System, RAID1: total=32.00MiB, used=16.00KiB

  Metadata, RAID1: total=256.00MiB, used=112.00KiB #对比上改为了raid1

  GlobalReserve, single: total=16.00MiB, used=0.00B

  # btrfs balance start -dconvert=raid1 /btrfs/ #-dconvert 为改变data数据区的存储结构

高手请进!!!linux kernel与 fs问题

编译内核之前make manuconfig,把相应的文件系统的支持加上。

楼上挺搞笑的

严格来讲fs和kernel之间的关系很简单扒睁 就在于kernel是否集成了该fs的驱动而已 ,抛开这个两者没更深滑此余入的关系了

所以注意下内核里面是信滚否加入了该fs的驱动

genkernel 自动配置命令

饭店

Linux日志式文件系统面面观

文件系统是用来管理和组织保存在磁盘驱动器上的数据的系统软件,其实现了数据完整性的保 证,也就是保证写入磁盘的数据和随后读出的内容的一致性。除了保存以文件方式存储的数据以外,一个文件系统同样存储和管理关于文件和文件系统自身的一些重要信息(例如:日期时间、属主、访问权限、文件大小和存储位置等等)。这些信息通常被称为元数据(metadata)。

  由于为了避免磁盘访问瓶颈效应,一般文件系统大都以异步方迟隐式工作,因此如果磁盘操作被突然中断可能导致数据被丢失。例如如果出现这种情况:如果当你处理一个在linux的ext2文件系统上的文档,突然机器崩溃会出现什么情况?

  

有这几种可能:

  *当你保存文件以后,系统崩溃。这是更好的情况,你不会丢失任何信息。只需要重新启动计算机然后继续工作。

  *在你保存文件之前系统崩溃。你会丢失你所有的工作内容,但是老版本的文档还会存在。

  *当正在将保存的文档写入磁盘时系统崩溃。这是最糟的情况:新版文件覆盖了旧版本的文件。这样磁盘上只剩下一个部分新部分旧的文件。如果文件是二进制文件那么就会出现不能打开文件的情况,因为其文件格式和应用所期待的不同。

  在最后这种情况下,如果系统崩溃是发生在驱动器正在写入元数据时,那么情况可能更糟。这时候就是文件系统发生了损坏,你可能会丢失整个目录或者整个磁盘分区的数据。

  linux标准文件系统(ext2fs)在重新启动时会通过调用文件扫描工具fsck试图恢复损坏的元数据信息。由于ext2文件系统保存有冗余的关键元数据信息的备份,因此一般来说不大可能出现数据完全丢失。系统会计算出被损坏的数据的位置,然后或者是通过恢复冗余的元数据信息,或者是直接删除被损坏或是元数据信息损毁的文件。

  很明显,要检测的文件系统越大,检测过程费时就越长。对于物旦缺有几十个G大小的分区,可能会花费很长时间来进行检测。由于Linux开始用于大型服务器中越来越重要的应用,因此就越来越不能容忍长时间的当机时间。这罩辩就需要更复杂和精巧的文件系统来替代ext2。

  因此就出现了日志式文件系统(journalling filesystems)来满足这样的需求。

  

什么是日志式文件系统

  这里仅仅对日志式文件系统进行简单的说明。如果需要更深入的信息请参考文章日志式文件系统,或者是日志式文件系统介绍。

  大多数现代文件系统都使用了来自于数据库系统中为了提高崩溃恢复能力而开发的日志技术。磁盘事务在被真正写入到磁盘的最终位置以前首先按照顺序方式写入磁盘中日志区(或是log区)的特定位置。

  根据日志文件系统实现技术的不同,写入日志区的信息是不完全一样的。某些实现技术仅仅写文件系统元数据,而其他则会记录所有的写操作到日志中。

  现在,如果崩溃发生在日志内容被写入之前发生,那么原始数据仍然在磁盘上,丢失的仅仅是最新的更新内容。如果当崩溃发生在真正的写操作时(也就是日志内容已经更新),日志文件系统的日志内容则会显示进行了哪些操作。因此当系统重启时,它能轻易根据日志内容,很快地恢复被破坏的更新。

  在任何一种情况下,都会得到完整的数据,不会出现损坏的分区的情况。由于恢复过程根据日志进行,因此整个过程会非常快只需要几秒钟时间。

  应该注意的是使用日志文件系统并不意味着完全不需要使用文件扫描工具fsck了。随机发生的文件系统的硬件和软件错误是根据日志是无法恢复的,必须借助于fsck工具。

  

目前Linux环境下的日志文件系统

  在下面的内容里将讨论三种日志文件系统:之一种是ext3,由Linux内核Stephen Tweedie开发。ext3是通过向ext2文件系统上添加日志功能来实现的,目前是redhat7.2的默认文件系统;Namesys开发的ReiserFs日志式文件系统,可以下载,目前Mandrake8.1采用该日志式文件系统。SGI在2023年三月发布了XFS日志式文件系统。可以在 oss.sgi.com/projects/xfs/下载。下面将对这三种日志文件系统采用不同的工具进行检测和性能测试。

  

安装ext3

  关于ext3文件系统技术方面的问题请参考Dr. Stephen Tweedie的论文和访谈。ext3日志式文件系统直接来自于其祖先ext2文件系统。其具有完全向后兼容的关键特性,实际上其仅仅是在ext2日志式文件系统上添加了日志功能。其更大的缺点是没有现代文件系统所具有的能提高文件数据处理速度和解压的高性能。

  ext3从 2.2.19开始是作为一个补丁方式存在的。如果希望对内核添加对ext3文件系统的支持,就需要使用补丁,可以得到补丁程序,一共需要如下文件:

  * ext3-0.0.7a.tar.bz2:内核补丁

  * e2fsprogs-1.21-WIP-0601.tar.bz2 支持ext3的e2fsprogs程序套件

  拷贝linux-2.2.19.tar.bz2和ext3-0.0.7a.tar.bz2到/usr/src目录下,进行解压:

  mv linux linux-old

  tar -Ixvf linux-2.2.19.tar.bz2

  tar -Ixvf ext3-0.0.7a.tar.bz2

  cd linux

  cat ../ext3-0.0.7a/linux-2.2.19.kdb.diff | patch -sp1

  cat ../ext3-0.0.7a/linux-2.2.19.ext3.diff | patch -sp1

  首先对内核添加SGI的kdb内核调试器补丁,第二个是ext3文件系统补丁。下来就需要配置内核,对文件系统部分的”Enable Second extended fs development code”回答Yes。然后编译。

  

内核编译安装以后,需要安装e2fsprogs软件套件:

  tar -Ixvf e2fsprogs-1.21-WIP-0601.tar.bz2

  cd e2fsprogs-1.21

  ./configure

  make

  make check

  make install

  下来要做的工作就是在分区上创建一个ext3文件系统,使用新内核重新启动,这时候你有两种选择创建新的日志文件系统或者对一个已有的ext2文件系统升级到ext3日志文件系统。

  对于需要创建新ext3文件系统的情况下,只需要使用安装的e2fsprogs软件包中的mke2fs命令加-f参数就可以创建新的ext3文件系统:

  mke2fs -j /dev/

  这里/dev/是希望创建ext3文件系统的新分区。-j参数表示创建ext3而不是ext2文件系统。可以使用参数”-Jsize=”来指定希望的日志区大小(n单位为M)。

  

升级一个已有的ext2,使用tune2fs就可以了:

  tune2fs -j /dev/

  你可以对正在加载的文件系统和没有加载的文件系统进行升级操作。如果当前文件系统正在被加载,则文件.journal会在文件系统加载点的所在目录被创建。如果是升级一个当时没有加载的文件系统,则使用隐含的系统inode来记录日志,这时候文件系统的所有内容都会被保留不被破坏。

  

你可以使用下面的命令加载ext3文件系统:

  mount -t ext3 /dev/ /mount_dir

  由于ext3实际上是带有日志功能的ext2文件系统 ,因此一个ext3文件系统可以以ext2的方式被加载。

  安装XFS文件系统

  如果需要从技术方面了解XFS文件系统,请参考SGI的XFS文件系统和SGI信息页面。也可以参考FAQ。

  XFS是一个SGI开发的linux环境下的日志文件系统,它是一个成熟的技术,最初是使用在IRIX系统上的文件系统。XFS遵循GPL版权申明。目前xfs文件系统最新版本是1.02。下载得到对内核xfs文件系统支持补丁或者直接下载RPM包方式的内核,下面我们就以补丁方式说明如何对2.4.14内核使用xfs。首先下载如下内容

  patch-2.4.14-xfs-1.0.2.bz2

  patch-2.4.14-xfs-1.0.2-kdb.bz2

  拷贝Linux内核linux-2.4.2.tar.bz2到 /usr/src目录下,修改老的内核目录名,然后解压新内核:

  mv linux linux-old

  tar -Ixf inux-2.4.2.tar.bz2

  

拷贝每个每个补丁到内核源码目录下(例如:/usr/src/linux),并打补丁:

  zcat patch-2.4.14-xfs-1.0.2.bz2 | patch -p1

  zcat patch-2.4.14-xfs-1.0.2-kdb.bz2 | patch -p1

  然后配置内核,打开文件系统部分的内核选项:”XFS filesystem support” (CONFIG_XFS_FS)和”Page Buffer support” (CONFIG_PAGE_BUF)。同时需要升级下面这些系统工具到下面或更高的版本:

  modutils-2.4.0

  autoconf-2.13

  e2fsprogs-devel-1.18

  安装新内核并重启服务器。

  然后下载xfs工具。这个软件包包括下面的命令来处理文件系统,使用下面的命令来安装该软件包::

  tar -zxf xfsprogs-1.2.0.src.tar.gz

  cd xfsprogs-1.2.0

  make configure

  make

  make install

  

安装这些命令以后,就可以创建新的XFS文件系统:

  mkfs -t xfs /dev/

  如果是一个已经存在的文件系统,那么就需要使用”-f”参数来创建新分区,但是记得这将会破坏该分区的所有数据。

  mkfs -t xfs -f /dev/

  创建以后就可以使用基于下面的命令加载新文件系统:

  mount -t xfs /dev/ /mount_dir

  安装ReiserFS文件系统

  如果希望更多地从技术方面了解reiserFS文件系统,请参考NAMESYS和FAQ。

  ReiserFS文件系统从2.4.1-pre4开始就是Linux内核的正式支持的文件系统了。为了使用reiserFS文件系统那你首先需要在系统上安装文件系统支持工具(如:创建ReiserFS文件系统的mkreiserfs工具)。最新的ReiserFS文件系统版本可以以补丁的方式添加到2.2.x或者2.4.x内核中。这里我们以2.2.19为例:

  之一步,首先下在内核源码,并下在ReiserFS文件系统的2.2.19补丁 ,目前补丁最新版本是linux-2.2.19-reiserfs-3.5.34-patch.bz2。同时应该下载工具软件包:reiserfsprogs-3.x.0j.tar.gz。

  然后解压内核源码和补丁包到/usr/src中:

  tar -Ixf linux-2.2.19.tar.bz2

  bzcat linux-2.2.19-reiserfs-3.5.34-patch.bz2 | patch -p0

  编译内核支持reiserfs,安装内核。然后安装文件系统工具软件:

  cd /usr/src/linux/fs/reiserfs/utils

  make

  make install

  安装新内核并重新启动。现在就可以创建新的’reiserfs文件系统,并加载:

  mkreiserfs /dev/x

  mount -t reiserfs /dev/ /mount_dir

  文件系统性能测试

  测试环境使用的计算机环境如下:Pentium III – 16 Mb RAM – 2 Gb HD,操作系统为RedHat6.2。所有的文件系统都能正常工作,所以就进行benchmark分析来对它们进行性能比较。首先我直接拔掉系统电源以模拟系统掉电情况,以测试日志文件系统恢复过程。所有的文件系统都成功地经过了文件扫描检测阶段,在数秒以后系统都经过了扫描然后正常启动了系统。

  下一步就采用了bonnie++性能测试程序进行测试,这个程序对一个文件进行数据库类型的访问,进行了创建、读和删除小文件,这些操作对于Squid、INN或者Maildir格式的邮件服务器程序(qmail)是最常见的操作。性能测试命令为:

  bonnie++ -d/work1 -s10 -r4 -u0

  其对加载在/work1目录下的文件系统进行了10Mb(-s10)的测试。因此在执行测试之前必须创建适当类型的文件系统并加载到目录/work1下。其他的参数指定内存大小(-r4)的M数,和以root身份运行测试程序,测试结果如下:

  每种测试都有两组数据:文件系统速度(K/sec)和CPU占用率(%CPU)。速度越高,文件系统越好。而对于CPU率来说,数字越小性能越好。可以看到Reiserfs文件系统在文件操作方面(Sequential Create和Random Create部分的) 的性能更好,超出其他文件系统10倍之多。在其他方面(Sequential Output和Sequential Input)则和其他文件系统性能不相上下。对于其他文件系统则没有特别明显的区别。XFS性能接近ext2文件系统,ext3文件系统则比ext2要稍微慢上一些(因为记录日志需要一些额外的时间)。 最后使用从得到的性能测试程序mongo,并对其进行了修改以对三种日志文件系统进行测试。这里在mongo.pl程序中添加了添加了加载xfs和ext3文件系统的命令,并对其进行格式化处理,然后就开始性能测试分析。 该脚本格式划分区/dev/x,加载其并在每个阶段运行指定数目的进程:创建、拷贝、符号连接处理、读、显示文件状态信息、重命名和删除文件。同时,该程序在创建和拷贝阶段以后会计算分段数(fragmentation)。

  Fragm = number_of_fragments / number_of_files

  可以在结果文件中得到同样的测试比较结果:

  log – 原始结果

  log.tbl – 比较程序的输出结果

  log_table – 表格式的结果

  

下面的命令进行测试:

  mongo.pl ext3 /dev/hda3 /work1 logext3 1

  如果要测试其他文件系统,就需要把上面命令的参数中的ext3修改为reiserfs或xfs。其他参数分别为要加载的分区,加载路径,保存测试结果的文件名及启动的进程数。

  下面的表格是测试结果。数据单位为秒。值越低性能越好。之一个表格测试使用的数据块大小为100字节,第二个表格为1000字节,最后一个为10000字节

  从上面的表格可以看到ext3在状态删除和重命名方面要性能更好一些,而ReiserFS文件系统在文件创建和拷贝性能表现更出色。同时也可以看到reiserFS正如其技术文档提到的其在小文件处理方面性能相当出色。

  

结论

  目前Linux至少有两个健壮可靠的日志文件系统可供选择(XFS和reiserFS),其都得到了广泛的应用。例如Mandrake8.1就默认支持reiserFS文件系统。

  从性能测试的结果可以看到,reiserFS是更好的选择。

关于linux fs是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 深入了解:Linux文件系统是什么? (linux fs是什么)