KVM虛擬化:使用qemu-kvm創建和管理虛擬機

CentOS 6加載了KVM模塊後,我們是無法進行虛擬機的管理的,如果需要管理KVM虛擬機,還需要管理工具纔可以。先看一下KVM的管理工具棧。

yum grouplist |grep -i "virtualization"

    Virtualization:

        qemu-kvm

    Virtualization Client:

        python-virtinst, virt-manager, virt-viewer

    Virtualization Platform:

        libvirt, libvirt-client

    Virtualization Tools:

        libguestfs


安裝qemu-kvm:

yum -y install qemu-kvm 
ln -sv /usr/libexec/qemu-kvm /usr/bin/


qemu-kvm的使用:

命令選項:

    標準選項

    顯示選項

    塊設備選項 

    網絡選項

    i386平臺專用選項

    字符設備選項

    藍牙設備選項

    Linux啓動專用選項

    調試/專家模式選項



qemu-kvm的標準選項:

    qemu-kvm的標準選項主要涉及指定主機類型、CPU模式、NUMA、軟驅設備、光驅設備及硬件設備等。

        -name name:設定虛擬機名稱

        -M machine:指定要模擬的主機類型,如standard PC,ISA-only PC或Intel-Mac等,可以使用“qemu-kvm -M ?”獲取所支持的所有類型

        -m megs:設定虛擬機的RAM大小

        -cpu model:設定CPU模型,如coreduo、qemu64等,可以使用"qemu-kvm -cpu ?"獲取所支持的所有模型

        -smp n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus]:設定模擬的SMP架構中CPU的個數等、每個CPU的核心數及CPU的socket數目等:PC機上最多可以模擬255顆CPU:maxcpus用於指定熱插入的CPU個數上限

        -numa opts:指定模擬多節點的numa設備

        -fda file:

        -fdb file:使用指定文件(file)作爲軟盤鏡像,file爲/dev/fd0表示使用物理軟驅

        -hda file:

        -hdb file:

        -hdc file:

        -hdd file:使用指定file作爲硬盤鏡像

        -cdrom file:使用指定file作爲CD-ROM鏡像,需要注意的是-cdrom和-hdc不能同時使用:將file指定爲/dev/cdrom可以直接使用物理光驅

        -drive option[,option[,option[,...]]]:定義一個硬盤設備:可用子選項有很多。

            file=/path/to/somefile:硬盤映像文件路徑

            if=interface:指定硬盤設備所連接

            index=index:設定同一種控制器類型中不同設備的索引號,即標識號

            media=media:定義介質類型爲硬盤還是光盤

            snapshot=snapshot:指定當前硬盤設備是否支持快照功能:on或off

            cache=cache:定義如何使用物理機緩存來訪問塊數據,其可用值有none、writeback、unsafe和writethrough四個

            format=format:指定映像文件的格式,具體格式可參見qemu-img命令

        -boot [order=drives][,once=drives][,menu=on|off]:定義啓動設備的引導次序,每種設備使用一個字符表示:不同的架構所支持的設備及其表示字符不盡相同,在x86 PC架構上,a、b表示軟驅,c表示第一個光驅設備,n-p表示網絡適配器,默認爲硬盤設備。例如:-boot order=dc,once=d


qemu-kvm的顯示選項:

    顯示選項用於定義虛擬機啓動後的顯示接口相關類型及屬性等。

        -nographic:默認情況下,qemu使用SDL來顯示VGA輸出,而此選項用於禁止圖形接口,此時,qemu類似一個簡單的命令行程序,其仿真串口設備將被重定向到控制檯

        -curses:禁止圖形接口,並使用curses/ncurses作爲交互接口

        -alt-grab:使用Ctrl+Alt+Shift組合鍵釋放鼠標

        -ctrl-grab:使用右Ctrl鍵釋放鼠標

        -sdl:啓用SDL

        -spice option[,option[,...]]:啓用spice遠程桌面協議:其中有許多子選項,具體請參照qemu-kvm手冊。

        -vga type:指定要仿真的VGA接口類型,常見的類型有:

             cirrus: Cirrus Logic GD5446顯示卡

             std:帶有Bochs VBI擴展的標準VGA顯示卡

             vmware:VMware SVGA-II兼容的顯示適配器

             qxl:QXL半虛擬化顯示卡:與VGA兼容,在Guest中安裝qxl驅動後能以很好的方式工作,在使用spice協議時推薦使用此類型

             none:禁用VGA卡

        -vnc display[,option[,option[,...]]]:默認情況下,qemu使用SDL顯示VGA輸出;使用-vnc選項,可以讓qemu監聽在vnc上,並將VGA輸出重定向至vnc會話,使用此選項時,必須使用-k選項指定鍵盤佈局類型;其中有許多子選項,具體請參考qemu-kvm的手冊

             display:

                 1) host:N

                    172.16.100.7:1,監聽於172.16.100.7主的5900+N的端口上

                 2) unix:/path/to/socket_file

                 3) none

             options:

                 password:連接時需要驗證密碼,設定密碼通過monitor接口使用change            

                 reverse:“反向”連接至某處於監聽狀態的vncview上

        -monitor stdio:表示在標準輸入輸出上電視monitor界面

        -nographic

             Ctrl-a,c:在console和monitor之間切換

             Ctrl-a,h:顯示幫助信息


網絡屬性相關選項

    網絡屬性相關選項用於定義網絡設備接口類型及其相關的各屬性等信息。這裏只介紹nic、tap和user三種類型網絡接口的屬性,其他類型請參考qemu-kvm手冊。

    -net nic[,vlan=n][,macaddr=mac][,model=type][,name=name][,addr=addr][,vectors=v]:創建一個新的網卡設備並連接至vlan n中:PC架構上默認的NIC爲e1000,macaddr用於爲其制定mac地址,name用於指定一個在監控時顯示的網上設備名稱;qemu可以模擬多個類型的網卡設備,如virtio、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等;不過,不同平臺架構上,其支持的類型可能只包含前述列表中的一部分,可以使用"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網絡中的第3個地址,即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=/pexlinux.0


i386平臺專用選項

    -no-acpi:禁用ACPI功能,GuestOS與ACPI出現兼容問題時使用此選項

    -ballcon none:禁用balloon設備

    -balloon virtio[,addr=addr]:啓用virtio balloon設備


創建第一臺虛擬機:

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-i386-disk.img   #下載cirros鏡像
qemu-kvm -m 256 -name tst -smp 2 -hda cirros-0.3.4-i386-disk.img         #使用qemu-kvm啓動虛擬機

003.png

yum -y install tigervnc     #安裝vnc
vncviewer :5900             #使用vncviewer遠程到虛擬機

004.png

005.png

其實,上面創建虛擬機的命令等同於下面的命令:

qemu-kvm -m 128 -name test -smp 2 -drive file=/images/kvm/cirros-0.3.4-i386-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2

只不過,這裏使用-drive 指定了磁盤映像文件,

006.png

007.png


使用qemu-kvm創建Linux虛擬機:

qemu-img create -f qcow2 -o size=10G /images/kvm/centos5.img
qemu-img info /images/kvm/centos5.img
qemu-kvm -name "centos5.5" -m 512 -smp 2 -boot d -drive file=/images/kvm/centos5.img,if=virtio,index=0,media=disk,format=qcow2 -drive file=/opt/CentOS-5.5-i386-bin-DVD.iso,index=1,media=cdrom -net nic,model=virtio,macaddr=52:54:00:A6:71:83 -vga cirrus

008.png

虛擬機創建後,使用vncviewer進行連接

009.png

出現系統安裝界面,安裝系統過程略。

010.png

系統安裝完,出現重新引導界面,不過重新引導,虛擬機依然無法進入centos系統。這是因爲qemu-kvm創建虛擬機時,已經配置了2個驅動設備,一個是硬盤設備,一個是光驅設備,而只有移除光驅設備,系統才能使用磁盤設備啓動。

qemu-kvm -name "centos5.5" -m 512 -smp 2 -boot d -drive file=/images/kvm/centos5.img,if=virtio,index=0,media=disk,format=qcow2  -net nic,model=virtio,macaddr=52:54:00:A6:71:83 -vga cirrus

0101.png

再次使用vncviewer連接,看到如下畫面,

011.png

這樣,虛擬機開機後就進入centos系統,而不是系統安裝界面,

012.png

成功進入之前安裝好的系統,注意這裏的MAC地址剛好是我們設置過的。

不過,雖然系統安裝好了,但是虛擬機無法獲取ip地址,這樣看起來總覺得不是很妥當,所以這裏就嘗試添加網絡。

首先,在宿主機上執行如下命令:

yum -y install bridge-utils
brctl addbr br0
brctl addif br0 eth0
ifconfig eth0 0.0.0.0
ifconfig br0 192.168.49.10 netmask 255.255.255.0
brctl show
[root@kvm-node1 ~]# brctl show
bridge namebridge idSTP enabledinterfaces
br08000.000c2981bdbeyesbr0.0
eth0

然後,使用qemu-kvm創建虛擬機,

qemu-kvm -name "centos5.5" -m 512 -smp 2 -boot d -drive file=/images/kvm/centos5.img,if=virtio,index=0,media=disk,format=qcow2 -net nic -net tap,ifname=br0.0,script=no -vga cirrus

013.png

待虛擬機啓動後,我們在宿主機上使用ifconfig命令可以看到名爲br0.0的網卡,

014.png

手工將br0.0加入到br0網橋中去,並給它指定ip地址,

brctl addif br0 br0.0
ifconfig br0.0 192.168.49.100 netmask 255.255.255.0 up

015.png

最後,使用vncviewer連接虛擬機,

016.png

此時,從宿主機訪問kvm創建的名爲centos5.5的虛擬機,

017.png

使用ssh的方式,也可以成功連接。


使用qemu-kvm創建windows虛擬機:

qemu-img create -f qcow2 -o size=20G /images/kvm/winxp.img
qemu-img info /images/kvm/winxp.img
qemu-kvm -name winxp -smp 2,socket=1,cores=2,threads=1 -m 512 -drive file=/images/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/opt/DBX_GHOST_XP_SP3_CJ_V3.5.iso,media=cdrom

018.png

使用vncviewer連接,

019.png

安裝過程省略

020.png

安裝完畢後,如果要使用鏡像文件進入windows系統,最好關閉虛擬機,然後使用如下命令重新創建:

 qemu-kvm -name winxp -smp 2,socket=1,cores=2,threads=1 -m 512 -drive file=/images/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章