我们有一个中等规模的科学集群,有 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。然而,这似乎仍然是一个有风险的操作,你需要备份反正,所以我仍然会采用“备份和重建”路线。