从磁盘识别到ASM在线扩容,一文打尽日常运维痛点
磁盘虽小乾坤大,共享存储系万家Multipath里藏玄机,ASM盘中映晚霞扩容无需惊重启,运维从容笑群侠Linux深处探究竟,DBA从此不白发
各位老铁,大家好。我是Acdante。话说DBA这行干久了,你会发现:百分之八十的问题都跟磁盘打交道。不是存储满了,就是共享盘不认;不是多路径断了,就是ASM磁盘offline。其中存储空间爆满应该是占比最大的,无论是临时归档日志暴增、还是数据暴增、日志问题、亦或者是备份文件问题,磁盘空间、存储空间问题,一直都是运维的重点关注项。扩容,也就成了日常运维必备技能。上周就遇到个案例:客户的生产库凌晨报警,说/u01空间不足85%。当时值班的兄弟一看,卧槽,Oracle_HOME所在的lv只剩2GB了。正常流程是:申请停机窗口→备份→扩展存储→扩容LV→扩展文件系统→验证。这套下来,少说也得半小时到一小时。但客户的生产库怎么可能停机!于是远程接入,三分钟内搞定在线扩容,天亮之前系统恢复正常。怎么做到的?今天这篇文章,我就把压箱底的磁盘运维十八般武艺都抖落出来。

📋 文章目录
01. Linux扫描磁盘总线原理
02. 磁盘识别与共享存储识别
03. Multipath多路径配置完整指南
04. 不重启扫描新增磁盘
05. LVM在线扩容(ext4/xfs)
06. ASM磁盘权限配置(udev)
07. ASM磁盘在线扩容实战
08. 日常运维检查清单
01.Linux扫描磁盘总线原理
作为一个在生产环境摸爬滚打多年的DBA,我深知理解底层原理的重要性。很多朋友只会敲命令,遇到问题就抓瞎。要想从根本上解决磁盘相关的问题,必须搞懂Linux是如何发现和管理磁盘的。
Linux内核通过SCSI子系统来管理存储设备。SCSI(Small Computer System Interface)是一套用于连接主机与存储设备的接口标准。

当HBA卡检测到光纤通道(FC)或iSCSI网络上的存储设备时,会通过扫描通道来发现新设备。/sys/class/scsi_host/目录下每个host对应一个HBA卡端口。

这是个面试常考题,也是生产环境的必备知识。写入scan文件的格式是:"Channel Target Lun"
| 第一个"-" | ||
| 第二个"-" | ||
| 第三个"-" |
💡 原理图解: 扫描机制就是告诉SCSI中间层:"这个通道上有新设备,帮我枚举一下"。用"- - -"表示扫描所有可能的新设备。
02.磁盘识别与共享存储识别
搞定了原理部分,接下来进入实战环节。RAC环境中,正确识别磁盘是配置多路径和ASM的第一步。

WWN(World Wide Name)是存储设备的全球唯一标识符,相当于网卡的MAC地址。在RAC环境中,必须确保所有节点的HBA能看到相同的WWN。也是FC SAN网络中的“MAC”地址,唯一标识符。传统FC SAN共享存储中的主机启动器就是这个玩意,对应单一唯一主机FC端口。

对于配置了多路径的环境,使用multipath -ll可以直观看到每条路径的状态和聚合后的逻辑设备。

03.Multipath多路径配置完整指南
终于到了Multipath配置这个重头戏。这玩意儿配置对了,存储的高可用就成功了一半;配置错了,轻则路径漂移,重则数据丢失。

配置文件分三个部分:defaults(默认配置)、blacklist(黑名单)、multipaths(路径绑定)。
📄 配置文件:/etc/multipath.conf 完整示例


04.不重启扫描新增磁盘
这是DBA最常用的技能之一。当存储管理员给你分配了新LUN,必须掌握这个技能。


这个技能是生产环境的必备绝技。当存储管理员扩展了LUN容量,而你又不能重启服务器时,用这个方法让系统识别到新容量。
⚠️ 核心原理:不是扫描新设备,而是让现有设备向存储重新查询容量信息。这是"扩容扫描"和"新盘扫描"的本质区别。

05.LVM在线扩容(ext4/xfs两种格式)
终于到了最激动人心的章节——LVM在线扩容。这也是生产环境中DBA最常执行的操作之一。
ext4文件系统支持在线扩容,无需卸载文件系统!

xfs是Oracle 12c+推荐的文件系统。注意:xfs只能扩容,不能缩容!

| 最大文件系统大小 | ||
| 在线扩容 | ||
| 在线缩容 | ||
| 大文件性能 | ||
| Oracle推荐 |

06.ASM磁盘权限配置(udev方式)
在Oracle RAC环境中,ASM磁盘必须被grid用户正确访问。udev是配置持久化磁盘权限的标准方法。
RAC环境中,所有节点必须对ASM磁盘有完全一致的所有权和权限。传统方式存在设备名漂移风险。udev通过WWN绑定设备名,确保即使/dev/sd*变化,权限配置依然正确。

📄 配置文件:/etc/udev/rules.d/99-oracle-asm.rules


07.ASM磁盘在线扩容实战
这是Oracle DBA必须掌握的高阶技能。当ASM磁盘组空间不足时,需要在线添加新磁盘或扩展现有磁盘。
这种方式适合需要灵活管理磁盘空间的场景。底层用LVM,上层是ASM。

这种方式适用于直接使用ASM管理裸设备的场景。


08.日常运维检查清单
作为DBA,预防胜于治疗。下面这些检查命令,建议加入每日巡检清单。
#!/bin/bash#========================================# Oracle RAC# Acdante-Zhang# connect to acdante.com#========================================LOGFILE=/tmp/oracle_storage_check_$(date +%Y%m%d).logALERT_EMAIL=dba@example.comecho "========== Oracle RAC 存储巡检 $(date) ==========" | tee -a $LOGFILE# 1. 多路径状态检查echo "[1/6] 检查多路径状态..." | tee -a $LOGFILEmultipath -ll | grep -E "fail|offline|ghost" >> $LOGFILEif [ $? -eq 0 ]; thenecho "⚠️ 警告: 发现异常路径!" | tee -a $LOGFILEelseecho "✓ 多路径状态正常" | tee -a $LOGFILEfi# 2. ASM磁盘空间检查echo "[2/6] 检查ASM磁盘空间..." | tee -a $LOGFILEsqlplus -s / as sysasm <> $LOGFILESET LINESIZE 200SET PAGESIZE 100SELECT name, total_mb/1024 AS total_gb, free_mb/1024 AS free_gb,ROUND((total_mb-free_mb)/total_mb*100, 2) AS pct_usedFROM v\$asm_diskgroup;EOF# 3. 文件系统空间检查echo "[3/6] 检查文件系统空间..." | tee -a $LOGFILEdf -h | awk '$5 > 80 {print "⚠️ 警告: "$1" 使用率"$5}' >> $LOGFILE# 4. ASM磁盘状态检查echo "[4/6] 检查ASM磁盘状态..." | tee -a $LOGFILEsqlplus -s / as sysasm <> $LOGFILESELECT disk_number, name, mode_status, stateFROM v\$asm_disk WHERE mode_status != 'ONLINE';EOF# 5. CRS状态检查echo "[5/6] 检查CRS状态..." | tee -a $LOGFILE$GRID_HOME/bin/crsctl check crs >> $LOGFILE 2>&1# 6. LVM状态检查echo "[6/6] 检查LVM状态..." | tee -a $LOGFILEvgs -o vg_name,pfree,lv_name | grep -v "100.00" >> $LOGFILEecho "========== 巡检完成 ==========" | tee -a $LOGFILE# 发送告警邮件(如果有问题)if grep -q "⚠️" $LOGFILE; thenmail -s "[警告] Oracle RAC存储巡检异常" $ALERT_EMAIL < $LOGFILEfi
磁盘运维非小事,防微杜渐是根本扫描扩容虽小技,关键时刻救乾坤ASM盘中藏数据,LVM层里见真金愿君熟读此手册,运维路上少烦心

好了,各位老铁,这篇文章就到这里。总结一下今天的内容:1. 扫描原理:理解了"- - -"的含义,就掌握了磁盘扫描的精髓2. 多路径配置:multipath.conf三段式配置,配合WWN绑定告别设备漂移3. 在线扩容:echo 1 > rescan,让存储感知变化;lvextend+resize2fs/xfs_growfs,让文件系统跟上4. ASM扩容:SQL语句在线添加磁盘,REBALANCE完成数据重分布纸上得来终觉浅,绝知此事要躬行。建议大家有空在测试环境多练练,把这些命令变成肌肉记忆。有任何问题,欢迎在评论区留言,我们一起探讨。我是Acdante,我们下期再见!👋
📌 作者:Acdante💼 小白 Oracle DBA,专注数据库架构与运维📧 微信公众号:Acdante
🔗 本文参考:Oracle官方文档 - Oracle Automatic Storage ManagementRed Hat官方文档 - LVM Administration GuideRed Hat官方文档 - Device Mapper Multipath
Oracle表空间使用率自动检测与智能扩容实战——Shell脚本监控告警及自动扩展数据文件与ASM磁盘组管理基础知识【Oracle数据库分享--0x06】
Oracle 26ai数据库架构体系结构与新特性浅显分享【Oracle数据库分享--0x15】