AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1852738
Accepted
jimjamz
jimjamz
Asked: 2024-08-19 13:13:24 +0800 CST2024-08-19 13:13:24 +0800 CST 2024-08-19 13:13:24 +0800 CST

在 virt-manager 中,VirtIO、Red Hat 或 QEMU SCSI 磁盘之间有什么区别?

  • 772

根据我之前将 IDE VM 磁盘迁移到 VirtIO SCSI 的经验,我在 virt-manager 中创建了一个 Win10 VM,主磁盘是设置时的 SCSI 磁盘。在 virt-manager 中,我创建了一个 VirtIO SCSI 控制器:

<controller type="scsi" index="0" model="virtio-scsi">
  <address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</controller>

然后我创建了一个磁盘(SCSI 磁盘 1),根据 virt-manager 的说法,它使用SCSI总线类型:

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2" discard="unmap"/>
  <source file="/var/lib/libvirt/images/win10-enterprise.qcow2"/>
  <target dev="sda" bus="scsi"/>
  <boot order="2"/>
  <address type="drive" controller="0" bus="0" target="0" unit="0"/>
</disk>

在 virt-manager 中确认 SCSI 磁盘正在使用 VirtIO SCSI 控制器

在 Win10 设置期间,我安装了RedHat VirtIO ISO并安装了驱动程序,以便 Win10 可以安装到 SCSI 磁盘:

在 Windows 10 安装过程中安装 RedHat VirtIO 驱动程序

安装后,我向虚拟机添加了另一个磁盘(VirtIO Disk 1 )。这次在 virt-manager 中,我选择VirtIO作为总线类型:

<disk type="file" device="disk">
  <driver name="qemu" type="qcow2" discard="unmap"/>
  <source file="/var/lib/libvirt/images/win10-enterprise-1.qcow2"/>
  <target dev="vda" bus="virtio"/>
  <address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</disk>

VirtIO 磁盘似乎未链接到 virt-manager 中虚拟机概览上列出的任何控制器。我假设此磁盘是VirtIO 块设备。

在 Win10 客户虚拟机中,我注意到设备管理器中的主SCSI磁盘标记为“QEMU SCSI”磁盘,而VirtIO磁盘标记为“RedHat VirtIO SCSI”磁盘。用于 SCSI 磁盘的 VirtIO 存储控制器标记为“Red Hat VirtIO SCSI 控制器”: Windows 10 设备管理器显示磁盘和存储控制器

我很困惑为什么 SCSI 磁盘没有被标记为 VirtIO SCSI 磁盘,以及 VirtIO 磁盘(假定为 VirtIO 块)是如何成为“VirtIO SCSI”磁盘而无需连接到任何类型的 SCSI 控制器。

问:我为该虚拟机配置的磁盘有什么区别吗?

问:从 virt-manager 的角度来看,使用VirtIO和SCSI总线类型的磁盘之间有什么区别,以及它们在虚拟机中如何呈现?

问:使用不同总线类型的磁盘之间是否存在性能差异?

virtual-machine
  • 1 1 个回答
  • 28 Views

1 个回答

  • Voted
  1. Best Answer
    grawity_u1686
    2024-08-19T15:02:55+08:002024-08-19T15:02:55+08:00

    “VirtIO” 是虚拟 PCI 设备的通用框架,旨在提供比传统模拟设备更高的性能(并且更简单 - 物理硬件通常具有虚拟设备不需要的许多装饰)。

    有两种不同的 VirtIO 存储设备:

    • /dev/vd*普通的“VirtIO 块访问”设备,完全自定义,与常见物理存储设备几乎没有关系。这在 Linux 上显示为,viostor在 Windows 上使用驱动程序,并且每个 PCI 插槽限制为一个磁盘。

    • /dev/sd*完整的“VirtIO SCSI 控制器”设备,其行为类似于具有同样概念(SCSI 命令、目标、LUN)的典型 SCSI 磁盘控制器。它在 Linux 上显示为(vioscsi在 Windows 上),并且可以通过单个控制器公开多个磁盘。

    虽然两者都需要 Windows 上的自定义驱动程序(SCSI 控制器没有标准驱动程序,而 SATA AHCI 则有),但在后一种情况下,“vioscsi”客户驱动程序可以简单地将 SCSI 命令传递给虚拟机管理程序 [并且虚拟机管理程序理论上可以将它们传递给物理 SAS 磁盘],而在“VirtIO 块”的情况下,客户驱动程序必须假装是 SCSI 磁盘,以便 Windows 知道如何处理它——许多 SCSI 命令处理是在“viostor”驱动程序内部完成(模拟)的。

    我很困惑为什么 SCSI 磁盘没有被标记为 VirtIO SCSI 磁盘,以及 VirtIO 磁盘(假定为 VirtIO 块)是如何成为“VirtIO SCSI”磁盘而无需连接到任何类型的 SCSI 控制器。

    Windows 驱动程序假装是 SCSI,因为操作系统已经知道如何与 SCSI 磁盘通信,所以虽然这意味着“viostor”驱动程序需要模拟 SCSI 命令处理,但这也意味着驱动程序不需要处理各种其他细节 - 它可以让现有的操作系​​统 SCSI 支持来处理这些问题。

    问:从 virt-manager 的角度来看,使用 VirtIO 和 SCSI 总线类型的磁盘之间有什么区别,以及它们在虚拟机中如何呈现?

    两者都作为 PCI 设备连接,但是:

    • 每个 PCI 插槽始终有一个“VirtIO 块”磁盘,而 PCI 设备本身是自定义类型的存储设备。Windows“viostor”驱动程序将其伪装成 SCSI 磁盘(在驱动程序中处理 SCSI 命令),而 Linux 驱动程序将其公开为自定义/dev/vd*设备。

    • “VirtIO SCSI”磁盘可以共享一个控制器,磁盘是可通过该控制器访问的 SCSI 设备。Windows“vioscsi”驱动程序和 Linux 驱动程序都只需要初始化 SCSI 控制器,但在客户机和虚拟机管理程序(或客户机和物理磁盘)之间传递实际命令,因此标签为“SCSI 直通”。

    问:使用不同总线类型的磁盘之间是否存在性能差异?

    不应该有任何显著的性能差异;我听说理论上“VirtIO 块”可能会表现更好,但在我不需要挤出最后一点性能的情况下,我更喜欢“VirtIO SCSI”,因为它的集成更清晰。

    • 1

相关问题

  • 无法从 App Store 下载 xCode (Mojave VM Ware)

  • 来宾运行时主机 MacOS 自动更新后虚拟框 linux 来宾死机

  • vmwared 共享文件夹不工作

  • virtualbox 是否需要 CPU 来支持 VT-d 以托管 64 位客户操作系统?

  • VMware Workstation USB 仲裁服务无法自动启动

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve