日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

【云计算学习笔记(十六)】之 KVM原理,Libvirt,VLAN,Linux Bridge介绍

發(fā)布時間:2024/1/1 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【云计算学习笔记(十六)】之 KVM原理,Libvirt,VLAN,Linux Bridge介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 本文章由公號【開發(fā)小鴿】發(fā)布!歡迎關(guān)注!!!
    • 一. 虛擬機基礎
      • (一) 虛擬化分類
        • 1. Host是通過什么方式將硬件資源虛擬化,并提供給Guest使用的呢?
        • 2. 1型虛擬化
        • 3. 2型虛擬化
      • (二) KVM
        • 1. KVM的概述
        • 2. KVM的虛擬化實現(xiàn)
        • 3.QEMU介紹
        • 4.Libvirt
          • (1)Libvirt概述
          • (2)Libvirt組成
      • (三)KVM虛擬化平臺搭建
        • 1. 環(huán)境準備
        • 2. 查看硬件是否支持虛擬化
        • 3. 安裝KVM
        • 4. 安裝kvm所依賴的組件
        • 5. 創(chuàng)建物理橋接設備并關(guān)聯(lián)網(wǎng)卡
        • 6. 測試使用KVM安裝虛擬機
        • 7. 查看KVM虛擬機的狀態(tài)
        • 8. 登錄虛機測試網(wǎng)絡情況
        • 9. 遠程連接管理KVM虛擬機
      • (四) KVM虛擬化原理
        • 1. CPU虛擬化
        • 2.內(nèi)存虛擬化
        • 3.存儲虛擬化
        • 4.網(wǎng)絡虛擬化
          • (1) Linux Bridge
          • (2) VLAN
          • (3) KVM是如何實現(xiàn)VLAN的?
          • (4) 虛擬交換機的實現(xiàn)

本文章由公號【開發(fā)小鴿】發(fā)布!歡迎關(guān)注!!!


老規(guī)矩–妹妹鎮(zhèn)樓:

一. 虛擬機基礎

(一) 虛擬化分類

1. Host是通過什么方式將硬件資源虛擬化,并提供給Guest使用的呢?

? ? ? ?通過一個Hypervisor的程序,根據(jù)Hypervisor的實現(xiàn)方式和所處的位置,虛擬化又分為兩種:1型虛擬化和2型虛擬化。

2. 1型虛擬化

? ? ? ?Hypervisor直接安裝在物理機上,多個虛擬機在Hypervisor上運行,這里的Hypervisor的實現(xiàn)方式一般是一個定制的Linux系統(tǒng),如Xen何VMWare的ESXi都是這種類型。

3. 2型虛擬化

? ? ? ?Host上安裝常規(guī)的OS,如Linux,Windows等,Hypervisor作為OS上的一個程序運行,并對虛擬機進行管理。如KVM,VirtualBox和VMWare WorkStation就是這種類型。

? ? ? ?這種類型的虛擬化更加靈活,支持虛擬機的嵌套,即可以在KVM上再運行一個KVM。

(二) KVM

1. KVM的概述

? ? ? ?KVM(Kernal-Based Virtual Machine),即KVM是基于Linux內(nèi)核實現(xiàn)的虛擬化基礎設施,可以將Linux內(nèi)核轉(zhuǎn)化為一個Hypervisor。KVM在2007年被導入Linux2.6.20核心中,它能夠在x86架構(gòu)且硬件支持虛擬化技術(shù)(如Intel VT或AMD-T)的平臺上運行。

2. KVM的虛擬化實現(xiàn)

? ? ? ?KVM中有一個內(nèi)核模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko),用來管理虛擬CPU和內(nèi)存,而IO,存儲和網(wǎng)絡都交給Linux內(nèi)核和Qemu來實現(xiàn),QEMU軟件(qemu-kvm)作為虛擬機上層控制和界面管理。

3.QEMU介紹

? ? ? ?Qemu是一個廣泛使用的開源計算機模擬器和虛擬機,它能夠獨立運行虛擬機,即根本不需要kvm,kqemu是該軟件的加速軟件。對于kvm來說,并不需要qemu來做虛擬化處理,只是需要qemu的上層管理界面進行虛擬機控開關(guān)至,虛擬機依舊是由kvm驅(qū)動的。

? ? ? ?當qemu作為模擬器時,可以在一種架構(gòu)(如x86 PC)下運行另一種架構(gòu)(如ARM)下的操作系統(tǒng)和程序。通過使用動態(tài)轉(zhuǎn)換,它可以獲得非常好的性能。

? ? ? ?當qemu作為虛擬機時,QEMU可以使用其他虛擬機管理程序(如 Xen 或 KVM)來使用CPU擴展(HVM)進行虛擬化,通過在主機CPU上直接執(zhí)行客戶機代碼來獲得接近于宿主機的性能。

4.Libvirt

(1)Libvirt概述

? ? ? ?Libvirt是KVM的管理工具,當然除了KVM它還可以管理其他的Hypervisor,如Xen,VirtualBox等,OpenStack底層也使用了Libvirt。它實際上是一系列庫函數(shù)提供給其他技術(shù)調(diào)用,來管理虛擬機的。它的設計是面向驅(qū)動的,對于任一種虛擬機技術(shù)都會開發(fā)該技術(shù)對應的驅(qū)動,這樣不同的虛擬機技術(shù)就可以使用不同的驅(qū)動來調(diào)用libvirt的接口。

(2)Libvirt組成

Libvirt中包含三個組件:

? ? ? ?后臺daemon程序libvirtd:接受和處理API請求;

? ? ? ?API庫:讓其他人可以開發(fā)基于Libvirt的高級工具,如virt-manager,這是個圖形化的KVM管理工具;

? ? ? ?virsh:KVM命令行工具;

(三)KVM虛擬化平臺搭建

1. 環(huán)境準備

? ? ? ?CentOS7_64位系統(tǒng),配置圖形界面。

2. 查看硬件是否支持虛擬化

[root@localhost ~]# egrep ‘(vmx|svm)/proc/cpuinfo

? ? ? ?結(jié)果是VMX表示Intel,SVM表示AMD。

3. 安裝KVM

? ? ? ?由于Linux內(nèi)核已經(jīng)將KVM收錄了,在安裝系統(tǒng)時已經(jīng)加入了KVM,我們只需要在命令行模式下啟用KVM即可:

啟用KVM模塊:

[root@localhost ~]# modprobe kvm [root@localhost ~]# lsmod |grep kvm

? ? ? ?modprobe可載入指定的個別模塊,或是載入一組相依的模塊。modprobe會根據(jù)depmod所產(chǎn)生的相依關(guān)系,決定要載入哪些模塊。若在載入過程中發(fā)生錯誤,在modprobe會卸載整組的模塊。

? ? ? ?執(zhí)行 lsmod 指令,會列出所有已載入系統(tǒng)的模塊。Linux 操作系統(tǒng)的核心具有模塊化的特性,因此在編譯核心時,務須把全部的功能都放入核心。您可以將這些功能編譯成一個個單獨的模塊,待需要時再分別載入。
可以看到是,KVM模塊已經(jīng)被載入Linux中。

4. 安裝kvm所依賴的組件

需要安裝qemu-kvm和libvirt相關(guān)的組件,如下所示:

[root@localhost ~]# yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm

安裝完成后啟動libvirtd后臺服務:

[root@localhost ~]# service libvirtd start

查看libvirtd后臺服務狀態(tài):

systemctl status libvirtd.service

設置開機自啟動libvirtd

systemctl enable libvirtd.service

5. 創(chuàng)建物理橋接設備并關(guān)聯(lián)網(wǎng)卡

? ? ? ?在第4步中,我們已經(jīng)創(chuàng)建了虛擬網(wǎng)橋virbr0,可以通過網(wǎng)橋管理命令查看:

brctl show

? ? ? ?接下來,需要將NetworkManager服務關(guān)閉,開機啟動也關(guān)閉:

[root@localhost ~]# chkconfig NetworkManager off [root@localhost ~]# systemctl stop NetworkManager [root@localhost ~]# systemctl disable NetworkManager

? ? ? ?接下來,需要創(chuàng)建物理橋接設備,使用virsh命令行工具創(chuàng)建物理網(wǎng)橋設備br0并關(guān)聯(lián)網(wǎng)卡ens33到該設備中:

[root@localhost ~]# virsh iface-bridge ens33 br0

? ? ? ?此時,ens33之前的IP已經(jīng)被放置到br0網(wǎng)橋中了。

? ? ? ?通過網(wǎng)橋管理來查看當前的網(wǎng)橋設備:

btctl show

? ? ? ?如果列表中多了br0,則表示橋接成功。


6. 測試使用KVM安裝虛擬機

? ? ? ?安裝virt-manager圖形化界面管理虛擬機

yum -y install virt-manager

? ? ? ?啟動virt-manager創(chuàng)建虛擬機:

virt-manager

? ? ? ?從http://download.cirros-cloud.net/中下載一個很小的Linux鏡像cirrors,上傳到虛擬機中,使用virt-manager創(chuàng)建虛擬機,并分配內(nèi)存和CPU,可以看到,cirrors已經(jīng)成功在Centos7上生成了一個新的Linux虛擬機,如下所示:


7. 查看KVM虛擬機的狀態(tài)

virsh list –all

8. 登錄虛機測試網(wǎng)絡情況

? ? ? ?登錄cirros虛機,查看當前虛機的地址信息,然后嘗試Ping宿主機以及百度,結(jié)果是成功的。說明當前的虛機已經(jīng)和宿主機連通了,并且也能夠訪問外網(wǎng)了。
返回到宿主機中,通過網(wǎng)橋管理器查看當前宿主機的網(wǎng)橋情況:

brvtl show

? ? ? ?可以看到,br0是我們生成的物理網(wǎng)橋,它綁定了ens33宿主機的物理網(wǎng)卡,以及vnet0這個虛機的網(wǎng)卡,因此虛機和宿主機能夠相互通信。

? ? ? ?注意一點,虛擬中的虛擬網(wǎng)卡的名稱是eth0,而不是宿主機中顯示的vnet0,兩個名稱是不同的。

9. 遠程連接管理KVM虛擬機

? ? ? ?由于KVM(準確來說是Libvirt)默認是不接受遠程管理的,需要進行相關(guān)的配置才能夠連接上KVM虛擬機。


(四) KVM虛擬化原理

1. CPU虛擬化

? ? ? ?KVM的虛擬化是需要CPU硬件的支持的,之前通過命令查找硬件的cpu信息中是否有vmx或svm,vmx是Intel的虛擬化,svm是AMD的虛擬化。

? ? ? ?一個KVM虛擬機在宿主機中是一個qemu-kvm進程,與其他的Linux進程一樣被調(diào)度,而虛機中的每一個虛機vCPU對應qemu-kvm進程的一個線程。

2.內(nèi)存虛擬化

? ? ? ?KVM通過內(nèi)存虛擬機化共享物理系統(tǒng)內(nèi)存,動態(tài)分配給虛機,為了在一臺機器上運行多個虛機,KVM需要實現(xiàn)VA(虛擬內(nèi)存)->PA(物理內(nèi)存)->機器內(nèi)存(MA)直接的地址轉(zhuǎn)換。虛機的OS控制從VA到PA的轉(zhuǎn)換,KVM負責PA到MA。

3.存儲虛擬化

? ? ? ?KVM的存儲虛擬化通過存儲池(Storage Pool)和卷(Volume)來管理的。存儲池是宿主機上的一塊空間,是多種類型的,卷是池中的一塊空間,宿主機將卷分配給虛機,卷在虛機中就是一塊硬盤。

? ? ? ?文件目錄是最常用的存儲池類型,KVM將宿主機目錄/var/lib/libvirt/images作為默認的存儲池,而該存儲池中的卷就是一個個的文件了,每一個文件對于虛擬來說就是一個磁盤。KVM所有可用的存儲池都定義在宿主機的/etc/libvirt/storage目錄下,每一個池子有一個XML文件,默認有一個default.xml文件,其中的默認目錄就是/var/lib/libvirt/images。

? ? ? ?使用文件作為卷的優(yōu)點是:存儲方便,移植性號,可復制,可遠程訪問。卷不一定都放在宿主機本地文件系統(tǒng)中,也可以存儲在通過網(wǎng)絡連接的遠程文件系統(tǒng),這樣卷就能夠在多個宿主機之間共享,便于虛機在不同宿主機之間進行熱遷移。

KVM支持多種卷的文件格式,如:

? ? ? ?raw是默認格式,原始磁盤鏡像格式,移植性號,性能好,大小固定;

? ? ? ?qcow2,cow表示copy on write寫時復制,節(jié)省磁盤空間,支持多快照;

? ? ? ?vmdk是VMWare的虛擬磁盤格式,即VMWare的虛機可以直接在KVM上運行;

4.網(wǎng)絡虛擬化

? ? ? ?網(wǎng)絡虛擬化中最重要的是Linux Bridge和Vlan。

(1) Linux Bridge

? ? ? ?宿主機中有一塊連接外網(wǎng)的物理網(wǎng)卡eth0,如何讓虛機VM1訪問外網(wǎng)。選擇的方案是給VM1分配一個虛擬網(wǎng)卡vnet0,通過Linux Bridge br0將eth0和vnet0連接起來,這樣虛機和宿主機就通過Linux Bridege連接起來了。

? ? ? ?Linux Bridge是Linux上用來做二層交換的設備,即二層交換機,多個網(wǎng)絡設備可以連接到同一個Linux Bridge上,當某個設備收到數(shù)據(jù)包時,Linux Bridge會將數(shù)據(jù)轉(zhuǎn)發(fā)給其他設備。

? ? ? ?注意,在KVM中我們會看到一個virbr0,這是默認創(chuàng)建的一個Bridge,它的作用是為連接其上的虛擬網(wǎng)卡提供NAT訪問外網(wǎng)的功能,virbo0默認分配了一個IP192.168.122.1,并通過dnsmasql為連接其上的其他虛擬網(wǎng)卡提供DHCP服務。注意,使用NAT服務的虛機可以訪問外網(wǎng),但是外網(wǎng)無法訪問虛機,因為NAT會將虛機發(fā)出網(wǎng)絡包的源地址轉(zhuǎn)換為宿主機的IP地址,不像網(wǎng)橋,虛機通過自己的IP直接和外網(wǎng)通信。

(2) VLAN

? ? ? ?LAN表示本地局域網(wǎng),通常使用集線器和交換機來連接LAN中的PC,一個LAN表示一個廣播域,即LAN中的所有成員都會收到任一個成員發(fā)出的廣播包。

? ? ? ?VLAN表示虛擬的LAN,一個帶有VLAN功能的交換機能夠?qū)⒆约旱亩丝趧澐殖龆鄠€LAN,即隔離出了多個廣播域,每個域的二層廣播包(arp)是無法跨越每個廣播域的邊界的,但是在三層上是可以通過路由器讓不同的廣播域相通的。

? ? ? ?通常交換機的端口有兩種配置模式:Access和Trunk。Access端口被打上了VLAN的標簽,表明該端口屬于哪個VLAN,不同的VLAN用VLAN ID來區(qū)分,Access端口都是和計算機的網(wǎng)卡直連的,這樣從網(wǎng)卡出來的數(shù)據(jù)包流入Access端口后就能打上VLAN的標簽。Trunk端口能夠讓不同的VLAN進行通信。

(3) KVM是如何實現(xiàn)VLAN的?

? ? ? ?eth0是宿主機的物理網(wǎng)卡,宿主機通過軟件實現(xiàn)一個虛擬交換機,在其上定義了一個VLAN10,通過VLAN設備eht0.10連接到虛擬網(wǎng)橋brvlan10上,同時連接的還有虛機VM1的虛擬網(wǎng)卡vnet0,這樣vnet0,brvlan10,eth0.10相當于都接入了VLAN10的Access端口上,都屬于VLAN10了,連接到虛擬網(wǎng)橋brvlan10上的設備都自動加入了VLAN10中,而eth0就是一個Trunk端口。

? ? ? ?如果添加新的VLAN20網(wǎng)段到eth0上,那么兩個VLAN區(qū)域的網(wǎng)絡是隔離的,因為當VLAN10中的VM1向VLAN20中的VM2發(fā)送請求時,首先要獲取VM2的MAC地址,因此在VLAN10中廣播arp請求包,該請求包無法穿透VLAN10區(qū)域,因此獲取不到VM2的MAC地址,也就無法與VM2通信。


(4) 虛擬交換機的實現(xiàn)

? ? ? ?交換機包含兩種功能,一種是交換,另一種是隔離。Linux的VLAN設備的是隔離功能,將不同的VLAN網(wǎng)段隔離起來;Linux Bridge實現(xiàn)的是交換功能,將同一個VLAN的子設備掛載到一個Bridge上,設備之間就可以交換數(shù)據(jù)了。

? ? ? ?因此,Linux Bridge + Vlan實現(xiàn)了虛擬交換機的功能。

總結(jié)

以上是生活随笔為你收集整理的【云计算学习笔记(十六)】之 KVM原理,Libvirt,VLAN,Linux Bridge介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。