xfs文件系统

2018-05-27 08:27:00

CentOS 7 开始,默认的文件系统已经由原本的 EXT4 变成了 XFS 文件系统了! EXT最不好的就是格式化超慢! Ext采用的是预先规划出所有的 inode/block/meta data 等数据,未来系统可以直接取用, 不需要再进行动态配置的作法。这个作法在早期磁盘 容量还不大的时候还算 OK 没啥问题,但时至今日,磁盘容量越来越大,连传统的 MBR 都已 经被 GPT 所取代!现在都已经 说到 PB 或 EB 以上容量了呢!那你可以想像得到,当你的 TB 以上等级的传统 ext 家族文件 系统在格式化的时候,光是系统要预先分配 inode 与 block 就非常耗时。

ext4的性能不比xfs慢!所以,考虑到对于文件系统的复原速度、创建速度,才是改换成 xfs 的思考点。

基本上 xfs 就是一个日志式文件系统,而 CentOS 7.x 拿它当默认的文件系统,自然就是因为最早之前,这个 xfs 就是被开发来用于大容量磁盘以及高性能文件系统之用, 因此,相当适合现在的系统环境。此外,几乎所有 Ext4 文件系统有的功能, xfs 都可以具备!

xfs 文件系统在数据的分佈上,主要规划为三个部份,一个数据区(data section)、一个文 件系统活动登录区(log section)以及一个实时运行区 (realtime section) 。 这三个区域的数据内容如下

数据区 (data section)
基本上,数据区就跟我们之前谈到的 ext 家族一样,包括 inode/data block/superblock 等数据,都放置在这个区块。 这个数据区与 ext 家族的 block group 类似,也是分为多个储存区群组 (allocation groups) 来分别放置文件系统所需要的数据。 每个储存区群组都包含了 (1) 整个文件系统的 superblock、 (2) 剩余空间的管理机制、 (3) inode的分配与追踪。 此外,inode与 block 都是系统需要用到时, 这才动态配置产生,所以格式化动作超级快!

与 ext 家族不同的是, xfs 的 block 与 inode 有多种不同的容量可供设置,block 容量 可由 512Bytes ~ 64K 调配,不过,Linux 的环境下, 由于内存控制的关系 (分页档 pagesize 的容量之故) ,因此最高可以使用的 block 大小为 4K 而已! 至于 inode 容量可由 256Bytes 到 2M 这么大!不过,大概还是保留 256Bytes 的默认值就很够用了。

文件系统活动登录区 (log section)
这个区域主要被用来纪录文件系统的变化,其实有点像是日志区啦!文件的变化会 在这里纪录下来,直到该变化完整的写入到数据区后, 该笔纪录才会被终结。如果文件系统 因为某些缘故 (例如最常见的停电) 而损毁时,系统会拿这个登录区块来进行检验,看看系 统挂掉之前, 文件系统正在运行些啥动作,借以快速的修复文件系统。 因为系统所有动作的时候都会在这个区块做个纪录,因此这个区块的磁盘活动是相当频 的!在这个区域中, 你可以指定外部的磁盘来作为 xfs 文件系统的日志区块喔!例如,你可以将 SSD 磁盘作为 xfs 的登录区,这样当系统需要进行任何活动时, 就可以更快速的进行工作!

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

EXT 家族的 dumpe2fs 可以观察 superblock,如果要观察xfs文件系统,则要用xfs_info命令。

©著作权归作者所有
收藏
推荐阅读
简介
天降大任于斯人也,必先苦其心志。