XFS 文件系统通常在保持自身干净整洁方面做得非常好,但是随着时间的推移它仍然会变得碎片化。
在这里,我们将介绍如何检查 XFS 文件系统上的碎片级别,以及如何在需要时对其进行碎片整理,以进一步提高磁盘性能。
查看当前的 XFS 碎片级别
在我们的 XFS 文件系统上盲目运行碎片整理工具之前,我们首先想了解当前的碎片级别,因为可能甚至不需要碎片整理!
首先我们需要找到我们的 XFS 文件系统,这可以通过几种不同的方式来完成,一种简单的方法是运行 'blkid' 命令,如下所示。
[jack@onitroad ~]# blkid /dev/xvda1: UUID="1f790447-ebef-4ca0-b229-d0bc1985d47f" TYPE="xfs"
如图所示,这个 Linux 系统上的 /dev/xvda1 包含一个 XFS 文件系统。
xfs_db 命令可以与 -r 方法一起使用,以只读方式打开设备或者文件,这是挂载的文件系统所必需的。
这里我们指定我们的 XFS 文件系统 /dev/xvda1.
[jack@onitroad ~]# xfs_db -r /dev/xvda1 xfs_db>
事情将我们带到 xfs_db 提示符,我们可以其中运行其他命令,键入“help”以获得可以在此处运行的完整列表。
在此特定实例中,我们将使用“frag”命令,该命令用于获取碎片数据。
-d 标志用于显示目录数据,而 -f 标志用于文件数据。
xfs_db> frag -d actual 5933, ideal 5617, fragmentation factor 5.33% xfs_db> frag -f actual 132484, ideal 129817, fragmentation factor 2.01%
要退出 xfs_db 提示符,只需键入“quit”并按 Enter。
在这个特定的例子中没有什么太严重的,让我们看看我们是否可以通过对 XFS 文件系统进行碎片整理来提高碎片级别。
对 XFS 文件系统进行碎片整理
碎片整理是使用 xfs_fsr 工具完成的,该工具是 XFS 的文件系统重组器。
它的工作原理是改进每个文件的磁盘区的组织,以确保使用连续的空间。
此工具执行在线碎片整理,这意味着它可以在当前已安装和正在使用的文件系统上运行,只是要注意 I/O 使用量会增加,因此最好在一段时间内运行它如果可能,生产系统上的磁盘活动较少。
要运行 xfs_fsr,只需输入该命令,如下所示。
[jack@onitroad ~]# xfs_fsr xfs_fsr -m /proc/mounts -t 7200 -f /var/tmp/.fsrlast_xfs ... Completed all 10 passes
默认情况下,没有其他参数的 xfs_fsr 将针对 /etc/mtab 文件中列出的已安装 XFS 文件系统运行。
如果我们不想对可用的所有内容进行碎片整理,我们也可以指定一个文件系统,例如 /dev/xvda1 或者什至是一个特定的文件。
xfs_fsr 运行的默认时间是 7200 秒,即 2 小时。
在此之后,它会将当前进度保存到 /var/tmp/.fsrlast_xfs 文件中,这实质上允许我们暂停和恢复 XFS 碎片整理过程。
这三个选项可以通过分别指定 -m、-t 或者 -f 标志来手动修改。
以下是使用默认选项运行 xfs_fsr 后 xfs_db 报告的碎片级别。
xfs_db> frag -d actual 5935, ideal 5619, fragmentation factor 5.32% xfs_db> frag -f actual 129878, ideal 129863, fragmentation factor 0.01%
在这种特殊情况下,目录碎片几乎没有变化,而文件碎片几乎已消除。