为什么需要挂载 XFS 卷才能调整大小?

为什么需要挂载 XFS 卷才能调整大小?

如果我有一个 ext4 卷,无论是否使用命令resize2fs(提供设备),我都可以调整其大小,但对于 XFS 格式的分区,我需要安装该卷才能执行此操作(使用xfs_growfs)。这样做有什么原因吗?

顺便问一下,如果我想调整 XFS 卷的大小,我可以将其挂载到临时目录并运行xfs_growfs,然后再次卸载吗?不管它被挂载到其他地方?或者xfs_growfs如果同一个卷被挂载在多个挂载点会很危险吗?

答案1

如果我有一个 ext4 卷,无论是否已安装,我都可以使用 resize2fs 命令(提供设备)调整其大小,但对于 XFS 格式的分区,我需要安装该卷才能执行此操作(使用xfs_growfs)。这样做有什么原因吗?

由于没有工具可以缩小 XFS 卷,因此开发人员认为它并不重要,因此从未实现它。我实际上也能理解其中的原因。基本上不存在需要调整卷大小但又无法挂载它的情况,并且在内核代码中处理调整大小意味着您不必担心卷是否干净。

可能值得注意的是,xFS 在这方面并不是独一无二的,BTRFS 也需要先挂载卷才能调整大小,其他一些文件系统也是如此。其他文件系统只有在卸载时才可以调整大小。ext2/3/4 格式实际上是其中比较奇怪的一种,因为它们可以在挂载和卸载时调整大小。


顺便问一下,如果我想调整 XFS 卷的大小,我可以将其挂载到临时目录并运行xfs_growfs,然后再次卸载吗?不管它被挂载到其他地方?或者xfs_growfs如果同一个卷被挂载在多个挂载点会很危险吗?

这个问题有点复杂。所有最新的 Linux 内核都能合理地处理同一卷的多个挂载(在内部,所有用户空间可见实例都引用一个挂载),在这样的内核上,将 XFS 卷第二次挂载到某处并在xfs_growfs其上运行是完全安全的,尽管这样做并没有给你带来任何好处,而不是仅仅调用xfs_growfs原始挂载点。但是,如果你使用的是较旧的内核,或者正在处理不同节点的共享存储,那么无论你打算用额外的挂载做什么,都应避免再次挂载该卷,因为你可能会在此过程中破坏它。

相关内容