为什么我的 Hyper-V 将磁盘转换为 SCSI

为什么我的 Hyper-V 将磁盘转换为 SCSI

我有一个 SATA 磁盘,并在其上安装了 Windows 10。启用 Hyper-V 后,我创建了一些虚拟机。但是,虚拟机都看到一个 SCSI 磁盘,我不知道如何更改它。即使是父分区(参见https://en.wikipedia.org/wiki/Hyper-V#Architecture)仅看到 SCSI 磁盘;我从设备管理器的“详细信息”选项卡的“硬件 ID”属性中检查了它。它说

SCSI\DiskSamsung_SSD_850_PRO_256G

尽管我的硬盘应该只在 SATA 中可用。是否可以让 Hyper-V 模拟 SATA 接口?

更多背景

我正在以客户机身份运行 Arch Linux。它显示我需要设备驱动程序wd719x;我假设它是由 Hyper-V 模拟的。结果发现它是 Western Digital 的一款非常老旧的硬盘,并且正在安装官方司机可以解决这个问题。但是,我很担心,因为 Wester Digital 不再支持 WD719x 系列(甚至驱动程序也已从网站上删除)。这似乎非常遗留,我不需要它,因为我正在创建一个新的 VM,而不是运行 10 年前创建的 VM。

答案1

我正在将 VHD 附加到虚拟机

那么你没有连接你的物理磁盘以任何方式,并且其传输完全无关紧要。虚拟机管理程序本身充当虚拟机的磁盘控制器,除了读取/写入文件之外,不与物理存储交互。(将 VHD 存储在外部 SMBv3 文件服务器上并不罕见......)

我正在运行 Arch Linux 作为客户机之一。它显示我需要设备 wd719x 的驱动程序;我假设它是由 Hyper-V 模拟的。

我猜这与虚拟机的硬件无关,无论是否模拟。当启动构建其“后备” initramfs 映像。

常规的 initramfs 适用于它被构建的确切系统;“后备”变体会跳过任何设备自动检测并加入它能找到的尽可能多的块设备驱动程序(以便相同的 initramfs 可以在许多不同的机器上启动),即使当前系统没有连接任何块设备驱动程序。

实际上,如果您在 Hyper-V 中选择了 IDE/ATA 控制器,那么您将获得一个相当标准的ata_piix(如中所示lspci -v)。

如果你使用“第二代”虚拟机,并且/或者你添加了 SCSI 控制器,那么你将通过驱动程序获得基于 VMBus 的本机 SCSI 控制器hv_storvsc(微软的机制类似于虚拟)。

即使父分区也只能看到 SCSI 磁盘;我从设备管理器的“详细信息”选项卡的“硬件 ID”属性中检查了它。它说

SCSI\DiskSamsung_SSD_850_PRO_256G

在 AHCI 模式下这似乎是正常的 - 尽管我找不到任何官方解释,至少就第一方驱动程序而言。

(据我所知:唯一的选择是IDE\,但这并不是一个好的选择——例如,它假设存在主/次 IDE 通道和主/从端口,而 SATA/AHCI 中都不存在这些通道和端口。也许 Windows 开发人员发现将 SATA 映射到 SCSI 是更轻松而不是将其映射到 IDE/PATA?

无论如何,Windows 都不是第一个这样做的操作系统——自从 2004 年左右发布 2.6 内核以来,Linux 一直将 IDE/ATA 设备呈现为 SCSI。)

只要父设备显示为 SATA AHCI 控制器(使用 storahci、msahci 或英特尔的 IRST 驱动程序),就可以了。

相关内容