XFS文件系统简介(xfs_info观察相关数据)

CentOS 7开始,预设的文件系统由原来的EXT4变成了XFS文件系统了,那么,为什么会做这一改变?XFS是一个什么样的文件系统?

EXT家族的一些缺点:
这里鸟哥总结了一句:支持度最广,但格式化超慢。

EXT家族对文件格式化时预先规划出所有的inode/block及中介数据等,未来系统就可以直接取用,不需再分配。早期的磁盘容量不太大的时候这就可以,但随着时代的发展,数据量越来越大,磁盘容量越来越大。现在都已经说到PB,EB的数据了,那么TB以上等级的传统ext
家族文件系统在格式化的时候就得废掉好多时间。。

另外一个原因,虚拟化的应用现在越来越广泛,作为虚拟化磁盘来源的巨型文件(单一文件好几个G及以上)也就越来越常见。这种巨型文件在处理上需要考虑到效能的问题,否则虚拟磁盘的效率就会不太好看。

所以,从centos开始,预设的文件系统由EXT4变成了xfs这个较适合高容
量磁盘与巨型文件效能较佳的文件系统了。

XFS文件系统的配置

基本上XFS就是一个日志式文件系统,之所以现在把它当预设的文件系统
是因为它原本就是被开发用于高容量磁盘以及高性能文件系统之用的,相当适合于现在的环境。此外,几乎所有EXT4文件系统具有的功能,xfs都具备。

xfs文件系统在资料的分布上,主要规划为三个部分:资料区(data section),文件系统活动登录区(log section),实时运作(realtime section)。具体如下:

1资料区(data section)

这个区域基本上与之前说的EXT家族一样,包括inode、block、superblock等数据都放在这个区块。这个数据区与ext家族的block group类似,分多个储存区群组(allocation groups)。每个储存区群组中都包含了整个文件系统的superblock,剩余空间的管理机制,inode的分配与追踪。此外,inode,block都是系统需要用到时才会动态配置产生,所以格式化动作较EXT家族快了很多。

其实,只需要把这个数据区的储存区群组当成ext的block群组就可以了,只是inode与block是动态产生的,并非一开始于格式化就完成配置的。

2文件系统活动登录区(log section)

这个区域主要被用来记录文件系统的变化,具体原理和之前说的相同。
因为系统所有的动作都会在这个区域做个记录所以这个区域的磁盘活动是相当频繁的,xfs的设计在这里有一个巧妙之处,你可以指定外部的磁盘来作为xfs文件系统的日志管理区块。例如,你可以将SSD磁盘作为xfs的文件系统活动登录区,这样,当系统需要进行任何活动时,就可以更迅速的工作。

3实时运作区(realtime section)

当有文件要被建立时,xfs会在这个区段里找一个到数个extent区块,将文件放置在这个区块中,等到分配完毕后,再写入到data section的inode和block中。这个extent区块的大小得要在格式化的时候就先指定,最小值为4K最大可到1G。一般非磁盘阵列的磁盘默认为64K容量,而具有类似磁盘阵列的stripe情况下,则建议extent设定为与stripe一样大较佳。这个extent最好不要乱动,因为可能会影响到实体磁盘的效能。

XFS文件系统的描述数据观察(xfs_info)

这里写图片描述

下面解释一下以上输出的信息:

  • isize : inode的容量,这里为256bytes。
  • agcount:储存区群组的个数,这里有4个。
  • agsize : 每个储存区群组里的block个数,这里为32000个。
  • sectsz:逻辑扇区(sector)的容量,这里为512bytes。
  • bsize:每个block的容量为4 k。
  • blocks:共有128000个block在这个文件系统内。
  • sunit,swidth:与磁盘阵列的stripe相关性较高,这里暂时不说明。
  • internal,指这个登录区的位置在文件系统内,而不是外部系统的意思,占用了4K * 853空间。
  • 第9行:realtime区域,extent容量为4k,none=>不过目前没有使用。

感谢阅读,欢迎指正。

-------------本文结束感谢您的阅读-------------