QEMU/裝置/VirtIO
外觀
VirtIO 是一個 I/O 虛擬化平臺,在多個管理程式(和 QEMU)中很常見。
客戶機作業系統需要專門的驅動程式來處理這些裝置。
| 功能 | 匯流排 | 型別 | 裝置 | 使用示例 |
|---|---|---|---|---|
| 網路 | PCI | 10Gb/s | virtio-net-pci | -net nic,model=virtio ...
|
| 儲存 | PCI | SCSI | virtio-scsi-pci | -device virtio-scsi-pci -drive file=disk.img,if=none,id=hd0 -device scsi-hd,drive=hd0 ...
|
| 儲存 | PCI | 自定義 | virtio-blk | -drive file=disk.img,if=virtio ...
|
| 記憶體 | PCI | RAM | virtio-balloon-pci | |
| 序列 | PCI | 序列 | virtio-serial-pci | |
| 隨機數生成器 | PCI | RNG | virtio-rng-pci | →virtio-rng-pci |
要設定一個 VirtIO RNG,您首先需要為它提供一個熵源。
對於類 Unix 系統上核心匯出的裝置,您可以像這樣操作-object rng-random,filename=/dev/random,id=rng0
它顯然不限於核心 RNG,您也可以以完全相同的方式選擇硬體 RNG。
它還支援 EGD,但由於效能不佳,不建議使用它。
示例:-chardev socket,host=10.199.13.151,port=9000,id=chr0 -object rng-egd,chardev=chr0,id=rng0
然後,您可以新增實際裝置,如下所示:-device virtio-rng-pci,rng=rng0
還有一個選項可以限制客戶機接收的資料量,以避免主機飢餓。
示例:max-bytes=512,period=1000,表示 512 位元組/秒。
| 作業系統 | 驅動程式 |
|---|---|
| Microsoft Windows | http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers |
| 基於 Linux 的 | 2.6.x, 3.x, 4.x |
| FreeBSD | 9.x(可用)、10.x(在 GENERIC 核心中) https://www.freebsd.org/cgi/man.cgi?query=virtio&sektion=4 |
| NetBSD | 6.0+ |
| OpenBSD | 5.9+ |