GPFS文件系统更换磁盘
一、前提准备
在更换磁盘前,需完成以下准备工作,降低操作风险:
确认集群状态
确保 GPFS 集群整体健康,无其他故障(如节点离线、网络中断)。可通过以下命令检查:
mmhealth cluster show # 查看集群健康状态
mmgetstate -a # 查看所有节点的GPFS状态(应为active)
2.备份关键信息
记录故障磁盘的相关信息(如名称、所属存储池、节点等),避免操作失误。可通过以下命令获取
mmdisklist <文件系统名> # 列出文件系统关联的磁盘
mmvdisk pdisk list --all # 若使用虚拟磁盘(vdisk),查看物理磁盘(pdisk)信息
mmlsstoragepool <文件系统名> # 查看存储池及关联磁盘
暂停业务(可选)
若更换磁盘涉及数据重平衡,建议在业务低峰期操作,或临时暂停对该文件系统的写入,避免数据不一致。
二、确认故障磁盘信息
需明确故障磁盘的标识(如 GPFS 中的磁盘名、操作系统中的设备名)及所属层级(物理磁盘 pdisk / 虚拟磁盘 vdisk)。
识别故障原因
通过日志或命令定位磁盘故障(如物理损坏、IO 错误):
mmhealth node show <节点名> # 查看节点级健康报告,定位故障磁盘
grep "IO error" /var/log/messages # 检查系统日志中的磁盘错误
关联磁盘标识
- GPFS 中,磁盘通常以
gpfs<序号>
命名(如gpfs1
),或通过pdisk
(物理磁盘)关联vdisk
(虚拟磁盘)。 - 操作系统中,磁盘设备名可能为
/dev/sdX
(SCSI)或/dev/nvmeXnY
(NVMe)。
确保 GPFS 磁盘名与操作系统设备名对应,可通过mmdisklist -L
查看详细映射。
- GPFS 中,磁盘通常以
三、从 GPFS 中移除故障磁盘
若磁盘已故障,需先将其从 GPFS 集群中逻辑移除,避免影响数据读写。
场景 1:非虚拟磁盘(直接管理物理磁盘)
标记磁盘为 “down”(可选)
若磁盘仍被 GPFS 识别但状态异常,可先标记为不可用:
mmdiskdown <磁盘名> # 例如:mmdiskdown gpfs1
2.移除磁盘
从文件系统中永久移除故障磁盘(需确保数据已通过副本机制备份,无数据丢失风险):
mmdiskrm <文件系统名> -d <磁盘名> # 例如:mmdiskrm gpfs_fs -d gpfs1
若磁盘是存储池的一部分,需同步更新存储池配置:
mmlsstoragepool <文件系统名> # 确认存储池状态
mmchstoragepool <存储池名> --remove <磁盘名> # 从存储池移除磁盘
场景 2:虚拟磁盘(vdisk,基于 pdisk 管理)
GPFS 中,虚拟磁盘(vdisk)由物理磁盘(pdisk)组成,若 pdisk 故障,需先从 vdisk 中移除:
查看 pdisk 与 vdisk 的关联
mmvdisk vdisk list --all # 列出所有vdisk及关联的pdisk
mmvdisk pdisk list --pool <存储池名> # 查看存储池中的pdisk状态
2.移除故障 pdisk
mmvdisk pdisk remove --pdisk <故障pdisk名> --pool <存储池名>
若 vdisk 因 pdisk 故障处于降级状态,移除后需等待 GPFS 自动修复(基于副本机制)。
四、物理更换磁盘
完成逻辑移除后,进行硬件层面的磁盘更换:
确认物理磁盘位置
根据服务器 / 存储阵列的硬件标识(如磁盘槽位号),定位故障磁盘(可参考机房标签或管理界面)。更换物理磁盘
- 若为热插拔磁盘,直接拔除故障盘并插入新盘(注意防静电);
- 若为非热插拔磁盘,需先关闭对应节点电源,更换后重启节点。
五、识别新磁盘
更换后,需确保操作系统和 GPFS 能识别新磁盘:
扫描新磁盘
在磁盘所在节点执行以下命令,让操作系统识别新磁盘:
rescan-scsi-bus.sh # 扫描SCSI设备(适用于机械盘/SSD)
nvme list # 查看NVMe磁盘(确认新盘设备名,如/dev/nvme1n1)
确认新磁盘状态
检查新磁盘无硬件错误,可通过smartctl
工具验证:
smartctl -H /dev/sdX # 检查磁盘健康状态(返回“PASSED”为正常)
六、将新磁盘添加到 GPFS
根据原磁盘的角色(物理磁盘直接管理 / 虚拟磁盘),将新磁盘加入 GPFS:
场景 1:直接添加物理磁盘
初始化磁盘
若新磁盘未格式化,需先创建 GPFS 兼容的分区(通常为整个磁盘作为一个分区)
parted /dev/sdX mklabel gpt # 创建GPT分区表
parted /dev/sdX mkpart primary 0% 100% # 全磁盘分区
2.添加到 GPFS 文件系统
使用mmdiskadd
将磁盘加入原文件系统和存储池:
mmdiskadd <文件系统名> -d /dev/sdX1 -p <存储池名> # -p指定存储池
同步到 vdisk
若原 vdisk 因故障减少了 pdisk,需将新 pdisk 加入 vdisk 组:
mmvdisk vdisk update --vdisk <vdisk名> --pdisk <新pdisk名>
七、验证更换结果
1.添加完成后,需确认新磁盘正常工作且数据状态完好:
mmdisklist <文件系统名> # 确认新磁盘已加入,状态为“active”
mmvdisk pdisk list --pool <存储池名> # 查看pdisk状态(虚拟磁盘场景)
2.确认数据完整性
检查文件系统使用率和数据分布,确保无数据丢失:
mmdf <文件系统名> # 查看文件系统空间使用情况
mmlsattr -L /path/to/important/file # 验证关键文件属性(可选)
3.检查集群健康
mmhealth cluster show # 确认集群无新告警
mmgetstate -a # 所有节点状态为“active”
八、注意事项
数据安全优先
更换前确保数据有副本(GPFS 默认支持多副本),避免因操作失误导致数据丢失。监控重平衡进度
新磁盘加入后,GPFS 会自动平衡数据(基于存储池策略),可通过mmrebalance
查看进度:
mmrebalance <文件系统名> --progress
处理异常情况
- 若磁盘移除失败:检查是否有锁定进程,使用
mmfsadm force unmount
强制卸载后重试; - 新磁盘无法识别:检查硬件连接、驱动是否正常,重启节点后重新扫描;
- 数据不平衡:手动触发重平衡
mmrebalance <文件系统名> start
。
- 若磁盘移除失败:检查是否有锁定进程,使用