Skip to content

XFS文件系统在线扩容完整指南

概述

XFS是高性能的日志文件系统,支持在线扩容特性,无需卸载文件系统即可完成容量扩展。本文档详细介绍Linux系统下XFS文件系统的在线扩容方法,包括单一路径和多路径环境下的操作步骤。

核心原理

XFS文件系统通过xfs_growfs命令实现在线扩容,该命令无需卸载文件系统即可识别并使用新增的磁盘空间。扩容过程包括两个主要步骤:

  1. 系统层面:识别磁盘新增空间
  2. 文件系统层面:扩展XFS文件系统以使用新空间

单一路径扩容

前提条件

  • 已安装XFS工具包
  • 有足够的磁盘空间可用于扩展
  • 具有root权限

扩容步骤

bash
# 1. 重新读取分区表
partprobe /dev/sdb

# 2. 扫描磁盘设备识别新增空间
echo 1 > /sys/class/block/sdb/device/rescan

# 3. 扩展XFS文件系统
xfs_growfs /mnt/test/

# 4. 验证扩容结果
df -h
lsblk

注意xfs_growfs命令不需要指定新大小,它会自动使用所有可用空间。

多路径环境扩容

前提条件

  • 已配置多路径(multipath)
  • 了解多路径设备名称

扩容步骤

bash
# 1. 扫描所有底层物理设备
echo 1 > /sys/class/block/sdf/device/rescan
echo 1 > /sys/class/block/sdg/device/rescan

# 2. 使用multipathd交互模式更新多路径映射
multipathd -k <<EOF
reconfigure
resize map mpatha
quit
EOF

# 3. 扩展XFS文件系统
xfs_growfs /data

# 4. 验证扩容结果
df -h
multipath -ll

参数详解

命令参数说明
partprobe设备名通知内核更新分区表
echo 1 > /sys/class/block/设备/device/rescan-触发设备重新扫描
xfs_growfs挂载点扩展XFS文件系统到最大可用空间

常见场景

1. 虚拟磁盘扩容

bash
# 在虚拟机环境中,先在虚拟化管理平台扩展磁盘
# 然后在虚拟机内执行
echo 1 > /sys/class/block/sda/device/rescan
xfs_growfs /

2. LVM上的XFS扩容

bash
# 1. 扩展物理卷
pvresize /dev/sdb

# 2. 扩展逻辑卷
lvextend -l +100%FREE /dev/mapper/vg_data-lv_data

# 3. 扩展XFS文件系统
xfs_growfs /mnt/data

3. 分区扩容

bash
# 1. 删除并重建分区(保留数据)
parted /dev/sdb
# (parted) print
# (parted) rm 1
# (parted) mkpart primary xfs 1MB 100%
# (parted) quit

# 2. 扩展文件系统
xfs_growfs /mnt/data

故障排查

1. 设备识别失败

bash
# 检查设备状态
ls -l /sys/class/block/
fdisk -l /dev/sdb

# 尝试手动重新扫描
echo "- - -" > /sys/class/scsi_host/host0/scan

2. 扩容失败

bash
# 检查文件系统状态
xfs_info /dev/sdb1

# 检查文件系统日志
xfs_logprint /dev/sdb1

# 强制文件系统检查(如需要)
xfs_repair -n /dev/sdb1  # 只检查不修复
# xfs_repair /dev/sdb1     # 修复文件系统

性能优化

1. 调整XFS挂载参数

bash
# 重新挂载并优化参数
mount -o remount,noatime,nobarrier /dev/sdb1 /mnt/data

2. 调整IO调度器

bash
# 查看当前调度器
cat /sys/block/sdb/queue/scheduler

# 设置为deadline调度器(适用于数据库场景)
echo deadline > /sys/block/sdb/queue/scheduler

安全注意事项

⚠️ 操作前

  • 备份重要数据
  • 确认系统有足够空间执行操作
  • 在非业务高峰期执行扩容

⚠️ 操作中

  • 不要强制终止扩容过程
  • 监控系统资源使用情况

⚠️ 操作后

  • 验证数据完整性
  • 更新监控和告警阈值
  • 文档记录变更

监控与验证

1. 验证扩容成功

bash
# 检查文件系统大小
df -h /mnt/data

# 检查文件系统详细信息
xfs_info /dev/sdb1

# 检查磁盘空间使用
du -sh /mnt/data

2. 性能监控

bash
# 监控IO性能
iostat -x 1 5

# 监控文件系统性能
xfs_io

# 检查系统日志
dmesg | grep -i xfs

总结

XFS文件系统的在线扩容功能为运维工作提供了极大便利,通过正确使用partprobe、设备重扫描和xfs_growfs命令,可以在不中断服务的情况下完成存储容量扩展。在多路径环境中,需要额外使用multipath工具更新多路径映射。操作前务必备份重要数据,并在操作后验证扩容结果。

用心记录,持续学习 | CNB