學習 KVM 的系列文章: html
過程:
|
注意:當客戶機經過DMA (Direct Memory Access)訪問大塊I/O時,QEMU 模擬程序將不會把結果放進共享頁中,而是經過內存映射的方式將結果直接寫到客戶機的內存中共,而後通知KVM模塊告訴客戶機DMA操做已經完成。前端
Qemu 純軟件的方式來模擬I/O設備,其中包括常用的網卡設備。Guest OS啓動命令中沒有傳入的網絡配置時,QEMU默認分配 rtl8139 類型的虛擬網卡類型,使用的是默認用戶配置模式,這時候因爲沒有具體的網絡模式的配置,Guest的網絡功能是有限的。 全虛擬化狀況下,KVM虛機能夠選擇的網絡模式包括:linux
分別使用的 qemu-kvm 參數爲:web
網橋模式是目前比較簡單,也是用的比較多的模式,下圖是網橋模式下的 VM的收發包的流程。編程
如圖中所示,紅色箭頭表示數據報文的入方向,步驟:後端
(引用自 http://luoye.me/2014/07/17/netdev-virtual-1/)centos
注意:RedHat Linux KVM 不支持 SCSI 模擬。服務器
類型 | 選項 |
磁盤設備(軟盤、硬盤、CDROM等) | -drive option[,option[,option[,...]]]:定義一個硬盤設備;可用子選項有不少。 file=/path/to/somefile:硬件映像文件路徑; if=interface:指定硬盤設備所鏈接的接口類型,即控制器類型,如ide、scsi、sd、mtd、floppy、pflash及virtio等; index=index:設定同一種控制器類型中不一樣設備的索引號,即標識號; media=media:定義介質類型爲硬盤(disk)仍是光盤(cdrom); format=format:指定映像文件的格式,具體格式可參見qemu-img命令; -boot [order=drives][,once=drives][,menu=on|off]:定義啓動設備的引導次序,每種設備使用一個字符表示; |
網絡 |
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:建立一個新的網卡設備並鏈接至vlan n中;
PC架構上默認的NIC爲e1000,macaddr用於爲其指定MAC地址,name用於指定一個在監控時顯示的網上設備名稱;emu能夠模擬多個類型的網卡設備;
可使用「qemu-kvm -net nic,model=?」來獲取當前平臺支持的類型;
-net tap[,vlan=n][,name=name][,fd=h][,ifname=name][,script=file][,downscript=dfile]:
經過物理機的TAP網絡接口鏈接至vlan n中,使用script=file指定的腳本(默認爲/etc/qemu-ifup)來配置當前網絡接口,
並使用downscript=file指定的腳本(默認爲/etc/qemu-ifdown)來撤消接口配置;使用script=no和downscript=no可分別用來禁止執行腳本;
-net user[,option][,option][,...]:在用戶模式配置網絡棧,其不依賴於管理權限;有效選項有:
vlan=n:鏈接至vlan n,默認n=0;
name=name:指定接口的顯示名稱,經常使用於監控模式中;
net=addr[/mask]:設定GuestOS可見的IP網絡,掩碼可選,默認爲10.0.2.0/8;
host=addr:指定GuestOS中看到的物理機的IP地址,默認爲指定網絡中的第二個,即x.x.x.2;
dhcpstart=addr:指定DHCP服務地址池中16個地址的起始IP,默認爲第16個至第31個,即x.x.x.16-x.x.x.31;
dns=addr:指定GuestOS可見的dns服務器地址;默認爲GuestOS網絡中的第三個地址,即x.x.x.3;
tftp=dir:激活內置的tftp服務器,並使用指定的dir做爲tftp服務器的默認根目錄;
bootfile=file:BOOTP文件名稱,用於實現網絡引導GuestOS;
如:qemu -hda linux.img -boot n -net user,tftp=/tftpserver/pub,bootfile=/pxelinux.0
|
(1)virtio-net 的原理:網絡
vhost-net 的要求:架構
qemu-kvm 命令的 -net tap 有幾個選項和 vhost-net 相關的: -net tap,[,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
另外一個比較特殊的 virtio 設備是 virtio-balloon。一般來講,要改變客戶機所佔用的宿主機內存,要先關閉客戶機,修改啓動時的內存配置,而後重啓客戶機才能夠實現。而 內存的 ballooning (氣球)技術能夠在客戶機運行時動態地調整它所佔用的宿主機內存資源,而不須要關閉客戶機。該技術可以:
優點 | 不足 |
|
|
在QEMU monitor中,提供了兩個命令查看和設置客戶機內存的大小。