Libvirt/QEMU直通真实硬盘后Windows 11虚拟机硬盘信息显示异常的解决咨询
Libvirt/QEMU直通真实硬盘后Windows 11虚拟机硬盘信息显示异常的解决咨询
兄弟,我之前在给Win11虚拟机直通SSD的时候,也碰到过一模一样的糟心问题——明明是SATA SSD,任务管理器偏显示成「QEMU HARDDISK」,还识别成普通HDD,连厂商型号都不对。折腾了好几天,终于把所有真实硬件信息都正确传递过去了,给你一步步说:
第一步:先在宿主机上收集真实硬盘的所有信息
首先得把你那块SSD的真实参数摸清楚,在宿主机终端里跑这几个命令:
- 查厂商、型号、序列号:
lsblk -o NAME,VENDOR,MODEL,SERIAL(找到对应硬盘的行,比如/dev/sdX) - 查硬盘UUID:
blkid /dev/sdX(注意这里的UUID是硬盘本身的,不是VM配置里的UUID) - 也可以用
hdparm -i /dev/sdX获取更详细的硬件信息
把这些信息记下来,后面要用到。
第二步:修改Libvirt虚拟机的XML配置
先关闭你的Win11虚拟机,然后用virsh edit <你的虚拟机名称>打开配置文件,找到磁盘对应的<disk>节点,默认可能是这样的:
<disk type='block' device='disk'> <source dev='/dev/sdX'/> <target dev='vda' bus='virtio'/> </disk>
我们要把它改成能传递真实硬件信息的配置:
<disk type='block' device='disk'> <source dev='/dev/sdX'/> <!-- 把总线从virtio改成sata,更贴近真实硬件,方便传递原生信息 --> <target dev='sda' bus='sata'/> <!-- 配置驱动模式,确保直接访问物理磁盘,开启TRIM支持 --> <driver name='qemu' type='raw' cache='none' io='native' discard='unmap'/> <!-- 填入你刚才查到的真实信息 --> <serial>你的硬盘序列号</serial> <vendor>你的硬盘厂商(比如Samsung、Intel)</vendor> <product>你的硬盘型号(比如SSD 870 EVO)</product> </disk>
保存退出后,启动虚拟机。
第三步:在Windows虚拟机里调整驱动和硬件扫描
- 进入Win11后,先打开设备管理器,找到「磁盘驱动器」,右键卸载当前的「QEMU HARDDISK」设备,然后点击顶部的「操作」→「扫描检测硬件改动」。
- 安装对应硬盘厂商的官方驱动(比如三星的Magician工具带的驱动,Intel的SSD Toolbox驱动),不要用Windows默认的通用驱动——厂商驱动能更好识别SSD的特性。
- 重启虚拟机,再打开任务管理器看看,应该就能显示真实的厂商、型号,并且识别为SSD了。
关于UUID的验证
要确认Windows里显示的是硬盘真实UUID,可以打开命令提示符,输入diskpart,然后依次执行:
list disk(找到你的SSD对应的磁盘编号)select disk X(X是磁盘编号)detail disk
在输出里找「磁盘ID」或者「UUID」,对比你在宿主机上查到的信息,应该就能对应上了。
备注:内容来源于stack exchange,提问作者Twiston




