【现象说明】
我在VMware中为一台虚拟机在线添加了一块SCSI磁盘(IDE类型的磁盘添加必须关机进行);可是添加后使用lsblk和fdislk -l等都无法看到新增的磁盘信息。
【处理办法】
步骤 1:扫描新的 SCSI 设备
- 列出所有的 SCSI 主机适配器:
ls /sys/class/scsi_host/
这将显示类似 host0
, host1
, host2
等等的列表。
- 触发 SCSI 设备扫描
对于每个 SCSI 主机适配器,执行以下命令:
echo "- - -" | sudo tee /sys/class/scsi_host/hostX/scan
其中 hostX
是步骤 1 中列出的每个 SCSI 主机适配器。例如,如果有 host0
, host1
, host2
,则运行:
echo "- - -" | sudo tee /sys/class/scsi_host/host0/scan
echo "- - -" | sudo tee /sys/class/scsi_host/host1/scan
echo "- - -" | sudo tee /sys/class/scsi_host/host2/scan
当然上面的3条语句等同于shell脚本:
for host in /sys/class/scsi_host/host*; do
echo "- - -" | sudo tee "$host/scan"
done
# 这将遍历所有 SCSI 主机适配器并触发每个适配器的扫描。
步骤 2:验证新磁盘
再次列出块设备:
运行以下命令查看新磁盘是否已被识别:
lsblk
这个时候就可以看到新增磁盘的信息了。
额外的检查
如果上述步骤未能识别新磁盘,可以检查以下几点:
- dmesg 输出:查看系统日志,确认系统是否检测到了新设备:
dmesg | grep sd
- rescan-scsi-bus.sh:部分系统上安装了
sg3_utils
工具包,可以使用该包中的rescan-scsi-bus.sh
脚本来扫描新设备。你可以通过以下命令安装sg3_utils
:
sudo yum install sg3_utils
然后运行脚本:
sudo rescan-scsi-bus.sh
这些步骤可以实现在不重启虚拟机的情况下识别并使用新添加的 SCSI 磁盘。