Linux系统性能指标-文件系统指标(自用)

摘自《高性能Linux服务器运维实战》

文件系统指标

  Linux作为开源操作系统,最大优势是它可以支持各类文件系统。了解Linux下各个文件系统的功能特性,有助于读者在优化性能的时候,根据使用需求来选择适合自己的文件系统。

1.EXT3/EXT4/XFS文件系统特性

  Linux标准文件系统是从VFS开始的,然后是EXT,接着是EXT2。应该说EXT2是Linux上标准的文件系统,EXT3实在EXT2基础上增加日志形成的。从VFS到EXT3,其设计思想没有太大变化,都是早期UNIX家族基于超级块和inode的设计理念。
  EXT2文件系统一般由超级块、块组描述符、块组组成,它使用索引节点(inode)来记录文件信息,一个inode对应一个文件。索引节点是一种数据结构,它存放着文件的重要属性信息,如文件大小、访问时间、修改时间、创建时间、访问权限、文件属主ID、组ID、块数等。
  为了避免磁盘大量访问出现的性能问题,一般的文件系统都采用异步方式工作,也就是读和写操作不是同步进行的,例如,修改了某个文件后,这个修改操作仅仅存在于内存中,对这个文件的修改并不会马上写入磁盘。但是系统会通过一个守护进程,在一个合理的时间段内将修改操作批量写入磁盘。通过这种机制优化了文件系统的写入性能。
  EXT2文件系统保存有冗余的关键元数据信息的备份,一般来说不会出现数据完全丢失的情况。在系统重新启动时,EXT2文件系统会调用文件扫描工具fsck试图恢复损坏的元数据信息,这种扫描是对整个文件系统进行扫描,要扫描的文件系统分区越大,检测过程就越长。很显然,这种机制无法应用到对实时性要求很高的业务系统上,此时会产生EXT3文件系统。
  EXT3是一种日志式文件系统,其实就是在EXT2文件系统基础上增加了一个特殊的inode(日志文件),即日志记录功能,用于记录文件系统元数据或者各种写操作的变化。这样一来,在磁盘操作事务被真正写入到磁盘最终位置以前,首先通过日志文件的记录功能顺序记录了文件系统的各种写操作和元数据的变化。因此,在EXT3文件系统下,如果系统崩溃在日志内容被写入之前发生,那么原生数据仍然保留在磁盘上,丢失的仅仅是系最新的更新内容。如果崩溃发生在真正的写操作时(此时日志文件记录已经更新),由于日志文件系统的内容完全记录着进行了哪些操作,因此当系统重启时,日志文件系统就能根据日志内容很快恢复被破坏的数据或者文件系统。
  EXT3文件系统流行了10多年,最终又被EXT4文件系统取代,取代的原因是EXT4功能更加先进,可以大大提高Linux系统的性能。例如,EXT4支持更多子目录数量、更大的文件系统和更大的文件、日志校验、快速fsck、在线碎片整理等。
  RHEL6.x/Centos6.x系统将EXT4作为了默认文件系统,而RHEL7.x/Centos7.x最新系统将XFS设为了默认的文件系统。XFS也是一个高级日志文件系统,最初用于UNIX系统中,后来被移植到Linux系统,它通过分布处理磁盘请求、定位数据、保持Cache的一致性来提供对文件系统数据的低延迟、高带宽的访问。因而,XFS极具伸缩性。
  目前主流的文件系统是EXT4和XFS,可根据具体应用环境,选择最适合的一个文件系统。

2.文件系统的选择和优化

  面对这么多的文件系统,用户应该如何选择?一个合理的选择标准是:将应用的特点和环境与文件系统特性结合起来综合考虑,任何脱离应用环境而单独谈文件系统优劣的方法都是不合理和不科学的。
  下面针对不同的应用环境介绍一下如何选择合理的文件系统。
  (1)Web类应用
  网站系统、APP、博客等应用的特点是读操作频繁,写操作一般,那么EXT4或者XFS文件系统都是不错的选择。
  (2)数据库类应用
  对于MySQL、oracle、邮件系统等写操作频繁的结构化数据库类应用,XFS文件系统是最佳选择。根据实际应用经验,对XFS、EXT4、EXT3块写入性能对比,整体上性能差不多,但在效率上(CPU利用率)最好的是XFS,接下来依次是EXT4和EXT3.
  (3)普通应用类场景
  对性能要求不高、数据安全要求不高的业务,EXT3/EXT2文件系统是比较好的选择,因为EXT2没有日志记录功能,这样就节省了很多磁盘性能。例如,Linux系统下的/tmp分区就可以采用EXT2文件系统。

3.消除文件系统瓶颈的方法

  如果要对文件系统进行调优,需要重点关注哪些方面呢?这里做个简单的总结。

  • 如果程序访问磁盘的方式是顺序访问,那么就换一个更好的磁盘控制器;如果是随机访问,那么就增加更多的磁盘控制器。
  • 磁盘存储一定要使用RAID技术。根据不同的使用需求,选择不同的RAID级别。例如,写频繁、数据安全性要求一般,可采用RAID0;对数据安全性要求很高,可以采用RAID1或者RAID10。RAID有软、硬之分,优先使用基于硬件实现的RAID。
  • 给磁盘合理分区也有助于提高文件系统性能。例如,将写频繁的应用放到不同的磁盘中,这样可以最大限度地提高写入性能。
  • 选择合适的文件系统。根据上面介绍,结合业务特点选择一个适合的文件系统是非常有必要的。

你可能感兴趣的:(Linux系统性能指标,linux)