我们有一个具有 32 个计算节点的中型科学集群。头节点为 RAID-6 的 54TB 存储提供服务。它由 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 重新配置分区表是否可能会丢失用户数据?更改单位和宽度最安全的方法是什么?
我会很感激你的意见和建议
谢谢
是的,事实上这正是
mkfs
工具所做的:它们总是创建一个没有数据的全新文件系统。(通常称为“重新格式化”。)因此,如果您在具有现有文件系统的分区上运行 mkfs,则数据丢失的可能性为 100%。如果官方实时重新配置工具(例如
xfs_admin
不允许更改此设置),那么最好假设您可以更改它的唯一方法是 1)进行备份,2)从头开始重新创建文件系统,3)从备份中恢复.有一些工具
fstransform
可以重建现有的文件系统——它用于在不同的文件系统类型之间进行转换,但它也可以将旧的 XFS“转换”为新的 XFS。但是,这似乎仍然是一项冒险的操作,无论如何您都希望进行备份,所以我仍然会选择“备份和重建”路线。