(3)Linux性能调优之Linux文件系统

栏目: 后端 · 发布时间: 5年前

内容简介:Linux作为开源操作系统,最大的优势是它可以支持各类文件系统。现代的Linux内核能够支持几乎每种文件系统,从基础的FAT到高性能的日志文件系统(JFS)都能可以。因为目前Linux的发行版本中,Readhat系(开源版本是Centos)和debian系(大家熟知的Ubuntu)比较流行,所以后面会重点介绍下Readhat系用的xfs文件系统和ext4文件系统。虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层,VFS提供访问文件系统对象的通用对象模型(例如,i-node、文件对象、

Linux作为开源操作系统,最大的优势是它可以支持各类文件系统。现代的 Linux 内核能够支持几乎每种文件系统,从基础的FAT到高性能的日志文件系统(JFS)都能可以。

因为目前Linux的发行版本中,Readhat系(开源版本是Centos)和debian系(大家熟知的Ubuntu)比较流行,所以后面会重点介绍下Readhat系用的xfs文件系统和ext4文件系统。

三、虚拟文件系统

虚拟文件系统(VFS)是一个处于用户进程和各类文件系统之间的抽象接口层,VFS提供访问文件系统对象的通用对象模型(例如,i-node、文件对象、页缓存、)和方法,它对用户进程隐藏了各种文件系统的差别。正是因为有VFS,所以用户进程不用关心使用的是那种文件系统,也更不需要知道各个文件系统应该使用哪个系统调用。下图显示了VFS的概况:

(3)Linux性能调优之Linux文件系统

在开始介绍各个文件系统前,先介绍一个概念: 日志

在非日志文件系统上,当执行写操作时,内核先修改文件系统的元数据,然后写入实际的用户数据。这个操作可能会丢失数据的完整性。如果在写入文件系统元数据的时候系统突然崩溃,文件系统的一致性就可能被破坏。fsck会在下次启动时检查所有的元数据,并修复文件系统上的不一致,但是如果卷特别大的时候,这个修复过程就会变得很漫长,只能干等着fsck工作完之后才能使用这系统。

日志文件系统解决了这个问题,在写入实际的文件系统之前,他先把要修改的数据写入一个叫做日志区域(journal area)的地方。日志区域可以在文件系统上,也可以不在文件系统上。写入日志区域的数据叫做日志记录(joutnal log)。如果系统支持的话,它内容包括文件系统元数据和真正的文件数据。

因为在写入真正用户数据之前要写记录日志,和非日志文件系统相比会产生性能开销。维护数据高度一致性所牺牲的性能开销大小,取决于在写入用户数据之前要写入多少信息到磁盘上。

(3)Linux性能调优之Linux文件系统

四、常见的文件系统

  • 4.1 Ext2

Ext2是一个简单和快速的文件系统,没有日志功能。下图展示了Ext2的文件系统数据结构:

(3)Linux性能调优之Linux文件系统

文件系统由一个引导扇区(boot sector)开始,后面跟着块组(block groups)。整个文件系统被分成许多小块组来获得高性能,因为i-node表和保存用户数据的数据块驻留在较前的磁盘,所以节约寻址时间。一个块组包含如下项目:

+ 超级块(Super block) 磁盘上信息存放在这里,超级块的副本保存在每个块组的顶部。
+ 块组描述符(Block group descriptor) 块组的信息存在这里
+ 数据块位图(Data block bitmaps) 空闲块管理
+ i-node位图(i-node bitmaps) 空闲i-node管理
+ i-node表(i-node tables) 存放i-node表。每个文件都有相应的i-node表,存放文件的元数据,譬如文件
模式、uid、gid、atime、ctime、mtime、dtime和数据块的指针。
+ 数据块(Data blocks) 存放真正的用户数据。
复制代码

如何访问数据?

为了找到组成文件的数据块,内核首先搜索文件的i-node。在接到进程打开/var/log/messages 文件的请求时,内核分析文件路径,然后搜索/(根目录)的条目,其中包含了它自己目录下 的文件和目录信息。这时候,内核会找到/var目录的i-node,然后再来看看/var目录,它也有 它自己目录下的文件和目录的信息。内核会一直执行上面的过程,直到找到/var/log/messages文件的i-node。Linux内核使用对象缓存,比如目录条目缓存或者i-node缓存来加速寻找i-node的过程。

一旦内核找到了文件的i-node,然后就试着访问真正的用户数据块。如前面解释的那样,inode有数据块的指针。参照它,内核就能获得数据块了。对于大文件来说,Ext2提供到数据块的直接/非直接参照。下图展示了它是如何工作的:

(3)Linux性能调优之Linux文件系统
  • 4.2 Ext3

Ext3和Ext2的基本结构是相似的,主要区别是Ext3支持日志。Ext3有如下亮点:

1.可用性: Ext3采用一致性的方式把数据写入磁盘,所以,当系统出现意外宕机(断电或者系统崩溃),
服务器再次启动时不用检查数据的一致性。可以把系统恢复时间从几小时缩短到几秒钟!
2.数据完整性: 在mount命令中使用data=journal打开日志记录模式,所有的数据,包括文件和元数据都会记录日志!
3.速度: 通过指定日志模式data=writeback,你可以在你的业务场景下,在速度和完整性之间做权衡。
在有大量同步写的时候,这个效果会十分显著。
4.灵活性: 把现有的Ext2很简单就能升级到Ext3,而且不用重新格式化。通过执行tune2fs命令和修改/etc/fstab文件,
你能够很简单的把Ext2升级到Ext3文件系统!同样,在关掉Ext3日志的情况下,Ext3能够作为Ext2文件系统进行挂载。
复制代码

Ext3支持3种日志模式:

1. 日志(journal) 通过记录文件数据和元数据,这个模式提供了最高的数据一致性。它的
性能消耗也是最大的。
2. 有序(ordered) 该模式下只记录元数据。然而,优先保证写入文件数据!
3. 回写(writeback) 这个日志选项提供最快的数据访问能力,但是牺牲了数据的一致性!
保证数据一致性的元数据也会被记录,但是没有处理确定的文件数据,在系统崩溃的时
候,这可能导致旧的数据出现在文件中。
复制代码
  • 4.3 Ext4

EXT4是第四代扩展文件系统(英语:Fourth extended filesystem,缩写为ext4)是Linux系统下的日志文件系统,是ext3文件系统的后继版本。

目前的很多Linux发现版本用的都是ext4文件系统,关于ext4文件系统的介绍和特性参考百度百科:

Ext4文件系统

  • 4.4 xfS

扩展文件系统(eXtended File System,XFS)是一个高性能日志文件系统,支持超大文件和分区。Redhat已经其开源版本Centos7用的正是xfs文件系统。关于xfs文件系统的介绍和特性参考百度百科:

xfs文件系统


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Build Your Own Web Site the Right Way Using HTML & CSS

Build Your Own Web Site the Right Way Using HTML & CSS

Ian Lloyd / SitePoint / 2006-05-02 / USD 29.95

Build Your Own Website The Right Way Using HTML & CSS teaches web development from scratch, without assuming any previous knowledge of HTML, CSS or web development techniques. This book introduces you......一起来看看 《Build Your Own Web Site the Right Way Using HTML & CSS》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具