KVM

1、虛擬化技術(shù):

虛擬化技術(shù)類型:
    主機(jī)虛擬化:xen, kvm, virtualbox, ...
    容器(用戶空間隔離): lxc(LinuX Container), openvz, ...
    系統(tǒng)庫虛擬化:wine, ...
    應(yīng)用程序級虛擬化:jvm, pvm,...

主機(jī)虛擬化:
    CPU:
        模擬:emulation, 虛擬機(jī)的arch與物理平臺的arch可以不相同完箩;qemu赐俗;
        虛擬:virtualization
            完全虛擬化(full-virt)
                BT: 二進(jìn)制轉(zhuǎn)換 (軟件)
                HVM:硬件輔助的虛擬化(硬件)
            半(準(zhǔn))虛擬化 (para-virt)
                GuestOS得明確知道自己運行于虛擬化技術(shù)
                
    內(nèi)存:
        MMU virtualization:
            Intel: EPT, Extended Page Table
            AMD: NPT, Nested Page Table
            
        TLB virtualization:
            tagged TLB
            
    IO:
        Emulation 
        Para-virtualization
        IO-through:IO透傳
        

主機(jī)虛擬化的類型:
    TYPE-I:
        于硬件級別直接運行hypervisor;
        xen, vmware ESX/ESXI
    TYPE-II:
        于硬件級別運行一個OS(Host OS)弊知,而此OS上運行一個VMM阻逮;
        vmware workstation, virtualbox, kvm
        
Linux目前流行的開源虛擬化技術(shù)解決方案:
    主機(jī)虛擬化:xen, kvm, virtualbox
    容器級:lxc, libcontainer, runC, openvz
    模擬器:qemu

2、KVM的組件:

    kvm.ko:模塊
        API
    qemu-kvm:用戶空間的工具程序秩彤;
        qemu-kvm is an open source virtualizer that provides hardware emulation for the KVM hypervisor. 
    
    libvirt:Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). The main package includes the libvirtd server exporting the virtualization support.
    
        C/S:
            Client:
                libvirt-client
                virt-manager
            Daemon:
                libvirt-daemon

3叔扼、快速使用kvm技術(shù):

    安裝使用KVM:
        判斷CPU是否支持硬件虛擬化:
            # grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
                vmx:Intel VT-x
                svm:AMD AMD-v
    
    # yum install libvirt-daemon-kvm qemu-kvm virt-manager
    # modprobe kvm 
    # systemctl start libvirtd.service
    # virsh iface-bridge INTERFACE BRIDGE_NAME
    # virt-manager

4、kvm: Kernel-based Virtual Machine

        Qumranet公司 --> RedHat
        (1) X86_64
        (2) HVM: 
            Intel VT
            AMD AMD-v

5漫雷、KVM的組件:

        兩類組件:
            (kvm.ko)/dev/kvm:工作為hypervisor瓜富,在用戶空間可通過系統(tǒng)調(diào)用ioctl()與內(nèi)核中的kvm模塊交互,從而完成虛擬機(jī)的創(chuàng)建珊拼、啟動食呻、停止、刪除等各種管理功能澎现;
            qemu-kvm進(jìn)程:工作于用戶空間仅胞,用于實現(xiàn)IO設(shè)備模擬;用于實現(xiàn)一個虛擬機(jī)實例剑辫;
            
    KVM模塊load進(jìn)內(nèi)存之后干旧,系統(tǒng)的運行模式:
        內(nèi)核模式:GuestOS執(zhí)行IO類的操作時,或其它的特殊指令操作時的模式妹蔽;它也被稱為“Guest-Kernel”模式椎眯;
        用戶模式:Host OS的用戶空間挠将,用于代為GuestOS發(fā)出IO請求;
        來賓模式:GuestOS的用戶模式编整;所有的非IO類請求舔稀;
        
    安裝使用KVM:
        判斷CPU是否支持硬件虛擬化:
            grep -i -E '(vmx|svm|lm)' /proc/cpuinfo
                vmx:Intel VT-x
                svm:AMD AMD-v
                
        運行中的一個kvm虛擬機(jī)就是一個qemu-kvm進(jìn)程,運行qemu-kvm程序并傳遞給它合適的選項及參數(shù)即能完成虛擬機(jī)啟動掌测,終止此進(jìn)程即能關(guān)閉虛擬機(jī)内贮;
                
        kvm工具棧:
            qemu:
                qemu-kvm 
                qemu-img
            libvirt:
                GUI:virt-manager, virt-viewer
                CLI: virsh, virt-install 
                
                C/S:
                    libvirtd
                
        安裝:
            (1) 裝載內(nèi)核模塊
                kvm:核心模塊
                kvm-intel|kvm-amd
                

使用virt-manager管理KVM
    # yum install qemu-kvm libvirt-daemon-kvm  virt-manager
    # modprobe kvm 
    
    # systemctl start libvirtd.service 
    
    # virt-manager &

6、網(wǎng)絡(luò)虛擬化:

    二層的虛擬網(wǎng)絡(luò)設(shè)備:
        kernel net bridge/brctl
        openvswitch
        
    CentOS 7創(chuàng)建物理橋汞斧,使用內(nèi)核自帶的橋接模塊實現(xiàn):
        橋接口配置文件保留地址信息夜郁;
            TYPE=Bridge
            Device=BRIDGE_NAME
            
        物理網(wǎng)卡配置文件:
            刪除地址、掩碼和網(wǎng)關(guān)等相關(guān)的配置粘勒,添加
            BRIDGE=BRIDGE_NAME
            
        重啟網(wǎng)絡(luò)服務(wù)即可:

7竞端、kvm的管理工具棧:

    qemu:
        qemu-kvm
        qemu-img 
    libvirt:
        GUI:virt-manager
        CLI:virsh, virt-install
        
    使用qemu-kvm管理vms:
        
        Qemu:
            處理器模擬器
            仿真各種IO設(shè)備
            將仿真設(shè)備連接至主機(jī)的物理設(shè)備
            提供用戶接口
            
        qemu-kvm命令語法:
            qemu-kvm [options] [disk_image]
            
            選項有很多類別:
                標(biāo)準(zhǔn)選項、塊設(shè)備相關(guān)選項庙睡、顯示選項事富、網(wǎng)絡(luò)選項、...
                
                標(biāo)準(zhǔn)選項:
                    -machine [type=]name:-machine help來獲取列表埃撵,用于指定模擬的主機(jī)類型赵颅; 
                    -cpu cpu:-cpu help來獲取列表虽另;用于指定要模擬的CPU型號暂刘;
                    -smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]:指明虛擬機(jī)上vcpu的數(shù)量及拓?fù)洌?                    -boot [order=drives][,once=drives][,menu=on|off] [,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_time][,strict=on|off]
                        order:各設(shè)備的引導(dǎo)次序:c表示第一塊硬盤,d表示第一個光驅(qū)設(shè)備捂刺;-boot order=dc,once=d
                    -m megs:虛擬機(jī)的內(nèi)存大幸ゼ稹;
                    -name NAME:當(dāng)前虛擬機(jī)的名稱族展,要惟一森缠;
                    
                塊設(shè)備相關(guān)的選項:
                    -hda/-hdb file:指明IDE總線類型的磁盤映射文件路徑;第0和第1個仪缸;
                    -hdc/-hdd file:第2和第3個贵涵;
                    
                    -cdrom file:指定要使用光盤映像文件; 
                    
                    -drive [file=file][,if=type][,media=d][,index=i] [,cache=writethrough|writeback|none|directsync|unsafe][,format=f]:
                        file=/PATH/TO/SOME_IMAGE_FILE:映像文件路徑恰画;
                        if=TYPE:塊設(shè)備總線類型宾茂,ide, scsi, sd, floppy, virtio,...
                        media=TYPE:介質(zhì)類型,cdrom和disk拴还;
                        index=i:設(shè)定同一類型設(shè)備多個設(shè)備的編號跨晴;
                        cache=writethrough|writeback|none|directsync|unsafe:緩存方式;
                        format=f:磁盤映像文件的格式片林;
                        
                    CentOS磁盤鏡像文件下載:
                        https://cloud.centos.org/centos/7/images/
                        
                顯示選項:
                     -display type:顯示的類型端盆,sdl, curses, none和vnc怀骤;
                    -nographic:不使用圖形接口; 
                    -vga [std|cirrus|vmware|qxl|xenfb|none]:模擬出的顯卡的型號焕妙;
                    -vnc display[,option[,option[,...]]]]:啟動一個vnc server來顯示虛擬機(jī)接口蒋伦; 讓qemu進(jìn)程監(jiān)聽一個vnc接口; 
                        display:
                            (1) HOST:N
                                在HOST主機(jī)的第N個桌面號輸出vnc焚鹊;
                                    5900+N
                            (2) unix:/PATH/TO/SOCK_FILE
                            (3) none
                            
                        options:
                            password:連接此服務(wù)所需要的密碼凉敲;
                    
                    -monitor stdio:在標(biāo)準(zhǔn)輸出上顯示monitor界面;
                        Ctrl-a, c:在console和monitor之間切換寺旺;
                        Ctrl-a, h
                    
                    
                網(wǎng)絡(luò)選項:
                    -net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
                        為虛擬機(jī)創(chuàng)建一個網(wǎng)絡(luò)接口爷抓,并將其添加至指定的VLAN;
                        model=type:指明模擬出的網(wǎng)卡的型號阻塑,ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio蓝撇;
                            -net nic,model=?
                        macaddr=mac:指明mac地址;52:54:00:
                        
                    -net tap[,vlan=n][,name=str][,fd=h][,fds=x:y:...:z][,ifname=name][,script=file][,downscript=dfile]:
                        通過物理的TAP網(wǎng)絡(luò)接口連接至vlan n陈莽;
                        script=file:啟動虛擬機(jī)時要執(zhí)行的腳本渤昌,默認(rèn)為/etc/qemu-ifup
                        downscript=dfile:關(guān)閉虛擬機(jī)時要執(zhí)行的腳本,/etc/qemu-ifdown
                        ifname=NAME:自定義接口名稱走搁;
                        
                        /etc/qemu-ifup
                        
                            #!/bin/bash
                            #
                            bridge=br0

                            if [ -n "$1" ];then
                                ip link set $1 up
                                sleep 1
                                brctl addif $bridge $1
                                [ $? -eq 0 ] && exit 0 || exit 1
                            else
                                echo "Error: no interface specified."
                                exit 2
                            fi  
                            
                    其它選項:
                        -daemonize:以守護(hù)進(jìn)程運行独柑;
                        
                        
                示例1:
                     ~]#  qemu-kvm -name c2 -smp 2,maxcpus=4,sockets=2,cores=2 -m 128 -drive file=/images/kvm/cos-i386.qcow2,if=virtio -vnc  :1 -daemonize -net nic,model=e1000,macaddr=52:54:00:00:00:11 -net tap,script=/etc/qemu-ifup
                示例2:     
                     ~]# qemu-kvm -name winxp -smp 1,maxcpus=2,sockets=1,cores=2 -m 1024 -drive file=/data/vms/winxp.qcow2,media=disk,cache=writeback,format=qcow2 file=/tmp/winxp.iso,media=cdrom -boot order=dc,once=d -vnc :1 -net nic,model=rtl8139,macaddr=52:54:00:00:aa:11 -net tap,ifname=tap1,script=/etc/qemu-ifup -daemonize
                     
            半虛擬化:virtio
                建議:Network IO, Disk IO使用virtio,性能會有顯著提升私植;
                
            dnsmasq:
                listen-address=192.168.1.132,127.0.0.1
                dhcp-range=192.168.1.50,192.168.1.150,48h
                dhcp-option=3,192.168.0.1

8忌栅、virsh命令:

            虛擬機(jī)的生成需要依賴于預(yù)定義的xml格式的配置文件;其生成工具有兩個:virt-manager, virt-install曲稼; 
            
            virsh [OPTION]... COMMAND [ARG]..
            
            子命令的分類:
                Domain Management (help keyword 'domain')
                Domain Monitoring (help keyword 'monitor')
                Host and Hypervisor (help keyword 'host')
                Interface (help keyword 'interface')
                Networking (help keyword 'network')
                Network Filter (help keyword 'filter')
                Snapshot (help keyword 'snapshot')
                Storage Pool (help keyword 'pool')
                Storage Volume (help keyword 'volume')
                
            Domain Management (help keyword 'domain')
                創(chuàng)建虛擬機(jī):
                    create:從xml格式的配置文件創(chuàng)建并啟動虛擬機(jī)索绪;
                    define:從xml格式的配置文件創(chuàng)建虛擬機(jī);
                
                停止:
                    destroy:強(qiáng)行關(guān)機(jī)贫悄;
                    shutdown:關(guān)機(jī)瑞驱;
                
                啟動:
                    start:啟動
                
                reboot:重啟;
                
                undefine:刪除虛擬機(jī)窄坦;
                
                suspend/resume:暫停于內(nèi)存中唤反,或繼續(xù)運行暫停狀態(tài)的虛擬機(jī);
                    真正實現(xiàn)的效果:pause/unpause
                
                save/restore:保存虛擬機(jī)的當(dāng)前狀態(tài)至文件中鸭津,或從指定文件恢復(fù)虛擬機(jī)彤侍;
                
                console:連接至指定domain的控制臺;
                
                域的設(shè)備資源管理:
                    cpu-stats
                    vcpuinfo
                    vcpucount
                    setvcpus
                    vcpupin
                    
                    setmaxmem
                    setmem
                    
                
                    attach-disk/detach-disk/domblklist:磁盤設(shè)備的熱插拔曙博;
                
                    attach-interface/detach-interface/domiflist:網(wǎng)絡(luò)接口設(shè)備的熱插拔拥刻;
                        type:bridge
                        source:BRIDGE_NAME
                    
                        注意 :無須事先創(chuàng)建網(wǎng)絡(luò)接口設(shè)備;
                    
            Domain Monitoring (help keyword 'monitor')
                domiflist
                domblklist
                ...

9父泳、圖形管理工具:

        kimchi:基于H5研發(fā)web GUI; virt-king般哼;
        OpenStack: IaaS
        oVirt:
        proxmox:
        
        管理工具棧:https://www.linux-kvm.org/page/Management_Tools
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吴汪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蒸眠,更是在濱河造成了極大的恐慌漾橙,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件楞卡,死亡現(xiàn)場離奇詭異霜运,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蒋腮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門淘捡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人池摧,你說我怎么就攤上這事焦除。” “怎么了作彤?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵膘魄,是天一觀的道長。 經(jīng)常有香客問我竭讳,道長创葡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任绢慢,我火速辦了婚禮灿渴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呐芥。我一直安慰自己逻杖,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布思瘟。 她就那樣靜靜地躺著,像睡著了一般闻伶。 火紅的嫁衣襯著肌膚如雪滨攻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天蓝翰,我揣著相機(jī)與錄音光绕,去河邊找鬼。 笑死畜份,一個胖子當(dāng)著我的面吹牛诞帐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播爆雹,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼停蕉,長吁一口氣:“原來是場噩夢啊……” “哼愕鼓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起慧起,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤菇晃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚓挤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體磺送,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年灿意,在試婚紗的時候發(fā)現(xiàn)自己被綠了估灿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡缤剧,死狀恐怖甲捏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鞭执,我是刑警寧澤司顿,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站兄纺,受9級特大地震影響大溜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜估脆,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一钦奋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疙赠,春花似錦付材、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捍岳,卻和暖如春富寿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锣夹。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工页徐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人银萍。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓变勇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親贴唇。 傳聞我的和親對象是個殘疾皇子搀绣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容