網(wǎng)站跳轉(zhuǎn)怎么辦瀏覽器下載安裝2023版本
文章目錄
- 本文章由公號(hào)【開(kāi)發(fā)小鴿】發(fā)布!歡迎關(guān)注!!!
- 一. 虛擬機(jī)基礎(chǔ)
- (一) 虛擬化分類
- 1. Host是通過(guò)什么方式將硬件資源虛擬化,并提供給Guest使用的呢?
- 2. 1型虛擬化
- 3. 2型虛擬化
- (二) KVM
- 1. KVM的概述
- 2. KVM的虛擬化實(shí)現(xiàn)
- 3.QEMU介紹
- 4.Libvirt
- (1)Libvirt概述
- (2)Libvirt組成
- (三)KVM虛擬化平臺(tái)搭建
- 1. 環(huán)境準(zhǔn)備
- 2. 查看硬件是否支持虛擬化
- 3. 安裝KVM
- 4. 安裝kvm所依賴的組件
- 5. 創(chuàng)建物理橋接設(shè)備并關(guān)聯(lián)網(wǎng)卡
- 6. 測(cè)試使用KVM安裝虛擬機(jī)
- 7. 查看KVM虛擬機(jī)的狀態(tài)
- 8. 登錄虛機(jī)測(cè)試網(wǎng)絡(luò)情況
- 9. 遠(yuǎn)程連接管理KVM虛擬機(jī)
- (四) KVM虛擬化原理
- 1. CPU虛擬化
- 2.內(nèi)存虛擬化
- 3.存儲(chǔ)虛擬化
- 4.網(wǎng)絡(luò)虛擬化
- (1) Linux Bridge
- (2) VLAN
- (3) KVM是如何實(shí)現(xiàn)VLAN的?
- (4) 虛擬交換機(jī)的實(shí)現(xiàn)
本文章由公號(hào)【開(kāi)發(fā)小鴿】發(fā)布!歡迎關(guān)注!!!
老規(guī)矩–妹妹鎮(zhèn)樓:

一. 虛擬機(jī)基礎(chǔ)
(一) 虛擬化分類
1. Host是通過(guò)什么方式將硬件資源虛擬化,并提供給Guest使用的呢?
? ? ? ?通過(guò)一個(gè)Hypervisor的程序,根據(jù)Hypervisor的實(shí)現(xiàn)方式和所處的位置,虛擬化又分為兩種:1型虛擬化和2型虛擬化。
2. 1型虛擬化
? ? ? ?Hypervisor直接安裝在物理機(jī)上,多個(gè)虛擬機(jī)在Hypervisor上運(yùn)行,這里的Hypervisor的實(shí)現(xiàn)方式一般是一個(gè)定制的Linux系統(tǒng),如Xen何VMWare的ESXi都是這種類型。
3. 2型虛擬化
? ? ? ?Host上安裝常規(guī)的OS,如Linux,Windows等,Hypervisor作為OS上的一個(gè)程序運(yùn)行,并對(duì)虛擬機(jī)進(jìn)行管理。如KVM,VirtualBox和VMWare WorkStation就是這種類型。
? ? ? ?這種類型的虛擬化更加靈活,支持虛擬機(jī)的嵌套,即可以在KVM上再運(yùn)行一個(gè)KVM。
(二) KVM
1. KVM的概述
? ? ? ?KVM(Kernal-Based Virtual Machine),即KVM是基于Linux內(nèi)核實(shí)現(xiàn)的虛擬化基礎(chǔ)設(shè)施,可以將Linux內(nèi)核轉(zhuǎn)化為一個(gè)Hypervisor。KVM在2007年被導(dǎo)入Linux2.6.20核心中,它能夠在x86架構(gòu)且硬件支持虛擬化技術(shù)(如Intel VT或AMD-T)的平臺(tái)上運(yùn)行。
2. KVM的虛擬化實(shí)現(xiàn)
? ? ? ?KVM中有一個(gè)內(nèi)核模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko),用來(lái)管理虛擬CPU和內(nèi)存,而IO,存儲(chǔ)和網(wǎng)絡(luò)都交給Linux內(nèi)核和Qemu來(lái)實(shí)現(xiàn),QEMU軟件(qemu-kvm)作為虛擬機(jī)上層控制和界面管理。
3.QEMU介紹
? ? ? ?Qemu是一個(gè)廣泛使用的開(kāi)源計(jì)算機(jī)模擬器和虛擬機(jī),它能夠獨(dú)立運(yùn)行虛擬機(jī),即根本不需要kvm,kqemu是該軟件的加速軟件。對(duì)于kvm來(lái)說(shuō),并不需要qemu來(lái)做虛擬化處理,只是需要qemu的上層管理界面進(jìn)行虛擬機(jī)控開(kāi)關(guān)至,虛擬機(jī)依舊是由kvm驅(qū)動(dòng)的。
? ? ? ?當(dāng)qemu作為模擬器時(shí),可以在一種架構(gòu)(如x86 PC)下運(yùn)行另一種架構(gòu)(如ARM)下的操作系統(tǒng)和程序。通過(guò)使用動(dòng)態(tài)轉(zhuǎn)換,它可以獲得非常好的性能。
? ? ? ?當(dāng)qemu作為虛擬機(jī)時(shí),QEMU可以使用其他虛擬機(jī)管理程序(如 Xen 或 KVM)來(lái)使用CPU擴(kuò)展(HVM)進(jìn)行虛擬化,通過(guò)在主機(jī)CPU上直接執(zhí)行客戶機(jī)代碼來(lái)獲得接近于宿主機(jī)的性能。
4.Libvirt
(1)Libvirt概述
? ? ? ?Libvirt是KVM的管理工具,當(dāng)然除了KVM它還可以管理其他的Hypervisor,如Xen,VirtualBox等,OpenStack底層也使用了Libvirt。它實(shí)際上是一系列庫(kù)函數(shù)提供給其他技術(shù)調(diào)用,來(lái)管理虛擬機(jī)的。它的設(shè)計(jì)是面向驅(qū)動(dòng)的,對(duì)于任一種虛擬機(jī)技術(shù)都會(huì)開(kāi)發(fā)該技術(shù)對(duì)應(yīng)的驅(qū)動(dòng),這樣不同的虛擬機(jī)技術(shù)就可以使用不同的驅(qū)動(dòng)來(lái)調(diào)用libvirt的接口。
(2)Libvirt組成
Libvirt中包含三個(gè)組件:
? ? ? ?后臺(tái)daemon程序libvirtd:接受和處理API請(qǐng)求;
? ? ? ?API庫(kù):讓其他人可以開(kāi)發(fā)基于Libvirt的高級(jí)工具,如virt-manager,這是個(gè)圖形化的KVM管理工具;
? ? ? ?virsh:KVM命令行工具;
(三)KVM虛擬化平臺(tái)搭建
1. 環(huán)境準(zhǔ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)時(shí)已經(jīng)加入了KVM,我們只需要在命令行模式下啟用KVM即可:
啟用KVM模塊:
[root@localhost ~]# modprobe kvm
[root@localhost ~]# lsmod |grep kvm
? ? ? ?modprobe可載入指定的個(gè)別模塊,或是載入一組相依的模塊。modprobe會(huì)根據(jù)depmod所產(chǎn)生的相依關(guān)系,決定要載入哪些模塊。若在載入過(guò)程中發(fā)生錯(cuò)誤,在modprobe會(huì)卸載整組的模塊。
? ? ? ?執(zhí)行 lsmod 指令,會(huì)列出所有已載入系統(tǒng)的模塊。Linux 操作系統(tǒng)的核心具有模塊化的特性,因此在編譯核心時(shí),務(wù)須把全部的功能都放入核心。您可以將這些功能編譯成一個(gè)個(gè)單獨(dú)的模塊,待需要時(shí)再分別載入。
可以看到是,KVM模塊已經(jīng)被載入Linux中。
4. 安裝kvm所依賴的組件
需要安裝qemu-kvm和libvirt相關(guān)的組件,如下所示:
[root@localhost ~]# yum install -y virt-* libvirt bridge-utils qemu-img qemu-kvm
安裝完成后啟動(dòng)libvirtd后臺(tái)服務(wù):
[root@localhost ~]# service libvirtd start
查看libvirtd后臺(tái)服務(wù)狀態(tài):
systemctl status libvirtd.service
設(shè)置開(kāi)機(jī)自啟動(dòng)libvirtd
systemctl enable libvirtd.service
5. 創(chuàng)建物理橋接設(shè)備并關(guān)聯(lián)網(wǎng)卡
? ? ? ?在第4步中,我們已經(jīng)創(chuàng)建了虛擬網(wǎng)橋virbr0,可以通過(guò)網(wǎng)橋管理命令查看:
brctl show
? ? ? ?接下來(lái),需要將NetworkManager服務(wù)關(guān)閉,開(kāi)機(jī)啟動(dòng)也關(guān)閉:
[root@localhost ~]# chkconfig NetworkManager off
[root@localhost ~]# systemctl stop NetworkManager
[root@localhost ~]# systemctl disable NetworkManager
? ? ? ?接下來(lái),需要?jiǎng)?chuàng)建物理橋接設(shè)備,使用virsh命令行工具創(chuàng)建物理網(wǎng)橋設(shè)備br0并關(guān)聯(lián)網(wǎng)卡ens33到該設(shè)備中:
[root@localhost ~]# virsh iface-bridge ens33 br0
? ? ? ?此時(shí),ens33之前的IP已經(jīng)被放置到br0網(wǎng)橋中了。
? ? ? ?通過(guò)網(wǎng)橋管理來(lái)查看當(dāng)前的網(wǎng)橋設(shè)備:
btctl show
? ? ? ?如果列表中多了br0,則表示橋接成功。
6. 測(cè)試使用KVM安裝虛擬機(jī)
? ? ? ?安裝virt-manager圖形化界面管理虛擬機(jī)
yum -y install virt-manager
? ? ? ?啟動(dòng)virt-manager創(chuàng)建虛擬機(jī):
virt-manager
? ? ? ?從http://download.cirros-cloud.net/中下載一個(gè)很小的Linux鏡像cirrors,上傳到虛擬機(jī)中,使用virt-manager創(chuàng)建虛擬機(jī),并分配內(nèi)存和CPU,可以看到,cirrors已經(jīng)成功在Centos7上生成了一個(gè)新的Linux虛擬機(jī),如下所示:
7. 查看KVM虛擬機(jī)的狀態(tài)
virsh list –all
8. 登錄虛機(jī)測(cè)試網(wǎng)絡(luò)情況
? ? ? ?登錄cirros虛機(jī),查看當(dāng)前虛機(jī)的地址信息,然后嘗試Ping宿主機(jī)以及百度,結(jié)果是成功的。說(shuō)明當(dāng)前的虛機(jī)已經(jīng)和宿主機(jī)連通了,并且也能夠訪問(wèn)外網(wǎng)了。
返回到宿主機(jī)中,通過(guò)網(wǎng)橋管理器查看當(dāng)前宿主機(jī)的網(wǎng)橋情況:
brvtl show
? ? ? ?可以看到,br0是我們生成的物理網(wǎng)橋,它綁定了ens33宿主機(jī)的物理網(wǎng)卡,以及vnet0這個(gè)虛機(jī)的網(wǎng)卡,因此虛機(jī)和宿主機(jī)能夠相互通信。
? ? ? ?注意一點(diǎn),虛擬中的虛擬網(wǎng)卡的名稱是eth0,而不是宿主機(jī)中顯示的vnet0,兩個(gè)名稱是不同的。
9. 遠(yuǎn)程連接管理KVM虛擬機(jī)
? ? ? ?由于KVM(準(zhǔn)確來(lái)說(shuō)是Libvirt)默認(rèn)是不接受遠(yuǎn)程管理的,需要進(jìn)行相關(guān)的配置才能夠連接上KVM虛擬機(jī)。
(四) KVM虛擬化原理
1. CPU虛擬化
? ? ? ?KVM的虛擬化是需要CPU硬件的支持的,之前通過(guò)命令查找硬件的cpu信息中是否有vmx或svm,vmx是Intel的虛擬化,svm是AMD的虛擬化。
? ? ? ?一個(gè)KVM虛擬機(jī)在宿主機(jī)中是一個(gè)qemu-kvm進(jìn)程,與其他的Linux進(jìn)程一樣被調(diào)度,而虛機(jī)中的每一個(gè)虛機(jī)vCPU對(duì)應(yīng)qemu-kvm進(jìn)程的一個(gè)線程。
2.內(nèi)存虛擬化
? ? ? ?KVM通過(guò)內(nèi)存虛擬機(jī)化共享物理系統(tǒng)內(nèi)存,動(dòng)態(tài)分配給虛機(jī),為了在一臺(tái)機(jī)器上運(yùn)行多個(gè)虛機(jī),KVM需要實(shí)現(xiàn)VA(虛擬內(nèi)存)->PA(物理內(nèi)存)->機(jī)器內(nèi)存(MA)直接的地址轉(zhuǎn)換。虛機(jī)的OS控制從VA到PA的轉(zhuǎn)換,KVM負(fù)責(zé)PA到MA。
3.存儲(chǔ)虛擬化
? ? ? ?KVM的存儲(chǔ)虛擬化通過(guò)存儲(chǔ)池(Storage Pool)和卷(Volume)來(lái)管理的。存儲(chǔ)池是宿主機(jī)上的一塊空間,是多種類型的,卷是池中的一塊空間,宿主機(jī)將卷分配給虛機(jī),卷在虛機(jī)中就是一塊硬盤(pán)。
? ? ? ?文件目錄是最常用的存儲(chǔ)池類型,KVM將宿主機(jī)目錄/var/lib/libvirt/images作為默認(rèn)的存儲(chǔ)池,而該存儲(chǔ)池中的卷就是一個(gè)個(gè)的文件了,每一個(gè)文件對(duì)于虛擬來(lái)說(shuō)就是一個(gè)磁盤(pán)。KVM所有可用的存儲(chǔ)池都定義在宿主機(jī)的/etc/libvirt/storage目錄下,每一個(gè)池子有一個(gè)XML文件,默認(rèn)有一個(gè)default.xml文件,其中的默認(rèn)目錄就是/var/lib/libvirt/images。
? ? ? ?使用文件作為卷的優(yōu)點(diǎn)是:存儲(chǔ)方便,移植性號(hào),可復(fù)制,可遠(yuǎn)程訪問(wèn)。卷不一定都放在宿主機(jī)本地文件系統(tǒng)中,也可以存儲(chǔ)在通過(guò)網(wǎng)絡(luò)連接的遠(yuǎn)程文件系統(tǒng),這樣卷就能夠在多個(gè)宿主機(jī)之間共享,便于虛機(jī)在不同宿主機(jī)之間進(jìn)行熱遷移。
KVM支持多種卷的文件格式,如:
? ? ? ?raw是默認(rèn)格式,原始磁盤(pán)鏡像格式,移植性號(hào),性能好,大小固定;
? ? ? ?qcow2,cow表示copy on write寫(xiě)時(shí)復(fù)制,節(jié)省磁盤(pán)空間,支持多快照;
? ? ? ?vmdk是VMWare的虛擬磁盤(pán)格式,即VMWare的虛機(jī)可以直接在KVM上運(yùn)行;
4.網(wǎng)絡(luò)虛擬化
? ? ? ?網(wǎng)絡(luò)虛擬化中最重要的是Linux Bridge和Vlan。
(1) Linux Bridge
? ? ? ?宿主機(jī)中有一塊連接外網(wǎng)的物理網(wǎng)卡eth0,如何讓虛機(jī)VM1訪問(wèn)外網(wǎng)。選擇的方案是給VM1分配一個(gè)虛擬網(wǎng)卡vnet0,通過(guò)Linux Bridge br0將eth0和vnet0連接起來(lái),這樣虛機(jī)和宿主機(jī)就通過(guò)Linux Bridege連接起來(lái)了。
? ? ? ?Linux Bridge是Linux上用來(lái)做二層交換的設(shè)備,即二層交換機(jī),多個(gè)網(wǎng)絡(luò)設(shè)備可以連接到同一個(gè)Linux Bridge上,當(dāng)某個(gè)設(shè)備收到數(shù)據(jù)包時(shí),Linux Bridge會(huì)將數(shù)據(jù)轉(zhuǎn)發(fā)給其他設(shè)備。
? ? ? ?注意,在KVM中我們會(huì)看到一個(gè)virbr0,這是默認(rèn)創(chuàng)建的一個(gè)Bridge,它的作用是為連接其上的虛擬網(wǎng)卡提供NAT訪問(wèn)外網(wǎng)的功能,virbo0默認(rèn)分配了一個(gè)IP192.168.122.1,并通過(guò)dnsmasql為連接其上的其他虛擬網(wǎng)卡提供DHCP服務(wù)。注意,使用NAT服務(wù)的虛機(jī)可以訪問(wèn)外網(wǎng),但是外網(wǎng)無(wú)法訪問(wèn)虛機(jī),因?yàn)镹AT會(huì)將虛機(jī)發(fā)出網(wǎng)絡(luò)包的源地址轉(zhuǎn)換為宿主機(jī)的IP地址,不像網(wǎng)橋,虛機(jī)通過(guò)自己的IP直接和外網(wǎng)通信。
(2) VLAN
? ? ? ?LAN表示本地局域網(wǎng),通常使用集線器和交換機(jī)來(lái)連接LAN中的PC,一個(gè)LAN表示一個(gè)廣播域,即LAN中的所有成員都會(huì)收到任一個(gè)成員發(fā)出的廣播包。
? ? ? ?VLAN表示虛擬的LAN,一個(gè)帶有VLAN功能的交換機(jī)能夠?qū)⒆约旱亩丝趧澐殖龆鄠€(gè)LAN,即隔離出了多個(gè)廣播域,每個(gè)域的二層廣播包(arp)是無(wú)法跨越每個(gè)廣播域的邊界的,但是在三層上是可以通過(guò)路由器讓不同的廣播域相通的。
? ? ? ?通常交換機(jī)的端口有兩種配置模式:Access和Trunk。Access端口被打上了VLAN的標(biāo)簽,表明該端口屬于哪個(gè)VLAN,不同的VLAN用VLAN ID來(lái)區(qū)分,Access端口都是和計(jì)算機(jī)的網(wǎng)卡直連的,這樣從網(wǎng)卡出來(lái)的數(shù)據(jù)包流入Access端口后就能打上VLAN的標(biāo)簽。Trunk端口能夠讓不同的VLAN進(jìn)行通信。
(3) KVM是如何實(shí)現(xiàn)VLAN的?
? ? ? ?eth0是宿主機(jī)的物理網(wǎng)卡,宿主機(jī)通過(guò)軟件實(shí)現(xiàn)一個(gè)虛擬交換機(jī),在其上定義了一個(gè)VLAN10,通過(guò)VLAN設(shè)備eht0.10連接到虛擬網(wǎng)橋brvlan10上,同時(shí)連接的還有虛機(jī)VM1的虛擬網(wǎng)卡vnet0,這樣vnet0,brvlan10,eth0.10相當(dāng)于都接入了VLAN10的Access端口上,都屬于VLAN10了,連接到虛擬網(wǎng)橋brvlan10上的設(shè)備都自動(dòng)加入了VLAN10中,而eth0就是一個(gè)Trunk端口。
? ? ? ?如果添加新的VLAN20網(wǎng)段到eth0上,那么兩個(gè)VLAN區(qū)域的網(wǎng)絡(luò)是隔離的,因?yàn)楫?dāng)VLAN10中的VM1向VLAN20中的VM2發(fā)送請(qǐng)求時(shí),首先要獲取VM2的MAC地址,因此在VLAN10中廣播arp請(qǐng)求包,該請(qǐng)求包無(wú)法穿透VLAN10區(qū)域,因此獲取不到VM2的MAC地址,也就無(wú)法與VM2通信。
(4) 虛擬交換機(jī)的實(shí)現(xiàn)
? ? ? ?交換機(jī)包含兩種功能,一種是交換,另一種是隔離。Linux的VLAN設(shè)備的是隔離功能,將不同的VLAN網(wǎng)段隔離起來(lái);Linux Bridge實(shí)現(xiàn)的是交換功能,將同一個(gè)VLAN的子設(shè)備掛載到一個(gè)Bridge上,設(shè)備之間就可以交換數(shù)據(jù)了。
? ? ? ?因此,Linux Bridge + Vlan實(shí)現(xiàn)了虛擬交換機(jī)的功能。