news 2026/6/8 8:30:26

VMware Workstation Pro 17 虚拟机热添加硬盘后,fdisk -l 不显示?手把手教你用 SCSI 总线扫描搞定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VMware Workstation Pro 17 虚拟机热添加硬盘后,fdisk -l 不显示?手把手教你用 SCSI 总线扫描搞定

VMware虚拟机热添加硬盘的SCSI总线扫描实战指南

当你正在紧张调试代码或运行长时间测试任务时,突然发现虚拟机存储空间告急。传统做法是关闭虚拟机、添加硬盘再重启,但这会中断所有进行中的工作。VMware Workstation Pro的热添加功能本应完美解决这个问题——直到你在终端输入fdisk -l后,发现新硬盘竟然"消失"了。

1. 热添加硬盘为何需要手动扫描?

虚拟化环境中的存储设备热添加涉及两个层面的协作:虚拟化层的资源分配和客户机操作系统的设备识别。当我们通过VMware界面添加虚拟硬盘时,VMware会立即在虚拟硬件层面完成配置,但客户机操作系统并不会自动感知这一变化——这与物理服务器插入新硬盘时触发的中断机制不同。

SCSI(Small Computer System Interface)总线在Linux系统中通过/sys/class/scsi_host/目录下的hostX接口进行管理。每个hostX对应一个SCSI主机适配器,而scan文件则是触发该适配器重新扫描连接的设备。关键点在于:

  • 虚拟SCSI控制器:VMware默认使用LSI Logic或VMware Paravirtual SCSI控制器
  • 无中断机制:虚拟环境不会生成物理插入设备时的SCSI总线重置信号
  • 内核缓存:Linux内核维护的设备列表不会主动更新
# 查看系统SCSI主机适配器 ls /sys/class/scsi_host/ # 典型输出:host0 host1 host2

2. 多方法触发SCSI设备重扫描

2.1 基础扫描命令

最直接的方法是向所有SCSI主机发送扫描指令:

for host in /sys/class/scsi_host/host*/scan; do echo "- - -" > $host done

这个命令的工作原理:

  • - - -三个参数分别代表:通道号、目标ID、LUN(逻辑单元号)
  • 使用通配符表示扫描所有可能的设备组合
  • 适用于大多数标准SCSI控制器配置

2.2 针对性扫描脚本

对于复杂的多控制器环境,可以创建更智能的扫描脚本:

#!/bin/bash # 保存为rescan-scsi.sh for host in $(ls /sys/class/scsi_host/); do echo "Scanning $host..." echo "- - -" > /sys/class/scsi_host/$host/scan sleep 1 # 给设备识别留出缓冲时间 done # 检查新设备 lsblk

执行权限与使用:

chmod +x rescan-scsi.sh ./rescan-scsi.sh

2.3 设备热插拔接口

Linux还提供了专门的热插拔接口:

echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan

注意:设备路径中的数字需要根据实际SCSI地址调整,可通过lsscsi命令查询

3. 高级排查与自动化方案

3.1 设备识别状态检查

在扫描前后,可以通过以下命令验证设备状态:

# 查看SCSI设备树 lsscsi # 查看块设备列表 lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,FSTYPE,MOUNTPOINT # 查看内核消息 dmesg | grep -i scsi

3.2 udev规则自动化

为避免每次手动扫描,可以创建udev规则自动响应存储设备变化:

# /etc/udev/rules.d/99-vmware-hotadd.rules ACTION=="add", SUBSYSTEM=="scsi", RUN+="/usr/local/bin/vmware-rescan.sh"

配套脚本示例:

#!/bin/bash # /usr/local/bin/vmware-rescan.sh for host in /sys/class/scsi_host/host*/scan; do echo "- - -" > $host done

3.3 不同虚拟化平台的对比

功能VMware WorkstationVirtualBoxKVM/QEMU
热添加支持有限支持
自动识别需手动扫描有时需刷新通常自动识别
推荐控制器类型LSI Logic SASSATAVirtIO-SCSI
扫描命令SCSI总线扫描rescan-scsi-busecho 1 > rescan

4. 后续磁盘管理操作指南

成功识别新硬盘后,典型的Linux磁盘配置流程:

  1. 分区创建

    fdisk /dev/sdX # X为新磁盘标识 # 交互命令:n→p→1→回车→回车→w
  2. 文件系统创建

    mkfs.ext4 /dev/sdX1
  3. 持久化挂载

    # 获取UUID blkid /dev/sdX1 # 编辑/etc/fstab添加 UUID=xxxx-xxxx-xxxx /mnt/data ext4 defaults 0 2

对于LVM环境:

pvcreate /dev/sdX1 vgextend vg_name /dev/sdX1 lvextend -l +100%FREE /dev/vg_name/lv_name resize2fs /dev/vg_name/lv_name

在最近的一个Kubernetes开发环境配置中,我不得不为10个节点虚拟机同时扩展存储。通过编写批量执行脚本,结合SSH密钥认证,这套方法成功实现了零宕机存储扩容,整个过程比传统重启方式节省了至少3小时的中断时间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 8:24:52

Claude Code 100个真实案例 - 用AI清理项目死代码(删掉30%无用代码更快了)

Claude Code 100个真实案例 - 用AI清理项目死代码(删掉30%无用代码更快了) 📌 文章简介:本案例展示如何使用 Claude Code 系统性扫描和清理项目中的死代码,包括未使用的函数、废弃的组件、冗余的依赖包、过时的配置文件,最终让项目代码量减少 30%,编译和启动速度显著提…

作者头像 李华
网站建设 2026/6/8 8:19:50

16亿Windows用户,一夜冲进Agent时代

Windows正式化身Agent操作系统!龙虾之父官宣OpenClaw原生入驻,Copilot四大能力全面合体,16亿打工人的世界变天了。 微软Build 2026大会,旧金山开幕。 今夜,CEO纳德拉登台,带来了一场震撼全场的主题演讲—…

作者头像 李华
网站建设 2026/6/8 8:17:58

用Python脚本模拟DDoS攻击测试自家路由器?一个安全新手的踩坑实录

家庭网络安全实战:用Python模拟DDoS攻击的合法测试指南在智能家居设备普及的今天,路由器作为家庭网络的第一道防线,其安全性往往被大多数用户忽视。去年的一次偶然经历让我意识到问题的严重性——当时家中的智能摄像头因路由器漏洞遭到入侵。…

作者头像 李华