在 XFS 中更改 sunit 和 swidth 而不会丢失数据

在 XFS 中更改 sunit 和 swidth 而不会丢失数据

我们有一个中等规模的科学集群,有 32 个计算节点。头节点提供 54TB 的 RAID-6 存储。它由 22 个 3TB HDD(2 个奇偶校验单元)和 256K 的条带大小组成。NFS 是 /home。我们最近遇到了 I/O 性能不佳的问题。当我执行时,xfs_info /home 我看到以下内容

meta-data=/dev/sdb1              isize=256    agcount=55, agsize=268435455 blks
         =                       sectsz=512   attr=2, projid32bit=0
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=14648380928, imaxpct=1
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

有人指出 sunit 和 swidth 应该与 RAID 配置相匹配。在我们的例子中,sunit 必须是 256K,swidth 必须是 20。显然,我重置这些值的唯一方法是通过 mkfs.xfs。但是,我有点犹豫,我担心会丢失用户数据

我的问题是:使用 mkfs.xfs 重新配置分区表是否可能会丢失用户数据?更改 sunit 和 swidth 的最安全方法是什么?

我很感激你的意见和建议

谢谢

答案1

使用 mkfs.xfs 重新配置分区表可能会丢失用户数据吗?

是的,事实上这就是mkfs工具所做的:它们总是创建一个全新的文件系统,其中没有数据。(通常称为“重新格式化”。)因此,如果您在具有现有文件系统的分区上运行 mkfs,则数据丢失的可能性为 100%。

改变 sunit 和 swidth 最安全的方法是什么?

如果官方的实时重新配置工具xfs_admin不允许更改这一点,那么最好假设唯一可以更改它的方法是 1) 进行备份,2) 从头开始​​重新创建文件系统,3) 从备份中恢复。

有一些工具fstransform可以重建现有的文件系统——它用于在不同文件系统类型之间进行转换,但它也可以将旧 XFS“转换”为新 XFS。然而,这似乎仍然是一个有风险的操作,你需要备份反正,所以我仍然会采用“备份和重建”路线。

相关内容