在不重启服务器前提下刷新磁盘总线接口状态,需先执行ls /sys/class/scsi_host/确认host编号,再对每个host执行echo "- - -" > /sys/class/scsi_host/hostx/scan触发全通道、目标、lun扫描;若已知设备路径,可用echo 1 > /sys/class/scsi_device/x:y:z:w/device/rescan精准重扫;最后用lsblk或fdisk -l验证,并依需执行partprobe和文件系统扩展。

在不重启服务器的前提下刷新已被占用的磁盘总线接口状态,核心是主动触发内核重新探测 SCSI(或 FC/iSCSI)总线上的设备变化。这适用于物理服务器新增 LUN、虚拟机扩容后系统未识别新空间、SAN 维护后设备丢失等场景。关键不是“释放占用”,而是“通知内核重新扫描硬件连接状态”。
确认总线类型并定位 host 编号
不同存储连接方式对应不同总线目录,需先确认当前系统使用的是哪一类:
- 本地直连 SATA/SAS/PCIe NVMe(多数虚拟机也走此路径)→ 查看 /sys/class/scsi_host/
- FC 光纤通道 → 查看 /sys/class/fc_host/
- iSCSI 软件/硬件 Initiator → 查看 /sys/class/iscsi_host/
执行 ls /sys/class/scsi_host/(最常用),输出类似 host0 host1 host2,这些数字就是待操作的 hostX 中的 X。
向每个 host 发起全范围扫描
对上一步查到的每个 host,写入通配符指令触发扫描:
- echo "- - -" > /sys/class/scsi_host/host0/scan
- echo "- - -" > /sys/class/scsi_host/host1/scan
- echo "- - -" > /sys/class/scsi_host/host2/scan
其中 "- - -" 表示扫描所有通道(channel)、目标(target)、LUN(lun),是最稳妥的通用写法。无需事先知道具体编号,适合运维快速响应。
补充:针对已知 SCSI 设备路径的精准重扫
如果已知设备在 sysfs 中的完整路径(如 /sys/class/scsi_device/2:0:0:0/),可跳过 host 扫描,直接刷新单个设备:
- 执行 echo 1 > /sys/class/scsi_device/2:0:0:0/device/rescan
- 该方式更轻量,适用于确认某块盘掉线后恢复连接,但前提是设备节点仍存在。
验证与后续操作
扫描完成后,立即验证是否生效:
- 运行 lsblk 或 fdisk -l,查看是否有新盘(如 sdb、sdc)或原有盘容量是否变大
- 若只是容量扩展(非新增盘),还需用 partprobe /dev/sda 重读分区表,再用 resize2fs /dev/sda1(ext4)或 xfs_growfs /mount/point(xfs)扩展文件系统
- 若看到新盘但无分区,需用 fdisk 或 parted 创建分区,再格式化挂载











