中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

虛擬化四、KVM虛擬化技術

發布時間:2020-08-08 02:03:04 來源:ITPUB博客 閱讀:182 作者:kflj88 欄目:云計算

一、KVM概述

1、KVM

     Kernel-based Virtual Machine 基于內核的虛擬機

     以色列Qumranet公司研發,是內核的一個模塊

     2006年研發,2008被RedHat收購了

     依賴于HVM技術:Intel VT-X,AMD AMD-V

2、KVM模塊載入后的系統運行模式

內核模式:GuestOS執行I/O類操作,或其它的特殊指令的操作  

用戶模式:代表GuestOS代為請求I/O類操作,

來賓(guest)模式:GuestOS的非I/O類操作,事實上,它被稱作虛擬機的用戶模式

3、KVM的組件

兩類組件:

      /dev/kvm:工作于hypervisor,在用戶空間可通過ioctl()系統調用來完成VM創建,啟動等管理功能,它是一個字符設備,

                     功能:創建VM,為VM分配內存,讀寫VCPU的寄存器,向CPU注入中斷,運行VCPU等

    qemu進程:工作于用戶空間,主要用于實現模擬PC機的I/O設備

4、KVM特性

1)內存管理

          將分配給VM的內存交換至SWAP

          支持使用Huge Page(大內存頁);

          支持使用Intel EPT或AMD RVI技術完成內存地址映射:GVA-->GPA-->HPA簡化為GVA-->HPA

          支持KSM (Kernel Same-page Merging)

                   這個內核特性實現了內存頁面共享。KSM通過掃描每個虛擬機的內存查找各虛擬機間相同的內存頁,并將這些內存頁合并為一個被各相關虛擬機共享的單獨頁面。在某虛擬機試圖修改此頁面中的數據時,KSM會重新為其提供一個新的頁面副本。實踐中,運行于同一臺物理主機上的具有相同GuestOS的虛擬機之間出現相同內存頁面的概率是很的,比如共享庫、內核或其它內存對象等都有可能表現為相同的內存頁,因此,KSM技術可以降低內存占用進而提高整體性能。

2)硬件支持

   取決于Linux內核;

3)存儲:

本地存儲:

網絡附加存儲:

存儲區域網絡:

分布式存儲:例如GlustFS

4)實時遷移:

支持的GuestOS:

       Linux, Windows, OpenBSD, FreeBSD, OpenSolaris; 

5)設備驅動:

IO設備的完全虛擬化:模擬硬件

IO設備的半虛擬化:在GuestOS中安裝驅動;virtio

               virtio-blk, virtio-net, virtio-pci, virtio-console, virtio-ballon


5、KVM局限性

一般局限性:

CPU overcommit

時間記錄難以精確,依賴于時間同步機制

MAC地址:

VM量特別大時,存在沖突的可能性;

實時遷移:

性能局限性:


6、KVM的工具棧介紹

分為2大類:

qemu:

       qemu-kvm

       qemu-img

libvirt

       GUI: virt-manager, virt-viewer

       CLI: virt-install, virsh


QEMU主要提供了以下幾個部分:

        處理器模擬器

        仿真IO設備

       關聯模擬的設備至真實設備;

       調試器

      與模擬器交互的用戶接口


補充資料:

VMM:對IO的驅動有三種模式:

自主VMM:VMM自行提供驅動和控制臺;

混合VMM:借助于OS提供驅動;

                   依賴于外部OS實現特權域

                    自我提供特權域

寄宿式VMM:


二、KVM安裝

1、安裝kvm

1) 確保CPU支持HVM

# grep -E --color=auto "(vmx|svm)" /proc/cpuinfo

2) 裝載模塊

[root@BAIYU_180 ~]# lsmodModule                  Size  Used by
ppdev                   8537  0 
vmware_balloon          7199  0 
parport_pc             22690  0 
parport                36209  2 ppdev,parport_pc
microcode             112685  0 
snd_ens1371            21587  0 
snd_rawmidi            23017  1 snd_ens1371

# modprobe kvm

# modprobe kvm-intel

[root@BAIYU_173 kvm]# lsmodModule                  Size  Used by
nls_utf8                1455  1 
ipv6                  335589  142 
vhost_net              29185  0 
macvtap                10551  1 vhost_net
macvlan                10324  1 macvtap
tun                    16934  1 vhost_net
kvm_intel              55624  0 
kvm                   341551  1 kvm_intel
ppdev                   8217  0 
parport_pc             22658  0 
parport                36209  2 ppdev,parport_pc

3) 驗正:

/dev/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

1、使用qemu-kvm管理工具

      基于libvirt的工具如virt-manager和virt-install提供了非常便捷的虛擬機管理接口,但它們事實上上經二次開發后又封裝了qemu-kvm的工具。因此,直接使用qemu-kvm命令也能夠完成此前的任務。

    在RHEL6上,qemu-kvm位于/usr/libexec目錄中。由于此目錄不屬于PATH環境變量,故無法直接使用,這樣也阻止了可以直接使用qemu作為創建并管理虛擬機。如若想使用qemu虛擬機,可以通過將/usr/libexec/qemu-kvm鏈接為/usr/bin/qemu實現。

1) 安裝 qemu-kvm

#yum install qemu-kvm

# ln  -sv  /usr/libexec/qemu-kvm  /usr/bin/qemu-kvm

[root@BAIYU_173 ~]# yum install qemu-kvmDependencies Resolved========================================================================================================
 Package                          Arch           Version                          Repository       Size========================================================================================================Installing:
 qemu-kvm                         x86_64         2:0.12.1.2-2.491.el6_8.1         updates         1.6 M
Installing for dependencies:
 celt051                          x86_64         0.5.1.3-0.el6                    base             50 k
 glusterfs                        x86_64         3.7.5-19.el6                     base            392 k
 glusterfs-api                    x86_64         3.7.5-19.el6                     base             56 k
 glusterfs-client-xlators         x86_64         3.7.5-19.el6                     base            942 k
 glusterfs-libs                   x86_64         3.7.5-19.el6                     base            303 k
 gpxe-roms-qemu                   noarch         0.9.7-6.15.el6                   base            220 k
 qemu-img                         x86_64         2:0.12.1.2-2.491.el6_8.1         updates         837 k
 seabios                          x86_64         0.6.1.2-30.el6                   base             93 k
 sgabios-bin                      noarch         0-0.3.20110621svn.el6            base            6.6 k
 spice-server                     x86_64         0.12.4-13.el6.1                  updates         346 k
 usbredir                         x86_64         0.5.1-3.el6                      base             41 k
 vgabios                          noarch         0.6b-3.7.el6                     base             42 k
Transaction Summary========================================================================================================Install      13 Package(s)[root@BAIYU_173 ~]# rpm -ql qemu-kvm/etc/ksmtuned.conf
/etc/modprobe.d/blacklist-kvm.conf
/etc/rc.d/init.d/ksm
/etc/rc.d/init.d/ksmtuned
/etc/sasl2/qemu-kvm.conf
/etc/sysconfig/ksm
/etc/sysconfig/modules/kvm.modules
/etc/udev/rules.d/80-kvm.rules
/usr/libexec/qemu-kvm
/usr/sbin/ksmtuned
/usr/share/doc/qemu-kvm-0.12.1.2/COPYING

2)qemu-kvm的使用

qemu-kvm命令使用格式為:

    “qemu-kvm  [options]  [disk_p_w_picpath]”

其選項非常多,不過,大致可分為如下幾類。

命令選項:

       標準選項:

       顯示選項:

       i386平臺專用選項

       字符設備選項

       藍牙設備選項

       Linux啟動專用選項

       調試/專家模式選項


cirros project:為cloud環境測試vm提供的微縮版Linux的磁盤映像文件

                        官網下載地址:http://download.cirros-cloud.net/

創建并啟動虛擬機:

qemu-kvm -m 128 -smp 2 -name test -hda /p_w_picpaths/kvm/cirros-0.3.4-i386.disk.img


用-drive指定磁盤映像文件:

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


[root@BAIYU_173 ~]# cd /p_w_picpaths/kvm/[root@BAIYU_173 kvm]# lscirros-0.3.4-x86_64-disk.img[root@BAIYU_173 kvm]# qemu-kvm -m 128 -smp 2 -name test -hda /p_w_picpaths/kvm/cirros-0.3.4-x86_64-disk.img VNC server running on `::1:5900'    #這里啟動了VNC server可以查看到:[root@BAIYU_173 ~]# netstat -nlptu|grep 5900tcp        0      0 ::1:5900                    :::*                        LISTEN      3191/qemu-kvm       
[root@BAIYU_173 ~]# ps aux|grep qemu-kvmroot      3191 15.0  8.1 492796 82944 pts/3    Sl+  22:39   0:14 qemu-kvm -m 128 -smp 2 -name test -hda /p_w_picpaths/kvm/cirros-0.3.4-x86_64-disk.img
root      3242  0.0  0.0 103324   860 pts/0    S+   22:41   0:00 grep qemu-kvm[root@BAIYU_73 ~]# yum install tigervnc   #安裝vnc客戶端[root@BAIYU_173 ~]# rpm -ql tigervnc/usr/bin/vncviewer
/usr/share/applications/vncviewer.desktop
/usr/share/doc/tigervnc-1.1.0[root@BAIYU_173 ~]# vncviewer localhost  #連上看看

  虛擬化四、KVM虛擬化技術

按ctrl+alt+2可以跳轉到控制頁面,可以查看虛擬機的信息,再按ctrl+alt+1可以跳轉回來


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:指定硬盤設備所連接的接口類型,即控制器類型,如ide、scsi、sd、mtd、floppy、pflash及virtio等;

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

media=media:定義介質類型為硬盤(disk)還是光盤(cdrom);

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表示第一塊硬盤,d表示第一個光驅設備,n-p表示網絡適配器;默認為硬盤設備;

例如: -boot order(引導順序)=dc,once(第一次啟動時才使用)=d

我們用-drive選項來重新創建虛擬機:                     

[root@BAIYU_173 kvm]# qemu-img info cirros-0.3.4-x86_64-disk.img  #查看磁盤映像文件的格式p_w_picpath: cirros-0.3.4-x86_64-disk.imgfile format: qcow2
virtual size: 39M (41126400 bytes)disk size: 14M
cluster_size: 65536


通過cdrom啟動win7的安裝

qemu-kvm -name winxp -smp 4,sockets=1,cores=2,threads=2 -m 512 -drive file=/p_w_picpaths/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/root/winxp_ghost.iso,media=cdrom


(1)準備磁盤映像文件

[root@BAIYU_173 ~]# qemu-img create -f qcow2 -o size=60G /p_w_picpaths/kvm/win7.imgFormatting '/p_w_picpaths/kvm/win7.img', fmt=qcow2 size=64424509440 encryption=off cluster_size=65536

(2)上傳win7的安裝文件

(3)創建并啟動win7

[root@BAIYU_173 kvm]#  qemu-kvm -name win7 -smp 2 -m 1024 -drive file=/p_w_picpaths/kvm/win7.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/root/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso,media=cdrom -boot order=dc,once=d

  

qemu-kvm的顯示選項:

   顯示選項用于定義虛擬機啟動后的顯示接口相關類型及屬性等。

-nographic:默認情況下,qemu使用SDL來顯示VGA輸出;而此選項用于禁止圖形接口,此時,

qemu類似一個簡單的命令行程序,其仿真串口設備將被重定向到控制臺

此時可以使用的命令:

C-a h    print this helpC-a x    exit emulator
C-a s    save disk data back to file (if -snapshot)C-a t    toggle console timestamps
C-a b    send break (magic sysrq)C-a c    switch between console and monitor
C-a C-a  sends C-a


SDL: Simple DirectMedia Layer:簡單直接介質層   C語言開發,跨平臺且開源多媒體程序庫文件;

在qemu中使用“-sdl”即可;  #centos默認不支持

VNC: Virtual Network Computing:虛擬網絡計算   使用RFB(Remote FrameBuffer遠程幀緩沖)協議遠程控制另外的主機;

CentOS 6.6啟用vnc

    (1) yum install tigervnc-server

    (2) vncpasswd

    (3) vncserver :N   #啟動某一桌面


qemu-kvm

-vnc display(地址+某個桌面),option,option


示例:-vnc :N[,password]

                      啟動qemu-kvm時,額外使用-monitor stdio選項,并使用

                       QEMU模式下使用change vnc password命令設置密碼;


qemu-kvm的 網絡屬性相關選項

    網絡屬性相關選項用于定義網絡設備接口類型及其相關的各屬性等信息。

這里只介紹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用于指定一個在監控時顯示的網上設備名稱 ;emu可以模擬多個類型的網卡設備,如virtio、i82551、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)來配置當前網絡接口,ifname用于指定網卡名稱,并使用downscript=file指定的腳本(默認為/etc/qemu-ifdown)來撤消接口配置;使用script=no和downscript=no可分別用來禁止執行腳本;

如果創建虛擬機時沒有指定-net選項也會默認創建一個-net user類型的網卡

-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


qemu-ifup和qemu-ifdown腳本:

# cat /etc/qemu-ifup #!/bin/bash#bridge=br0       #bro要事先創建好if [ -n "$1" ]; thenip link set $1 upsleep 1
brctl addif $bridge $1[ $? -eq 0 ] && exit 0 || exit 1elseecho "Error: no interface specified."  #執行時后面接網卡接口exit 1fi

# cat /etc/qemu-ifdown #!/bin/bash#bridge=br0if [ -n "$1" ];thenbrctl delif $bridge $1ip link set $1 downexit 0else
	echo "Error: no interface specified."   #執行時后面接網卡接口exit 1fi


指定使用橋接網絡接口:

     qemu-kvm -m 128 -name test -smp 2 -drive file=/p_w_picpaths/kvm/cirros-0.3.4-i386-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic -net tap,script=/etc/if-up,downscript=no -nographic


四、總結一下這篇博文的內容

1、kvm組成部分:

/dev/kvm

qemu


2、安裝KVM需要裝載的模塊:

modprobe kvm

modprobe kvm-intel|kvm-amd


3、KVM工具棧:

qemu-kvm, /usr/libexec

libvirt:

GUI: virt-manager

CLI: virt-install, virsh


qemu-kvm

-name 'NAME'

-m megs

-cpu ?

-smp n[,sockets=N][,cores=N][,threads=N][,maxcpus=N]

-hda|-hdb|-hdc|-hdd

-cdrom

-drive 

file=, media=, if=, cache=, format=, index=, readonly  #只讀方式打開,后面不用接參數

-boot [order=drives][,once=drives][,menu=on|off]

-sdl

-vnc :0,password

-nographic

-monitor stdio       # 不打開窗口, 在本地顯示監視器的畫面,

-usbdevice tablet    #解決虛擬機中鼠標不同步問題


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河津市| 博白县| 攀枝花市| 米泉市| 葵青区| 兰州市| 南溪县| 安陆市| 丘北县| 泗阳县| 潼关县| 定襄县| 阿荣旗| 桐城市| 汝州市| 松溪县| 六安市| 柘荣县| 黎川县| 萍乡市| 通辽市| 蒙自县| 故城县| 宜城市| 桑日县| 永清县| 鹤岗市| 蓝山县| 博客| 丹寨县| 和硕县| 威远县| 美姑县| 和政县| 伊金霍洛旗| 德州市| 崇仁县| 莱州市| 新密市| 京山县| 成安县|