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,并获得更多可用功能(如内存热插拔、随机数加速等)。