当前位置: 首页 > news >正文

virt-io 如何运行在 kvm windows 虚拟机上

下面给出一个更为详尽的步骤,帮助你在 KVM 环境下安装 Windows 虚拟机并使用 VirtIO 驱动,从而获得更高的磁盘与网络性能。

---

## 一、准备工作

1. **安装 KVM、libvirt 及相关工具**  
   在 Linux 主机上安装所需的软件包:
   ```bash
   # Ubuntu / Debian
   sudo apt-get update
   sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients virt-manager
   
   # RHEL / CentOS / Fedora
   sudo yum install qemu-kvm libvirt libvirt-client virt-install virt-manager
   ```
   - 确保 `libvirtd` 服务已经启动且将当前用户加入 `libvirt` 组或 `libvirt-qemu` 组。  
   - 使用 `virt-manager`(图形化界面)或 `virt-install`(命令行)都可以管理虚拟机。

2. **下载并准备 Windows 安装镜像和 VirtIO 驱动镜像**  
   - Windows 安装 ISO:从微软官网下载相应版本的 Windows(例如 Windows 10/11、Windows Server 等)。  
   - VirtIO 驱动 ISO:从 [Fedora Project 提供的 virtio-win ISO](https://fedorapeople.org/groups/virt/virtio-win/) 或 [GitHub 仓库 virtio-win](https://github.com/virtio-win/virtio-win-pkg-scripts) 下载。  
   - Windows 安装过程中无法识别 VirtIO 驱动,需要在“选择磁盘”界面通过 VirtIO 驱动 ISO 去加载相应驱动文件。

---

## 二、使用 virt-manager(图形化)安装 Windows + VirtIO 驱动

以下是使用 virt-manager 的一个较详细流程:

1. **启用 virt-manager 并新建虚拟机**  
   - 打开 virt-manager → “File” → “New Virtual Machine”。

2. **选择本地介质(Local install media)并定位安装镜像**  
   - 选择 Windows 安装的 ISO 文件。
   - 如果 virt-manager 未能自动识别操作系统,在下拉列表手动选择 Windows 版本。

3. **分配 CPU、内存**  
   - 根据需要设置 vCPUs 数量和内存大小,如 2 vCPUs / 4GB RAM。

4. **创建虚拟磁盘并选择 VirtIO 总线**  
   - 在“存储”界面,先点击“高级选项(Advanced options)”或“自定义配置”。
   - 将“磁盘总线”从默认的 SATA/IDE 改为 “VirtIO”。这是关键一步,否则 Windows 安装阶段可能无法识别磁盘。

5. **添加 VirtIO 驱动 ISO 作为第二个光驱**  
   - 在“概览”或“CD/DVD”设备设置界面,再添加一个虚拟光驱,关联到 virtio-win ISO 文件。  
   - 这样当安装 Windows 时,可以从 virtio-win ISO 加载驱动。

6. **配置网络并选择 VirtIO 网卡**  
   - 在“网络设备”设置中,将“设备模型”选为 “virtio”。  
   - 这有助于 Windows 在安装后使用 VirtIO 网卡驱动,增强网络性能。

7. **开始安装并加载 VirtIO 驱动**  
   - 启动虚拟机进入 Windows 安装程序,进行常规“安装语言、键盘布局”等操作。  
   - 到“选择磁盘”界面,如果看不到磁盘,点击“加载驱动(Load drivers)”或“驱动程序”按钮。  
   - 浏览至 virtio-win ISO,进入对应 Windows 版本(amd64 或 x86)的文件夹,加载 `viostor.inf`(磁盘驱动)等必要文件。  
   - 加载成功后,即可看到磁盘并继续安装 Windows。

8. **完成 Windows 安装并安装其它驱动**  
   - 安装完成进入 Windows 系统后,打开“设备管理器(Device Manager)”。  
   - 对于未识别的设备(如网卡、Balloon、RNG 等),右键 → “更新驱动”,指向 virtio-win ISO 中相应文件夹完成安装。  
   - 至此,Windows 虚拟机就可以使用 VirtIO 进行高效读写和网络通信。

---

## 三、使用 virt-install(命令行)安装 Windows + VirtIO 驱动

如果更喜欢命令行方式,可以使用 `virt-install`:

1. **准备镜像**  
   - 假设 Windows 安装镜像路径为 `/root/iso/Win10.iso`,  
   - VirtIO 驱动镜像路径为 `/root/iso/virtio-win.iso`。  
   - 准备一个虚拟磁盘存放 Windows 系统,如 `/var/lib/libvirt/images/win10.qcow2`。

2. **执行 virt-install 命令**  
   ```bash
   virt-install \
     --name win10 \
     --ram 4096 \
     --vcpus 2 \
     --os-type windows \
     --os-variant win10 \
     --cdrom /root/iso/Win10.iso \
     --disk path=/var/lib/libvirt/images/win10.qcow2,format=qcow2,bus=virtio,size=60 \
     --disk path=/root/iso/virtio-win.iso,device=cdrom \
     --network network=default,model=virtio \
     --graphics spice
   ```
   - `--disk ...bus=virtio` 指定硬盘使用 VirtIO。  
   - `--disk ...device=cdrom` 指定第二张光驱镜像为 virtio-win.iso。  
   - `--network ...model=virtio` 设置网卡为 VirtIO。

3. **安装完成后同样的驱动加载**  
   - 进入 Windows 安装程序 → 到“选择磁盘”界面 → 点击“加载驱动”,浏览 virtio-win ISO → 选择 `viostor.inf` 等。  
   - 后期如需更新其他设备驱动(Balloon、NetKVM 等),同样在设备管理器中载入。

---

## 四、安装后的驱动修复与优化

1. **更新未识别设备**  
   - 打开 Windows“设备管理器”,右键点击带感叹号的设备 → “更新驱动程序”,从 virtio-win ISO 相应目录中加载。

2. **安装 Balloon 驱动**  
   - Balloon 驱动有助于在宿主机和虚拟机之间动态调整内存使用。  
   - 在 virtio-win ISO 中查找 `balloon.inf`(或相似名称)进行安装。

3. **安装 RNG 驱动**  
   - 让虚拟机可使用宿主机的随机数生成器,以提高加密和安全操作性能。

4. **性能测试(可选)**  
   - 安装好所有驱动后,可用工具(CrystalDiskMark、iperf 等)测试磁盘和网络性能,以检验 VirtIO 提升效果。

---

## 五、注意事项

1. **Windows 安装版本兼容**  
   - 不同 Windows 版本需要选择合适的 virtio-win 驱动文件夹(如 `w10`、`win8`、`2k19` 等)。  
   - 若安装后发现某些组件无法正常识别或性能不佳,可尝试更新到对应最新的驱动。

2. **BIOS/UEFI 选项**  
   - 一些时候可使用 UEFI 方式安装 Windows(即 OVMF 方案),需在 virt-manager 或 `virt-install` 中设置固件类型为 UEFI。  
   - 这不影响 VirtIO 安装,但需要主机及虚拟机固件兼容。

3. **热插拔**  
   - 指定了 VirtIO 磁盘或网络后,不少场景支持在线热插拔硬件,但对于 Windows 虚拟机来说,操作系统是否支持则视版本与驱动而定。

---

### 总结

要在 KVM 上安装 Windows 并使用 VirtIO 驱动,核心就是:
1. 准备 virtio-win 驱动镜像。  
2. 在创建虚拟机时将磁盘和网络接口选为 VirtIO。  
3. Windows 安装时加载相应驱动。  
4. 进入系统后再安装(或更新)其他 VirtIO 组件驱动。  

这样就能充分利用 KVM 提供的高性能 I/O,并获得更多可用功能(如内存热插拔、随机数加速等)。
 

相关文章:

  • rust学习三、基本类型
  • Spring框架基本使用(Maven详解)
  • 【二分搜索 C/C++】洛谷 P1873 EKO / 砍树
  • SAM C++ TensorRT(实时图像分割)
  • 【有啥问啥】DeepSeek 技术原理详解
  • vue取消全选功能按钮注意事项
  • java机器学习计算指标动态阈值
  • Jackson使用
  • 点击unity资源文件自动展开左侧的文件路径
  • StableDiffusion学习笔记——4、模型下载和学习
  • 算法系列之搜索算法-广度优先搜索BFS
  • 提示工程(Prompt Engineering)的进阶策略与实践指南
  • 关于uniApp的面试题及其答案解析
  • 【Python】yield函数
  • 遥感与GIS在滑坡、泥石流风险普查中的实践技术应用
  • 【Linux AnolisOS】配置Linux固定ip地址。然后在Windows上连接使用linux中docker容器里的redis和nacos。
  • acm培训 part 7
  • 写轮眼按钮特效:打造炫酷网页按钮
  • 【期末复习】微信小程序复习大纲
  • React useState 和 useEffect 使用坑点注意总结
  • 西湖大学2025年上海市综合评价招生简章发布
  • 讲武谈兵|朝鲜“崔贤”号驱逐舰下水,朝版“宙斯盾”战力如何?
  • 购车补贴、“谷子”消费、特色产品,这些活动亮相五五购物节
  • 家政阿姨如何炼成全国劳模?做饭、收纳、养老、外语样样都会
  • 伊朗外长:伊美第四轮间接谈判将于5月3日举行
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题