VMware 中的 SCSI 总线共享功能及配置方法
2026-07-24
SCSI 总线共享是 VMware 环境中一项强大功能,允许多个虚拟机(VM)同时访问同一块磁盘。该功能在构建高可用性集群或为关键任务工作负载在虚拟机之间配置共享存储时至关重要。但 SCSI 总线共享具体实现什么功能?如何安全地配置它?在生产环境中又有哪些注意事项?本指南将从基础概念讲起,逐步深入至高级配置技巧,助您在 VMware 基础架构中自信、可靠地使用 SCSI 总线共享。
VMware 中的 SCSI 总线共享是什么?
从根本上讲,SCSI(小型计算机系统接口)定义了计算机如何连接到磁盘或磁带驱动器等存储设备。在 VMware 环境中,SCSI 总线共享允许两个或更多虚拟机通过共享的虚拟 SCSI 控制器同时访问同一块虚拟磁盘或原始设备映射(RDM)。
此设置对于 Microsoft 故障转移群集或 Oracle RAC 等群集应用至关重要,因为这些应用中的节点必须协调对共享数据卷的访问。若虚拟机监控程序和客户操作系统层面均未实现恰当的协调,同时写入操作可能导致数据损坏。
在 vSphere 中为虚拟机的控制器启用 SCSI 总线共享时,即表示您告知 VMware:该磁盘将由多个虚拟机同时访问,因此需应用特殊规则以避免冲突。
了解 SCSI 预留
在继续深入之前,有必要先了解磁盘访问在底层是如何协调的。当多个系统共享同一个物理 LUN(逻辑单元号)时,它们会使用SCSI 预留机制——该机制在关键操作期间锁定磁盘,确保同一时间仅有一个节点可执行写入操作。在虚拟机中使用Windows Server 或 Linux 高可用性(HA)工具构建的故障转移集群中,此类预留有助于避免“脑裂”情形,即两个节点同时尝试写入相互冲突的数据。
如果过多节点在缺乏合理设计的情况下争夺共享LUN的控制权(例如队列深度设置过高),性能将急剧下降,这种情况被称为“保留风暴”。
SCSI 总线共享的三种模式
VMware 提供三种模式:
无:不共享;每台虚拟机的磁盘均为私有。
虚拟:磁盘可在同一 ESXi 主机上的虚拟机之间共享。
物理层面:磁盘可在运行于不同ESXi主机上的虚拟机之间共享——非常适合实现跨主机的高可用性。
选择合适的模式取决于您的集群设计:
对于单主机集群或测试实验室:虚拟模式已足够。
对于跨多个主机的生产集群:必须使用物理模式,且需要所有主机可同时访问的块级共享存储。
比较 SCSI 总线共享与多写入器模式
这两项功能容易混淆,但其适用场景各不相同:
Feature
SCSI Bus Sharing
Multi-Writer Mode
Use Case | Guest-managed clustering | Parallelized apps needing concurrent writes |
Data Integrity | Managed by guest OS | Requires app-layer coordination |
Host Requirements | Shared storage | Typically single-host only |
在总线共享模式下,每个虚拟机内部的集群软件负责协调任意时刻哪个节点拥有写入权限——其机制包括法定数量磁盘(quorum disk)和隔离代理(fencing agent)。而在多写入者模式下,多个虚拟机可同时进行写入操作,但必须依赖应用程序自身的逻辑(例如集群数据库)来避免数据损坏;VMware 自身不提供内置的仲裁机制。
存储架构如何影响 SCSI 总线共享?
底层存储平台在您的配置能否顺畅运行——抑或日后引发问题——方面起着至关重要的作用。
为集群磁盘设计共享存储
在 ESXi 主机之间实现物理模式总线共享:
所有参与的主机必须通过光纤通道分区或iSCSI目标映射看到完全相同的LUN UUID。
需要基于区块的SAN存储(光纤通道/iSCSI);NFS数据存储区无法使用,因为它们缺乏真正的区块级锁定功能。
除非所有集群虚拟机均在同一台主机上以虚拟模式运行,否则无法使用本地磁盘——而这将使大多数高可用性(HA)目标失效!
请确保您的SAN管理员配置访问控制列表(ACL),以便只有经过授权的ESXi服务器才能看到集群LUN——此举可防止无关工作负载意外覆盖数据。
VMFS 与 vVols 的考量因素
大多数集群使用传统的 VMFS 数据存储,因为 vVols 不支持某些高级配置(例如采用物理模式总线共享的 SQL AlwaysOn FCI)所必需的裸设备映射(RDM)。如果您计划未来升级至 vVols 或 vSAN:
迁移集群工作负载前,请再次确认兼容性
请先在非生产环境中进行全面测试!
明智地选择您的控制器类型
并非所有虚拟控制器在集群环境中的表现都相同:
连接共享磁盘时,优先选择 LSI Logic SAS 控制器而非 PVSCSI;并非所有客户机操作系统集群驱动程序都完全支持 PVSCSI。
请为共享磁盘使用专用控制器——不要与操作系统/数据卷混用——以隔离队列深度设置并降低争用风险。
为何要将控制器隔离?这样做可让您针对不同工作负载类型分别调优性能,同时避免因单个队列内多个 I/O 流相互竞争而导致的瓶颈——这在繁忙的集群中十分常见!
SCSI总线共享设置分步指南
我们将配置过程划分为清晰的阶段——从规划到自动化——确保即使是大规模部署也能轻松管理。
首先确认以下基本事项:
1. 您有两个或更多虚拟机需要同时访问磁盘,例如在 Windows 故障转移群集配置中。
2. 所有相关的 ESXi 主机均通过网络路径(光纤通道/iSCSI)以完全相同的方式映射到您所选的 SAN LUN(逻辑单元号)。
3. 目标虚拟磁盘位于基于块的共享存储上——而非本地驱动器,除非是在测试单主机配置。
4. 您的许可证支持跨多个主机的物理模式集群(需要 vSphere Enterprise Plus 版本)。
请注意:如果使用原始设备映射(RDM)而非标准VMDK文件(例如当应用程序需要直接访问硬件功能时),操作流程略有不同,但在控制器分配和权限设置方面遵循相似的原则。
方法1:通过vSphere Web客户端配置控制器和磁盘
满足先决条件后:
1. 关闭所有计划共享该磁盘的虚拟机——由于元数据锁定要求,虚拟机运行时无法更改控制器设置。
2. 打开 vSphere Web 客户端;右键单击每个虚拟机,然后选择编辑设置。
3. 在虚拟硬件中,单击添加新设备,然后选择SCSI控制器(如尚未添加);务必为集群/共享磁盘单独分配一个控制器。
4. 展开新控制器条目;在SCSI 总线共享下拉菜单中将其属性设置为虚拟(同一主机)或物理(跨主机)。
5. 添加一个现有硬盘,指向您预先创建并存储在共享SAN/NAS上的.vmdk文件;如需满足应用程序兼容性要求,也可映射RDM。
6. 请将此磁盘专门挂载到您新创建的“共享”控制器下——切勿与启动卷/数据卷混用!
7. 在所有参与的集群节点上重复执行步骤 2 至 6;确保各处控制器编号/总线 ID 完全一致,以便在发生故障转移时客户机驱动程序能正确对齐。
8. 在再次确认各节点间的映射完全一致后,启动所有受影响的虚拟机。
为何要先关闭电源?在系统运行时更改硬件分配,可能导致元数据更新不一致——这会使部分客户机在重启后无法看到其法定人数磁盘或资源磁盘!
如果使用远程设备管理器(RDM):
根据应用程序需求,将它们一致地映射为物理兼容模式(“直通”)或虚拟兼容模式——但始终通过上述配置的专用控制器进行连接。
方法二:使用 PowerCLI 自动执行验证与报告
在规模较大的环境中(例如拥有数十个集群的环境),自动执行检查以确保符合最佳实践,能够迅速带来回报:
首先安全连接:
try {
Connect-VIServer $vcServer -ErrorAction Stop
} catch {
Write-Warning "无法连接到 $vcServer"
exit
}
然后枚举相关设置:
$array = @()
$vms = Get-Cluster $cluster | Get-VM
foreach ($vm in $vms) {
$controllers = $vm | Get-SCSiController | Where { $_.BusSharingMode -ne 'NoSharing' }
foreach ($ctrl in $controllers) {
$report = New-Object PSObject -Property @{
Name = $vm.名称
主机 = $vm.VMHostVMHost.名称
模式 = $ctrl.公交共享模式
路径 = ($ctrl.ExtensionData.设备 | % { $_ }) # 如有需要,添加路径报告
}
$array += $report
}
}
$array | Out-GridView # 以交互式界面呈现结果,便于管理员轻松筛选和导出发现项!
Out-GridView 的作用是什么?
它会弹出一个交互式表格,显示哪些控制器/磁盘已启用总线共享配置——这是在引发故障前快速识别错误配置的高效方式!想要更深入的验证?在上述脚本中增加针对各主机预期LUN UUID的校验,如发现任何不匹配项,则发出警报,或直接将结果导出为CSV报告,每日夜间通过电子邮件发送。
使用SCSI总线共享的关键建议成功源于周密规划,而非运气!
以下是基于实际经验的关键建议:
1.始终为集群/共享磁盘专门配置独立的控制器,而非将其与其他卷混合使用;此举可隔离队列深度,并在高负载期间避免不必要的资源争用。
2. 使用 esxtop 工具在 D 命令组下定期监控预留资源活动——注意出现的峰值,这可能表明由于多个节点同时执行故障切换/重启而导致并行度过高,从而引发预留风暴!
3. 在变更管理记录中准确记录映射关系(包括控制器编号、总线ID、LUN路径),以确保后续升级或迁移不会意外破坏依赖关系。
面向虚拟平台的企业级备份解决方案在利用 SCSI 总线共享等功能保护复杂的 VMware 基础架构时,选择一款可靠的备份解决方案至关重要——而 Vinchin 正是一款专为虚拟化环境量身打造、表现卓越的企业级备份方案。
Vinchin 备份与恢复提供专业级备份与灾难恢复功能,支持15 种以上主流虚拟化平台——包括对VMware、Hyper-V、Proxmox VE、oVirt、OLVM、RHV、XCP-ng、XenServer、OpenStack、ZStack 等的全面支持——所有功能均集成于一个以运维简洁性与可靠性为核心设计理念的统一控制台中。
对于在 VMware 集群中管理 SCSI 总线共享等高级配置的管理员,Vinchin 通过多项功能提供全面保护:
例如永久增量备份(最大限度缩短备份窗口并降低资源占用)、内置的重复数据删除与压缩技术(大幅提升存储效率)、支持跨平台的虚拟机到虚拟机(V2V)迁移工具(可在不同虚拟化平台或云平台间无缝迁移,规避停机风险)、细粒度恢复能力——可精确恢复至单个文件或文件夹,甚至适用于多节点集群化工作负载,以及灵活的调度策略(包括契合企业合规要求的 GFS 保留策略)。
在 Vinchin 的基于网页的界面中,备份特定 VMware 虚拟机仅需四个直观步骤:
1选择目标 VMware 虚拟机;
2. 选择所需的备份存储库/存储位置;
3. 定义自定义备份策略;
4. 提交任务。全球各行业广泛信赖——客户满意度评级优异——Vinchin诚邀您零风险体验其全部功能:
立即开始我们的15天全功能免费试用!点击下方按钮即可即时下载,并在数分钟内部署企业级保护。
下载免费试用版
适用于多种数据备份
* 15天全功能免费安全下载
关于 SCSI 总线共享的常见问题
问题1:我能否在不同的数据存储之间使用 SCSI 总线共享?
A1:否——共享磁盘必须完全位于一个块级数据存储中,且该存储需可被所有参与的 ESXi 主机同时访问。
问题2:如何查看当前哪些虚拟机启用了SCSI总线共享?
A2:运行 PowerCLI 命令连接 VISERVER > GET–CLUSTER > GET–VM > GET–SCSICONTROLLER,然后检查 BUSSHARINGMODE 字段的值。
问题3:如果有人尝试对通过启用 SCSI 总线共享功能的设备连接的虚拟机进行快照,会发生什么情况?
A3:操作立即失败,错误消息说明由于集群成员间强制执行的锁定状态,不支持快照功能。结论掌握 SCSI 总线共享技术,可在 VMware 环境中构建高弹性的集群系统——前提是您在架构设计与运维防护等各个环节严格遵循最佳实践!
Vinchin 凭借与主流虚拟化平台的深度集成,以及专为企业 IT 团队打造的强大自动化工具,让即使是复杂的多节点部署也能轻松实现保护。