歡迎您光臨本站 註冊首頁

KVM/Qemu基礎文檔

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

KVM/Qemu基礎文檔

KVM/Qemu基礎文檔


KVM安裝RHEL/Fedora/CentOSyum install bridge-utils kvm
bridge-utils是網卡橋接工具,
示例1:Redhat系統KVM創建磁碟# qemu-img create -f qcow2 turbo-10.5.5-rc2.img 20G
Formatting 'turbo-10.5.5-rc2.img', fmt=qcow2, size=20971520 kB
# file turbo-10.5.5-rc2.img
turbo-10.5.5-rc2.img: QEMU Copy-On-Write disk image version 2, size 5 + 0
配置橋接配置 /etc/sysconfig/network-scripts 下面的網路腳本
# cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.70.30
NETMASK=255.255.252.0
GATEWAY=172.16.68.1
TYPE=Bridge
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 3Com Corporation 3c905B 100BaseTX
DEVICE=eth0
#BOOTPROTO=dhcp
#HWADDR=00:01:02:8C:50:09
ONBOOT=yes
BRIDGE=br0
增加一個橋接網路介面,並把剛才配置的eth0添加到橋介面
brctl addbr br0      # 創建一個橋介面
brctl addif br0 eth0 # 添加eth0到br0,重要
使用一個下面的腳本:
# cat /etc/init.d/qemu-ifup
#!/bin/bash

switch=br0

if [ -n "$1" ];then
        /sbin/ip link set $1 up
        sleep 0.5s
        /usr/sbin/brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi
使用橋接網卡可以使用橋接網卡啟動qemu-kvm,並使用GTES10.5.5的兩個文件通過NFS安裝系統:
# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -kernel vmlinuz \
-initrd initrd.img -net nic -net tap,script=/etc/init.d/qemu-ifup --daemonize
也可以使用iso安裝,這樣對於多張iso發行版的linux需要在qemu的控制台換盤:
# qemu-kvm -m 512 -hda turbo-10.5.5-rc2.img -cdrom 你的iso路徑 \
-net nic -net tap,script=/etc/init.d/qemu-ifup -boot d --daemonize
進入qemu的控制台,在滑鼠聚焦到qemu界面時候,按住 Ctrl+Alt+2 進入控制台:
(qemu) change cdrom 你的另外一張iso
上面命令如果提示:"device not found"。可能是設備映射出錯,可以這樣:
(qemu) info block
...
(qemu) change ide1-cd0 iso文件
QEMU常見使用使用vnc# qemu-kvm -m 512 -hda xp.img -net nic,macaddr=00:00:11:33:02:02 \
         -net tap,ifname=tap2,script=/etc/init.d/qemu-ifup \
         -localtime -vnc 172.16.70.30:2 --daemonize
上面讓kvm虛擬機在後台運行,並啟動vnc伺服器,這樣我們可以用vnc客戶端鏈接172.16.70.30:5092這個地址。
QEMU選項:一般選項-M machine選擇模擬的機器(我們可以輸入-M?提到一個模擬的機器列表)-fda file
-fdb file使用file作為軟盤鏡像.我們也可以通過將/dev/fd0作為文件名來使用主機軟盤.-hda file
-hdb file
-hdc file
-hdd file使用file作為硬碟0,1,2,3的鏡像.-cdrom file使用文件作為CD-ROM鏡像(但是我們不可以同時使用'-hdc'和'-cdrom').我們可以通過使用'/dev/cdrom'作為文件名來使用主機的CD-ROM.-boot 由軟盤(a),硬碟(c)或是CD-ROM(d).在默認的情況下由硬碟啟動.-snapshot寫入臨時文件而不是寫入磁碟鏡像文件.在這樣的情況下,並沒有寫回我們所使用的磁碟鏡像文件.然而我們卻可以通過按下C-a s來強制寫回磁碟鏡像文件.-m megs設置虛擬內存尺寸為megs M位元組.在默認的情況下為128M.-smp n模擬一個有n個CPU的SMP系統.為PC機為目標,最多可以支持255個CPU.-nographic在通常情況下,Qemu使用SDL來顯示VGA輸出.使用這個選項,我們可以禁止所有的圖形輸出,這樣Qemu只是一個簡單的命令行程序.模擬的串口將會重定向到命令行.所以,我們仍然可以在Qemu平台上使用串口命令來調試Linux內核.-k language使用鍵盤布局語言(例如fr為法語).這個選項只有在不易得到PC鍵盤的情況下使用.我們在PC/Linux或是PC/Windows主機不需要使用這個選項.默認的為en-us,可用的布局如下:ar  de-ch  es  fo    fr-ca  hu  ja  mk    no  pt-br  sv
da  en-gb  et  fr    fr-ch  is  lt  nl    pl  ru     th
de  en-us  fi  fr-be  hr    it  lv  nl-be  pt  sl    tr
-audio-help這個選項將會顯示聲音子系統的幫助:驅動列表以及可調用的參數.-soundhw card1,card2 ....  or -soundhw all允許聲音並選擇聲音硬體.使用?可以列出所有可用的聲音硬體qemu -soundhw sb16,adlib hda
qemu -soundhw es1370 hda
qemu -soundhw all hda
qemu -soundhw ?
-localtime設置時鐘為本地時間(默認為UTC時間).如果在MS-DOS或是Windows上這個選項則需要正確的日期.-full-screen以全屏方式啟動.-pidfile file在file文件中存許Qemu的進程PID.如果我們是由腳本啟動的,這個選項是相當有用的.-win2k-hack當安裝Windows 2000時可以使用這個選項來避免磁碟錯誤.在安裝上Windows 2000系統,我們就不再需要這個選項(這個選項降低IDE的傳輸速度).USB選項-usb允許USB驅動(很快就將成為默認的選項)-usbdevice devname添加USB設備名.我們可以查看監視器命令usb_add來得到更為詳細的信息.網路選項-net nic[,vlan=n][,macaddr=addr]創建一個新的網卡並與VLAN n(在默認的情況下n=0)進行連接.在PC機上,NIC當前為NE2000.作為可選項的項目,MAC地址可以進行改變.如果沒有指定-net選項,則會創建一個單一的NIC.-net user[,vlan=n]使用用戶模式網路堆棧,這樣就不需要管理員許可權來運行.如果沒有指定-net選項,這將是默認的情況.-net tap[,vlan=n][,fd=h][,ifname=name][,script=file]將TAP網路介面name與VLAN n進行連接,並使用網路配置腳本file進行配置.默認的網路配置腳本為/etc/qemu-ifup.如果沒有指定name,OS將會自動指定一個.fd=h可以用來指定一個已經打開的TAP主機介面的句柄.例如:qemu linux.img -net nic -net tap

下面的是一個更為複雜的例子(兩個NIC,每一個連接到一個TAP設備):

qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
              -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
-net socket[,vlan=n][,fd=h][,listen=:port][,connect=host:port]使用TCP socket 將VLAN n與遠程的另一個Qemu虛擬機的VLAN進行連接.如果指定了listen,Qemu將在port埠監聽連入請求(host是可選的), connect可以用來使用listen選項與另一個Qemu實例進行連接.fd=h指定了一個已經打開的TCP socket.例如:# launch a first QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,connect=127.0.0.1:1234
-net socket[,vlan=n][,fd=h][,mcast=maddr:port]創建一個VLAN n,並使用UDP 多址通信套掊口與其他的QEMU虛擬機進行共享,尤其是對於每一個使用多址通信地址和埠的QEMU使用同一個匯流排. 在這裡我們要注意以下幾點:
•幾個QEMU可以運行在不同的主機上但卻使用同一個匯流排(在這裡假設為這些主機設置了正確的多址通信)
•mcast支持是與用戶模式Linux相兼容的.
•使用fd=h指定一個已經打開的UDP 多址通信套介面.例如:
# launch one QEMU instance
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=230.0.0.1:1234
# launch another QEMU instance on same "bus"
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net
socket,mcast=230.0.0.1:1234
# launch yet another QEMU instance on same "bus"
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net
socket,mcast=230.0.0.1:1234
下面的為用戶模式Linux的例子:
# launch QEMU instance (note mcast address selected is UML's default)
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net
socket,mcast=239.192.168.1:1102
# launch UML
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
-net none表明沒有網路設備需要進行配置.如果沒有指定-net選項,則會用來覆蓋活躍的默認配置.-tftp prefix當使用用戶模式網路堆棧,激活一個內置的TFTP伺服器.所有的以prefix開始的文件將會使用一個TFTP客戶端從主機下載到本地.在本地的TFTP客戶端必須以二進位模式進行配置(使用Unix的TFTP客戶端的bin命令).在客戶機上的主機IP地址如通常的10.0.2.2.-smb dir
-redir :host-port::guest-port當使用用戶模式網格棧,將連接到主機埠host-port的TCP或是UDP連接重定向到客戶機埠guest-port上。如果沒有指定客戶機埠,他的值為10.0.2.15(由內建的DHCP伺服器指定默認地址)。例如:要重定向從screen 1到客戶機screen 0的X11連接,我們可以使用下面的方法:# on the host
qemu -redir tcp:6001::6000 [...]
# this host xterm should open in the guest X11 server
xterm -display :1
To redirect telnet connections from host port 5555 to telnet port on
the guest, use the following:

# on the host
qemu -redir tcp:5555::23 [...]
telnet localhost 5555

然後當我們在主機telnet localhost 5555上使用時,我們連接到了客戶機的telnet伺服器上。

Linux啟動選項
當我們使用這些選項時,我們可以使用一個指定的內核,而沒有將他安裝在磁碟鏡像中。這對於簡單的測試各種內核是相當有用的。

`-kernel bzImage'使用bzImage作為內核映像。`-append cmdline'使用cmdline作為內核的命令行。`-initrd file'使用file作為初始的ram磁碟。調試選項`-serial dev'重定向虛擬串到主機的設備dev。可用的設備如下:vc虛擬終端pty(Linux)偽TTY(自動分配一個新的TTY)null空設備/dev/XXX"(Linux)使用主機的tty。例如,'/dev/ttyS0'。主機的串口參數通過模擬進行設置。/dev/parportN(Linux)使用主機的並口N。當前只可以使用SPP的並口特徵。file:filename將輸出寫入到文件filename中。沒有字元可讀。stdio(Unix)標準輸入/輸出pipe:filename(Unix)有名管道filename
在圖形模式下的默認設備為vc,而在非圖形模式下為stdio.這個選項可以被多次使用,最多可以模擬4個串口。

'-parallel dev'重定向虛擬並口到主機的設備dev(與串口相同的設備)。在Linux主機上,`/dev/parportN'可以被用來使用與相應的並口相連的硬體設備。這個選項可以使用多次,最多可以模擬3個並口。
`-monitor dev'重定向臨視器到主機的設備dev(與串口相同的設備)。在圖形模式下的默認設備為vc,而在非圖形模式下為stdio。
'-s'等待gdb連接到埠1234.`-p port'改變gdb連接埠。`-S'在啟動時並不啟動CPU(我們必須在監視器中輸入'c')'-d'輸出日誌到/tmp/qemu.log`-hdachs c,h,s,[,t]'強制硬碟0的物理參數(1 <= c <= 16383, 1 <= h <= 16, 1 <= s<=63),並且可以選擇強制BIOS的轉換模式(t=none, lba or auto).通常QEMU可以檢測這些參數.這個選項對於老的MS-DOS磁碟映像是相當有用的.`-std-vga'模擬一個Bochs VBE擴展的標準VGA顯卡(默認情況下為Cirrus LogicGD5446 PCI VGA)`-loadvm file'從一個保存狀態啟動.組合鍵在圖形模擬時,我們可以使用下面的這些組合鍵:
Ctrl-Alt-f全屏Ctrl-Alt-n切換虛擬終端'n'.標準的終端映射如下:
•n=1 : 目標系統顯示
•n=2 : 臨視器
•n=3 : 串口Ctrl-Alt抓取滑鼠和鍵盤在虛擬控制台中,我們可以使用Ctrl-Up, Ctrl-Down, Ctrl-PageUp和 Ctrl-PageDown在屏幕中進行移動.
在模擬時,如果我們使用`-nographic'選項,我們可以使用Ctrl-a h來得到終端命令:
Ctrl-a h列印幫助信息Ctrl-a x退出模擬Ctrl-a s將磁碟信息保存入文件(如果為-snapshot)Ctrl-a b發出中斷Ctrl-a c在控制台與監視器進行切換Ctrl-a Ctrl-a發送Ctrl-a磁碟映像從0.6.1起,QEMU支持多種磁碟映像格式,包括增長的磁碟映像,壓縮與加密的磁碟映像.
我們可以用下面的命令來創建一個磁碟映像:
qemu-img create myimage.img mysize
這裡myimage.img是磁碟映像的文件名,而mysize是以K表示的尺寸.我們可以使用M前綴來使用M表示尺寸或是G作為前綴使用G表示尺寸.
qemu-img選項
可以支持下面的一些命令:
`create [-e] [-b base_image] [-f fmt] filename '
`commit [-f fmt] filename'
`convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename'
`info [-f fmt] filename
命令參數
filename磁碟映像文件名.base_image只讀的磁碟映像,可以作為拷貝到寫映像的基礎.寫映像上的拷貝只存儲修改的數據.fmt磁碟映像格式.在大多數情況下可以自動檢測.可以支持下面的格式:
•rawraw 磁碟格式(默認).這種格式有簡單並且易於移植到其他模擬器的優點.如果我們的文件系統支持holes(例如在Linux上的ext2或是ext3),然後只有寫入的部分保持空白.使用qemu-img info來得到映像使用的實際的大小或是在Unix/Linux上使用 ls -ls.
•qcowQEMU映像格式.最通用的格式.使用他可以獲得較小的映像(如果我們的文件系統不支持holes,例如在Windows上,這是相當有用的),可以選用AES加密或是基於zlib的壓縮.
•cow在寫映像格式上的用戶模式的Linux拷貝.在QEMU中作為增長的映像格式使用.這個選項只是為了與以前版本的兼容,並不能在Win32上使用.
•vmdkVMware 3 或是 4 兼容的映像格式.
•cloopLinux壓縮的循環映像,重用直接壓縮的CD-ROM映像.
•size以K表示的磁碟映像的尺寸.同時可以支持M或是G作為前綴.
•output_filename目的磁碟映像文件名
•output_fmt目標格式
•-c表明目標映像必須是壓縮的(只是qcow格式)
•-e表明目標映像必須是加密的(只是qcow格式)

[火星人 ] KVM/Qemu基礎文檔已經有825次圍觀

http://coctec.com/docs/service/show-post-5079.html