虛擬機

2021-02-07 coderFan
常見名詞

宿主機:Host/hypervisor

GPA:Guest 物理地址

GVA:Guest 虛擬地址

HPA:Host的物理地址,真正的物理地址

虛擬化中的網絡

在Linux中實現虛擬網絡的方法中比較常用的工具有兩個:bridge-utils 和 openvswitch,它們創建的虛擬網絡設備是不能相互使用的,比如:bridge-utils創建的橋設備,openvswitch是無法識別的

CPU虛擬化模擬

模擬就是不管ring3還是ring0都需要進行翻譯(Guest到Host的過程,因為Host才是運行硬體上的)。這種效率比較慢

虛擬

虛擬就是說,非特權的指令直接運行在os的ring3上,僅僅針對特權指令進行翻譯。這種效率有所提升,因為只需要翻譯特權指令。

常見的方式

內存虛擬化

進程:看到的是線性地址,簡稱為VA;

內核:看到的是物理地址,簡稱為PA。

比較複雜的是mmu。

MMU的虛擬化

上圖為虛擬機中mmu尋址過程,我們可以看到GVA通過虛擬的mmu轉到HPA,節省了,GPA到HPA的轉換,但是我們發現這個沒用使用tlb,因為tlb的本質是緩存VA到PA的表。因此我們還需要虛擬化tlb

TLB的虛擬化

目的是避免虛擬機切換時,清空tlb緩存,因此引入了Tagged TLB技術。當然cpu要支持

IO虛擬化模擬

完全使用軟體來模擬真實硬體,比如網卡。

半虛擬化透傳(IO-through)

Intel:VT-d技術,是基於北橋的硬體輔助虛擬化技術。

虛擬化實現的兩種方式Type-II

在Host主機上,在安裝虛擬機,比如VM Ware、kvm、virtualbox

Type-I

直接運行在硬體上。比如xen、vmware ESX

Intel硬體輔助的虛擬化

CPU:vt-x,EPT,tagged-TLB

IO/CPU混合:IO–>vt-d,IOV

00:0C:29:0D:0A:F9

細分虛擬化分類

我們可以使用命令行brctl的方式來實現:

需要注意的是:我們必須要啟用network服務,而不是networkManager服務

安裝yum install bridge*

brctl addbr name如br0

ifconfig eth0/ens33 0 up(去除原來網卡上的ip)

brctl addif br0 eth0

ifconfig br0 IP/NETMASK up

route add default gw GW

brctl stp br0 on:stp主要是檢查當前是否存在環路的

ip link set dev br0 down/on:表示該設備是否啟動

xen虛擬化xen組成部分

Xen Hypervisor:Xen的虛擬化監視器(最核心的組成),直接運行在硬體的基礎上。提供給其他虛擬機接口。其主要的任務是:

Dom0:特權域,他是運行在Xen Hypervisor上的一個特殊的虛擬機。支持網絡設備和塊設備的半虛擬化。

DomU:非特權域。根據其虛擬化方式實現,有多種實現方式。

Xen的PV技術Xen的HVM技術Dom0和DomU配置不一樣的

Xen的PV on HVM技術Xen的工具棧/控制臺

xm/xend:在xen hypervisor的Dom0中要啟動xend服務

xl:基於libxenlight提供的輕量級的命令行工具

xe/xapi:提供了對xen管理的api,因此多用於cloud環境,常見的如Xen Server,XCP

virsh/libvirt:做成了一個通用的工具

XenStoreCentos對Xen的支持如何在Centos6.6上使用Xen方法一

編譯3.0以上版本的內核,啟動對Dom0的支持

編譯xen

方法二KVM:Kernel-based Virtual Machine,Qumranet公司KVM的組件

主要分為兩類:

KVM的特性內存管理

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

支持使用Huge Page

支持使用Intel EPT或者AMD RVI技術完成內存地址映射:由原先的GVA—>VPA—>HPA,藉助EPT/RVI技術GVA直接HPA轉換

支持KSM(kernel same-page merging)

硬體支持存儲

本地存儲

DAS/NAS

分布式存儲(如 glusterfs)

實時遷移KVM局限性一般局限性

最好是所有虛擬機的物理核心數不要超過物理核心總數

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

MAC地址

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

實時遷移有眾多限制

性能局限性

KVM的工具棧

virsh的本地模式和遠程模式

QEMU簡介

qemu是一個廣泛應用在開源計算機仿真器和虛擬機。

當作為仿真器時,可以在一種架構(如PC機)下運行另一種架構(如ARM)下的os和程序,而通過動態轉化,其可以獲得很高的運行效率;

當作為一個虛擬機時,qemu可以通過直接使用真機的系統資源,讓虛擬資源能夠獲得接近於物理機的性能表現,qemu支持xen或者kvm模式下的虛擬化,當使用kvm時,qemu可以虛擬x85、伺服器和嵌入式powerpc,以及s390的系統。

qemu在運行於主機架構相同的目標架構時,可以使用kvm。例如當在一個x86兼容的處理器上運行qemu-system-x86時,可以利用KVM加速為宿主機和客戶端提供更好的性能。

主要用到以下幾個部分

◇ 標準選項;
◇ USB選項;
◇ 顯示選項;
◇ i386平臺專用選項;
◇ 網絡選項;
◇ 字符設備選項;
◇ 藍牙相關選項;
◇ Linux系統引導專用選項;
◇ 調試/專家模式選項;
◇ PowerPC專用選項;
◇ Sparc32專用選項;qemu-kvm命令使用格式為「qemu-kvm [options][disk_image]」,其選項非常多,不過,大致可分為如下幾類。

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個數上限;一個插槽socket對應一個物理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四個;

writeback

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,這個意思是重啟之後d就不在其作用,這個目的是啥,比如你用光碟機加載系統鏡像進行安裝,安裝之後就不應該再讓他啟動了,否則一直死循環安裝os了

qemu-kvm的顯示選項

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

◇ -nographic:默認情況下,qemu使用SDL來顯示VGA輸出;而此選項用於禁止圖形接口,此時,qemu類似一個簡單的命令行程序,其仿真串口設備將被重定向到控制臺;
◇ -curses:禁止圖形接口,並使用curses/ncurses作為交互接口;
◇ -alt-grab:使用Ctrl+Alt+Shift組合鍵釋放滑鼠;
◇ -ctrl-grab:使用右Ctrl鍵釋放滑鼠;
◇ -sdl:啟用SDL,simple directMedia Layer,C語言開發,跨平臺且開源多媒體程序文件;
◇ -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[,…]]]:Virtual Network Computing,使用RFB(Remote FrameBuffer)協議遠程控制另外主機。默認情況下,qemu使用SDL顯示VGA輸出;使用-vnc選項,可以讓qemu監聽在VNC上,並將VGA輸出重定向至VNC會話;使用此選項時,必須使用-k選項指定鍵盤布局類型;其有許多子選項,具體請參照qemu-kvm的手冊;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

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: 顯示幫助信息
qemu-kvm -m 128 -smp 2 -name "test" -hda cirros-0.3.0-i386-disk.img -vnc 192.168.147.130:0 -monitor stdio

i386平臺專用選項

◇ -no-acpi:禁用ACPI功能,GuestOS與ACPI出現兼容問題時使用此選項;
◇ -balloon none:禁用balloon設備;
◇ -balloon virtio[,addr=addr]:啟用virtio balloon設備;

網絡屬性相關選項

網絡屬性相關選項用於定義網絡設備接口類型及其相關的各屬性等信息。這裡只介紹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、i82551、i82557b、i82559er、ne2k_isa、pcnet、rtl8139、e1000、smc91c111、lance及mcf_fec等;不過,不同平臺架構上,其支持的類型可能只包含前述列表的一部分,可以使用「qemu-kvm -net nic,model=?」來獲取當前平臺支持的類型;nic主要用於管理網卡前半段
◇ -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可分別用來禁止執行腳本;主要用於管理網卡後半段

[root@xiaxuefei etc]# cat qemu-ifup
#!/bin/bash
bridge=br0

if [ -n 「$1」 ]; then
ip link set dev $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo 「Error:no interface specified」
exit 1
fi

[root@xiaxuefei etc]# cat qemu-ifdown
#!/bin/bash
bridge=br0

if [ -n 「$1」 ]; then
ip link set dev $1 down
brctl delif $bridge $1
exit 0
else
echo 「Error:no interface specified」
exit 1
fi

-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

brctl addbr br0
brctl addif br0 eth0

brctl addbr br1

隔離模型演示

qemu-kvm -m 128 -smp 2 -name 「test1」 -hda cirros-0.3.0-i386-disk.img -net nic,macaddr=52:54:00:11:34:56 -net tap,ifname=xxf1.0,script=/etc/qemu-ifup
VNC server running on `::1:5901』

qemu-kvm -m 128 -smp 2 -name 「test1」 -hda cirros-0.3.0-i386-disk.img -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=xxf0.0,script=/etc/qemu-ifup
VNC server running on `::1:5900』

登陸進去之後,進行配置ip

NAT模型

NAT模型與路由模型的通信機制基本一致,唯一不同的就是,NAT模型可以使虛擬機直接與外部網絡進行通信;即只需要在NAT模型中,在宿主機SNAT地址轉換,將虛擬機的源地址IP轉換為物理網卡的IP位址,發送報文至外部網絡的主機;外部網絡的主機收到報文後構建的響應報文的目標IP位址,為宿主機的物理網卡的IP位址,而後宿主機在將報文發送至虛擬機,實現了虛擬機與外部網絡的通信。

路由模型演示

創建兩塊虛擬網卡:ip link add veth1.0 type veth peer veth1.1

激活這兩塊網卡(未激活時,需要使用ifconfig -a來查看):

[root@xiaxuefei etc]# ip link set dev veth0 up
[root@xiaxuefei etc]# ip link set dev veth1.0 up

我們將veth1.0添加到網橋上:[root@xiaxuefei etc]#brctl addif br0 veth1.0,剩下的一端放在物理機上

給veth0添加一個地址:[root@xiaxuefei etc]# ifconfig veth0 192.168.2.222/24

要ping通物理機,需要在虛擬機中配置網關:route add default gw 192.168.2.222

如果我們需要ping其他的主機,此時需要打開網絡的轉發功能。但是我們知道此時他是沒法回包的,要想回包,我們可以使用nat服務,也就是配置iptables。

需要注意的是,這樣的操作並不會成功。因為虛擬設備太多了。所以我們把veth這個虛擬網卡給去掉,直接用br0就行。

橋接模型演示

注意:刪除某塊網卡上的地址:ip addr del ip地址/子網掩碼 dev 網卡設備名。

橋接模型不同於隔離模型、路由模型和NAT模型;在模型下,宿主機會虛擬出一塊網卡(真正處理到host的報文)作為該宿主機的通信網卡,而宿主機的物理網卡則成為橋接設備(也可稱為交換機,工作在混雜模式,也就是不管發給虛擬機中的guest還是host,都接下來,他會根據mac地址發現不同的主機),此時,虛擬機相當於宿主機所在的區域網內單獨的一臺主機,它宿主機的地位是同等的,沒有依存關係。

安裝yum install bridge*

brctl addbr name如br0

ip addr del 192.168.147.130 dev eth0;brctl addif br0 eth0;ip addr add 192.168.147.130/24 dev br0;

ip link set dev br0 down/on:表示該設備是否啟動

使用ifconfig查看:

[root@xiaxuefei ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:50:56:3C:0C:B2
inet addr:192.168.147.130 Bcast:0.0.0.0 Mask:255.255.255.0
inet6 addr: fe80::f895:98ff:fe11:36a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:764 errors:0 dropped:0 overruns:0 frame:0
TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:27498 (26.8 KiB) TX bytes:2280 (2.2 KiB)

eth0 Link encap:Ethernet HWaddr 00:50:56:3C:0C:B2
inet addr:192.168.147.130 Bcast:192.168.147.255 Mask:255.255.255.0
inet6 addr: fe80::250:56ff:fe3c:cb2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:32384 errors:0 dropped:0 overruns:0 frame:0
TX packets:6938 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2848247 (2.7 MiB) TX bytes:1219867 (1.1 MiB)

發現原先的物理網卡的IP去掉了

此時如果我們給虛擬機中的eth0添加一個192.168.147.x的ip,他應該是能和host進行通信的。

KVM網絡總結

隔離模型:在host創建一個虛擬交換機(橋設備),每個虛擬機的tap(後半段)設備直接添加至虛擬交換機上

br0,br1,br2都代表一個個的交換機。如果他們都在同一個網段,同一個網絡,那麼我們只需要用網線將br,b1,b2連接起來即可,也就是創建兩個虛擬接口,串起來;

但是如果他們不再一個網絡,此時我們就需要藉助一個路由器將他們連接起來,此時br0,br1,br2需要進行報文轉發,此時我們就需要給他們配置地址,作為網關。

路由模型:

NAT模型

` nat腳本

添加腳本

[root@C65-201 ~]# vim /etc/qemu-natup
#!/bin/bash
bridge=」br-in」
net=」192.168.1.0/24」 // 網絡地址
ifaddr=192.168.1.254 //物理網卡ip

checkbr() {
if brctl show | grep -i 「^$1」; then
return 0
else
return 1
fi
}

initbr() {
brctl addbr $bridge
ip link set $bridge up
ip addr add $ifaddr dev $bridge
}

enable_ip_forward() {
sysctl -w net.ipv4.ip_forward=1
}

setup_nat() {
checkbr $bridge
if [ $? -eq 1 ]; then
initbr
enable_ip_forward
iptables -t nat -A POSTROUTING -s $net ! -d $net -j MASQUERADE(地址偽裝)
fi
}

if [ -n 「$1」 ]; then
setup_nat
ip link set $1 up
brctl addif $bridge $1
exit 0
else
echo 「Error: no interface specified.」
exit 1
fi

刪除腳本

[root@C65-201 ~]# vim /etc/qemu-natdown
#!/bin/bash
bridge=」br-in」
remove_rule() {
iptables -t nat -F
}

isalone_bridge() {
if ! brctl show | awk 「/^$bridge/{print $4}」 | grep 「[^[:space:]]」 &> /dev/null; then
ip link set $bridge down
brctl delbr $bridge
remove_rule
fi
}

if [ -n 「$1」 ];then
ip link set $1 down
brctl delif $bridge $1
isalone_bridge
exit 0
else
echo 「Error: no interface specified.」
exit 1
fi

保存後給該腳本添加執行權限並檢查語法

[root@C65-201 ~]# chmod +x /etc/{qemu-natup,qemu-natdown} # 添加執行權限
[root@C65-201 ~]# bash -n /etc/qemu-natup # 檢查語法是否有誤
[root@C65-201 ~]# bash -n /etc/qemu-natdown # 檢查語法是否有誤
`

橋接模型:缺點是內部的虛擬機直接暴露在網際網路上

https://blog.51cto.com/jerry12356/2132221

VLAN

VLAN有個數限制,4096個,因此我們需要VXLAN更牛逼的技術。

VLAN被稱之為虛擬區域網,目的是為了隔離廣播報文,劃分不同的網絡。我們知道路由器天生的可以幹這事,但是路由器的接口太少。

交換機屬於二層設備,默認是不能隔離廣播域的。

VLAN劃分方法

基於MAC地址

基於交換機埠

基於IP實現

基於用戶實現

交換機的接口類型linux內核支持vlan

linux可以作為一個支持vlan的交換機

查看並啟用vlan模塊

使用專門的配置工具來進行配置

yum info vconfig

yum install -y vconfig

ls /proc/net/vlan/

vconfig –help

vlan間通信/路由

注意:

跨物理機的vlan技術,需要物理交換機也支持tagged vlan技術

gre

通用路由封裝,是一種隧道技術,我們之前說lvs時候,提到過ip前面在加個ip,而gre不僅可以承載一個ip,還可以承載幀信息(因為我們知道物理幀是在本地網絡通信的,而通過gre可以將這個物理幀傳播到對端中去),工作在ip層。

VXLAN

類似gre功能,先關閉gre,本身也支持隧道。

KVM的安裝

確保CPU支持HVM

egrep –color=auto 『(vmx|svm)』 /proc/cpuinfo,vmx是intel的,svm是amd的

裝載模塊

modprobe kvm
modprobe kvm-intel

驗證

ls /dev/kvm是否存在該文件

安裝virt

KVM虛擬機的創建

下載磁碟文件

https://github.com/cirros-dev/cirros/releases/download/0.3.0/cirros-0.3.0-i386-disk.img

使用qemu-kuv工具啟動虛擬

qemu-kvm -m(內存大小) 128 -smp(CPU架構) 2(CPU個數) -name(虛擬機名字) 「test」 -hda(硬碟類型) cirros-0.3.0-i386-disk.img

使用-hda來指定磁碟

使用-drive來指定磁碟映像文件,這個參數更多

qemu-kvm -m(內存大小) 128 -smp(CPU架構) 2(CPU個數) -name(虛擬機名字) 「test」 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio(這個是IO的半虛擬化),media=disk,cache=writeback,format=qcow2

通過cdrom啟動winxp

qemu-kvm -m(內存大小) 128 -smp(CPU架構) 2(CPU個數) -sockets=1,cores=2,threads=2 -name(虛擬機名字) 「winxp」 -drive file=/images/kvm/winxp.img,if=ide,media=disk,cache=writeback,format=qcow2 -drive file=/images/kvm/winxp_ghost.iso,media=cdrom

使用默認的VNC客戶端來進行連接,注意這個VNC需要圖形桌面的執行

ss -tnl
yum install tiger-vnc

1
2
3

yum install tigervnc
rpm -ql tigervnc
vncviewer :5900

登陸

qemu-kvm -m 128 -smp 2 -name 「test」 -hda cirros-0.3.0-i386-disk.img -vnc 192.168.147.130:0 -monitor stdio

REHL實例

2.5.6.1.6 一個使用示例

下面的命令創建了一個名為rhel5.8的虛擬機,其RAM大小為512MB,有兩顆CPU的SMP架構,默認引導設備為硬碟,有一個硬碟設備和一個光碟機設備,網絡接口類型為virtio,VGA模式為cirrus,並啟用了balloon功能。

qemu-kvm -name 「rhel5.8」 -m 512 \

-smp 2 -boot d
-drive file=/VM/images/rhel5.8/hda,if=virtio,index=0,media=disk,format=qcow2
-drive file=/isos/rhel-5.8.iso,index=1,media=cdrom
-net nic,model=virtio,macaddr=52:54:00:A5:41:1E
-vga cirrus -balloon virtio

需要注意的是,上述命令中使用的硬碟映像文件/VM/images/rhel5.8/hda需要事先使用qemu-img命令創建,其具體使用格式請見下節介紹。

在虛擬機創建並安裝GuestOS完成之後,可以免去光碟機設備直接啟動之。命令如下所示。

qemu-kvm -name 「rhel5.8」 -m 512 \

-smp 2 -boot d
-drive file=/VM/images/rhel5.8/hda,if=virtio,index=0,media=disk,format=qcow2
-net nic,model=virtio,macaddr=52:54:00:A5:41:1E
-vga cirrus -balloon virtio

QUEM-KVM

qemu-kvm不能誇機器,因此我們可以通過agent來實現。

通過PXE網絡接口的方式來安裝啟動centos

qemu-img

qemu-img是qemu用來實現磁碟映像管理的工具組件,其有許多子命令,分別用於實現不同的管理功能,而每一個子命令也都有一系列不同的選項。其使用語法格式為「qemu-img subcommand [options]」,支持的子命令如下。

◇ create:創建一個新的磁碟映像文件;
◇ check:檢查磁碟映像文件中的錯誤;
◇ convert:轉換磁碟映像的格式;
◇ info:顯示指定磁碟映像的信息;
◇ snapshot:管理磁碟映像的快照;
◇ commit:提交磁碟映像的所有改變;
◇ rbase:基於某磁碟映像創建新的映像文件;
◇ resize:增大或縮減磁碟映像文件的大小;

使用create子命令創建磁碟映像的命令格式為「create [-f fmt][-o options] filename [size]」,例如下面的命令創建了一個格式為qcow2的120G的稀疏磁碟映像文件。

qemu-img create -f qcow2 /VM/images/rhel5.8/hda 120G

Formatting 『/VM/images/rhel5.8/hda』, fmt=qcow2 size=128849018880 encryption=off cluster_size=65536

virtio半虛擬化

HVM:硬體輔助的虛擬化CPU

IO半虛擬化分成兩段

virtio:虛擬隊列,virt-ring,virtio如何區分後端多個虛擬機的報文呢?此時就需要一個環形隊列。

transport:

後端處理程序(virtio backend drivers):在qemu中實現

前半段驅動(virtio前半段,出現在虛擬機中):virtio-blk,virtio-net,virtio-pci,virtio-balloon,virtio-console

又分為三層:

virtio-balloon:動態調整虛擬機中的GuestOS的內存

virtio-net:其依賴於GuestOS中的驅動,及qemu中的後端程序

GuestOS:virtio_net.ko

Qemu:qemu-kvm -net nic,model=?

如qemu-kvm -net nic,model=virtio

Host中的GSO,TSO:

關掉可能會提升性能:

ethtool -K $IF gso off

ethtool -K $IF tso off

ethtool -K $IF

vhost-net:用於取代工作於用戶空間的qemu中為virtio-net實現的後端驅動(因為原先是使用qemu來實現的)以實現性能提升的驅動

-net tap[,vnet_hdr=on|off]【,vhost=on|off]

qemu-kvm -net tap,vnet_hdr=on,vhost=on

virtio-blk:其依賴於GuestOS中的驅動,以及qemu中的後端驅動

kvm-clock:半虛擬化的時鐘

grep -i 「paravirt」 /boot/config-2.6.32-504.el6.x86_64

config_paravirt_guest=y

config_paravirt=y

config_paravirt_clock=y

vm的遷移

libvirtio工具

yum -y install qemu-kvm libvirt python-virtinst virt-viewer virt-manager bridge-utils

虛擬化網絡linux內核namespace

文件系統隔離

網絡隔離:主要用於網絡資源的隔離,包括網絡設備(網卡)/ip地址,IP路由表,防火牆,/proc/net,/sys/class/net以及套接字等

IPC隔離:

用戶和用戶組隔離:這個隔離性並不好,連docker都不用

PID隔離:對名稱空間內的PID重新編號,兩個不同的名稱空間可以使用相同的PID

UTS隔離:Unix Time-sharing System,提供主機名稱和域名的隔離

cgroup三個更強大的組件Linux Network Namespace專題–netns

netns在內核實現,其控制功能由iproute所提供的netns這個OBJECT來提供

centos6.6所提供的iproute不具有此OBJECT,需要依賴OpenStack Icehouse的EPEL源來提供

使用netns

使用虛擬乙太網卡

ip link add FRONTEND-NAME type veth peer name BACKEND-NAME

openvswitch簡稱ovs特性

基於C語言研發的一款虛擬交換機軟體,主要適用於虛擬化技術

支持802.1q協議、trunk、access

支持網卡綁定技術–NIC bonding,支持網卡的負載均衡

支持NetFlow、sFlow,支持監控技術

支持Qos的配置及策略

支持GRE(通用路由封裝技術)

支持vxlan

支持OpenFlow及其擴展技術

支持基於linux內核完成高性能轉發

組成

ovs-vswitched:後臺服務進程,實現數據報文交換功能,和linux內核兼容模塊一通實現基於流的交換技術

ovsdb-server:ovs自帶的資料庫,主要保存了整個ovs的配置信息,例如接口,交換和vlan等

ovs-dpctl

ovs-vsctl:用於獲取或更改ovs-switched的配置信息,其修改操作會保存至ovsdb-server中

ovs-dbmonitor

ovs-controller

ovs-ofctl

ovs-pki

工具

yum install -y openvswitch*

rpm -ql openvswitch

service openvswitch start:啟動服務

具體案例基於單節點中kvm配置的內部網絡模型1

安裝qemu-kvm,並進行掛載

搭建內網的兩個kvm,讓他們放在同一個交換機也就是橋上,通過腳本的方式:但是首先確保創建了br-in橋

/etc/qemu-ifup

1
2
3
4
5
6
7
8
9
10
11
12
13

[0 root@xiaxuefei /etc]# cat qemu-ifup
#! /bin/bash
#這個是內部使用的橋
bridge=br-in
brctl addbr br-in
if [ -n "$1"]; then
ip link set $1 up
brctl addif $bridge $1
[ $? -eq 0] && exit 0 || exit 1
else
echo "Error:no interface specified!"
exit 1
fi

給shell添加執行權限並進行驗證

1
2

[0 root@xiaxuefei /etc]# chmod +x qemu-ifup
[0 root@xiaxuefei /etc]# bash -n qemu-ifup

啟動兩個kvm虛擬機:這次我們讓他們在後臺運行著

1
2
3
4
5
6
7

虛擬機1:qemu-kvm -m 128 -smp 1 -name vm1 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:cc -net tap,ifname=vif1.0,script=/etc/qemu-ifup --nographic --daemonize
VNC server running on `::1:5900'

虛擬機2:qemu-kvm -m 128 -smp 1 -name vm2 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:dd -net tap,ifname=vif1.1,script=/etc/qemu-ifup --nographic --daemonize
VNC server running on `::1:5900'

#因為我們需要進行配置,所以我們不能讓他工作在後臺,使用--nographic

創建路由器

ip netns add r1

先創建內部網的

用於連接路由器到內部橋的一對網卡

ip link add rin-router type veth peer name rin-switch

激活網卡

ip link set rin-router up

ip link set rin-switch up

將switch那一頭放到橋上,這一段不需要路由器

1

brctl addif br-in rin-switch

將router那一頭放到路由器

ip link set rin-router netns r1

給路由器中的網卡也就是rin-router改個名字eth0,並激活

1
2
3

ip netns exec r1 ip link set rin-router name eth0

ip netns exec r1 ip link set eth0 up

給她一個內網地址

ip netns exec r1 ifconfig eth0 10.0.1.254/24 up

去兩個kvm虛擬機中,分別設置ip地址為10.0.1.1/24和10.0.1.2/24

將兩個虛擬機的網關指向路由器那邊的地址

route add default gw 10.0.1.254

創建外部網的

用於連接路由器到外部橋的一對網卡

ip link add rex-router type veth peer name rex-switch

激活網卡

ip link set rex-router up

ip link set rex-switch up

將switch那一頭放到物理橋上,這一段不需要路由器

1

brctl addif br-ex rex-switch

將router那一頭放到路由器

ip link set rex-router netns r1

給路由器中的網卡也就是rex-router改個名字eth1,並激活

1
2
3

ip netns exec r1 ip link set rex-router name eth1

ip netns exec r1 ip link set eth1 up

給她一個外網地址,就是可以上網的

ip netns exec r1 ifconfig eth1 192.168.147.150/24 up

此時我們虛擬機的節點可以訪問外網,但是呢,外網回不來,因為外網不知道有內網這個網站。此時我們需要給路由器進行nat配置。

ip netns exec r1 iptables -t nat -A POSTROUTING -s 10.0.1.0/24 ! -d 10.0.1.0/24 -j SNAT –to-source 192.168.147.150

如果兩臺虛擬機的ip是動態設置的,怎麼辦了?簡單,我們只需要在路由器中運行一個dhcp伺服器即可

ip netns exec r1 dnsmasq –dhcp-range 10.0.1.100,10.0.1.120 –dhcp-option=option:router,10.0.1.254

跨節點中的虛擬機通信

node1和node2,node3節點,我們不要求 node2,node3能訪問外部網絡,node1能對外連上網。要上網的話,只能通過node1來。

node2和node3屬於計算節點

node2和node3配置:

eth0:用於內部管理的

eth4:用於兩個節點內vm通信用的

修改網卡別名:

/etc/udev/rules.d.70-persistent-net.rules

modprobe -r e1000:移除原先的網卡模塊

modprobe e1000:重新加載進來

此時我們給兩個節點eth0分別配置ip

node2:192.168.10.7

node3:192.168.10.8

安裝openvswtich

yum install -y openvswitch*

rpm -ql openvswitch

service openvswitch start:啟動服務

node1配置

eth0:192.168.10.6,

注意eth0隻是內網命令用的,不需要網關

node1的另外一個網卡eth4是連上網際網路的。

node2和node3需要能上網,必須要把網關指向node1中的eth0,並且還需要配上iptables規則。這不就是一個nat模型嗎?哈哈

1
2
3
4
5
6
7
8
9
10
11

[root@xiaxuefei ~]# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

記得關閉NetworkManager服務

1
2
3
4
5

service NetworkManager stop 結束進程

chkconfig NetworkManager off 關閉開機自啟

service network restart 重啟網絡服務

啟動kvm,注意此時我們不再用brctl來創建橋

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

#確保創建了橋
ovs-vsctl add-br br-in

[root@xiaxuefei ~]# cat /etc/qemu-ifup
#!/bin/bash
bridge=br-in
if [ -n "$1" ]; then
ip link set dev $1 up
sleep 1
ovs-vsctl add-port $bridge $1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo "Error:no interface specified"
exit 1
fi


[root@xiaxuefei ~]# cat /etc/qemu-ifdown
#!/bin/bash
bridge=br0

if [ -n "$1" ]; then
ip link set dev $1 down
ovs-vsctl del-port $bridge $1
exit 0
else
echo "Error:no interface specified"
exit 1
fi
[root@xiaxuefei ~]#


虛擬機1:qemu-kvm -m 128 -smp 1 -name vm1 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:cc -net tap,ifname=vif0.0,script=/etc/qemu-ifup --nographic --daemonize
VNC server running on `::1:5900'

虛擬機2:qemu-kvm -m 128 -smp 1 -name vm2 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:dd -net tap,ifname=vif0.1,script=/etc/qemu-ifup --nographic --daemonize
VNC server running on `::1:5900'

設置這兩個kvm處於不同的vlan,在這裡我們使用基於tag的方式來進行劃分

修改tag

1
2
3
4

#vlan的id是0到4095吧,默認為0,此時他們是ping不通的.要進行通信怎麼辦了?
#1.添加路由
#2.或者設置第二個也為10,在同一個vlan中
ovs-vsctl set port vif0.0 tag=10

跨交換機的不同vlan通信

在創建一個新的交換機

ovs-vsctl add-br br-or

複製qemu-ifup和qemu-ifdown文件,以創建新的虛擬機

1
2

[root@xiaxuefei etc]# cp qemu-ifup qemu-ifup2
[root@xiaxuefei etc]# cp qemu-ifdown qemu-ifdown2

在創建一個虛擬機實例

1

虛擬機3:qemu-kvm -m 128 -smp 1 -name vm3 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:ee -net tap,ifname=vif1.0,script=/etc/qemu-ifup2,downscript=/etc/qemu-ifdown2 --nographic

配置ip地址

vm3:ifconfig eth0 10.0.3.4/24 up

我們希望同一個節點上的vm3和vm1/2通信,ping不同。為啥了?

因為他們不再同一個交換機上,這兩個交換機沒連起來

手動連接兩個交換機

我們可以通過一對網卡

1
2
3
4
5
6

#s0:第一個交換機
#s1:第二個交換機
ip link add s0 type veth peer name s1

[root@xiaxuefei etc]# ip link set s0 up
[root@xiaxuefei etc]# ip link set s1 up

我們將這對網卡分別添加到對應交換機上,然後就可以ping通了

1
2

[root@xiaxuefei etc]# ovs-vsctl add-port br-in s0
[root@xiaxuefei etc]# ovs-vsctl add-port br-or s1

我們將vif0.0和vif1.0劃分在一個vlan中(tag=10),vif0.1在單獨的vlan中(tag=0,默認值)

1
2
3

[root@xiaxuefei etc]# ovs-vsctl set port vif0.0 tag=10
[root@xiaxuefei etc]# ovs-vsctl set port vif1.0 tag=10
[root@xiaxuefei etc]# ovs-vsctl set port vif0.1 tag=0

此時同vlan下,可以ping通的。此時我們可是沒管s0和s1喲。這是為啥呢?

這是因為s0和s1默認工作在匯聚鏈路模式下。否則我們需要進行設置

基於多節點中kvm配置的網絡模型2–藉助ovs

我們每次都要為虛擬機配置ip地址,那麼如何動態的創建呢?別忘記了,之前我們的dhcp伺服器喲。

創建名稱空間

1
2
3
4
5
6
7
8
9
10
11

yum install -y iproute
#創建名稱空間,也就是路由器
[root@xiaxuefei etc]# ip netns add r0
#創建一對網卡,一半放在名稱空間(路由器),一半放在交換機
[root@xiaxuefei etc]# ip link add sif0 type veth peer name rif0
##激活網卡
[root@xiaxuefei etc]# ip link set sif0 up
[root@xiaxuefei etc]# ip link set rif0 up
#分別放到對應的位置
[root@xiaxuefei etc]# ip link set rif0 netns r0
[root@xiaxuefei etc]# ovs-vsctl add-port br-in sif0

激活路由器內部的網卡

1
2
3
4
5
6
7
8
9
10
11
12
13

[root@xiaxuefei etc]# ip netns exec r0 ifconfig
[root@xiaxuefei etc]# ip netns exec r0 ip link set rif0 up
[root@xiaxuefei etc]# ip netns exec r0 ifconfig
rif0 Link encap:Ethernet HWaddr A2:AD:76:ED:A7:FE
inet6 addr: fe80::a0ad:76ff:feed:a7fe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:468 (468.0 b) TX bytes:636 (636.0 b)

#給路由器配置一個地址固定地址
[root@xiaxuefei etc]# ip netns exec r0 ip addr add 10.0.4.254/24 dev rif0

在路由器內部運行一個dhcp伺服器

1
2

#86400表示租約的時間,為1天
[root@xiaxuefei etc]# ip netns exec r0 dnsmasq -F 10.0.4.200,10.0.4.220,86400 -i rif0

啟動一個虛擬機

1
2
3
4

qemu-kvm -m 128 -smp 1 -name vm1 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:aa:bb:cc -net tap,ifname=vif0.0,script=/etc/qemu-ifup --nographic


eth0:10.0.4.200

我們來配置第二個計算節點

1
2
3

qemu-kvm -m 128 -smp 1 -name vm1 -drive file=/images/kvm/cirros-0.3.0-i386-disk.img,if=virtio,media=disk -net nic,macaddr=52:54:00:bb:bb:cc -net tap,ifname=vif0.0,script=/etc/qemu-ifup --nographic

eth0:10.0.4.220

此時這兩個kvm是不能通信的,因為兩個交換機,並沒有連接起來,雖然我們可以通過物理橋接的方式,但是這種方式,在現實中用的不多,代替的是使用gre隧道技術

分別激活兩個物理主機之前創建的網卡eth4(這個是物理接口),我們使其具有gre功能(我們自己選擇一個ip段就行)

1
2

node1:[root@xiaxuefei ~]# ifconfig eth4 192.168.20.1/24 up
node2:[root@xiaxuefei ~]# ifconfig eth4 192.168.20.2/24 up

各自交換機上添加一個埠,並設置其接口類型為gre

進行參數設置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

[root@xiaxuefei ~]# ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.20.2(這個是對端地址,以後可以動態獲取的)
[root@xiaxuefei ~]# ovs-vsctl list interface gre0
_uuid : fd33c11b-a64d-4635-a35a-17a264c3cda1
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : []
external_ids : {}
ifindex : 0
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : []
link_state : up
mac : []
mac_in_use : "9e:5f:e5:58:b5:24"
mtu : []
name : "gre0"
ofport : 7
ofport_request : []
options : {remote_ip="192.168.20.2"}
other_config : {}
#統計數據
statistics : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}
#狀態信息
status : {tunnel_egress_iface="eth4", tunnel_egress_iface_carrier=up}
type : gre

另外一個節點

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

[root@xiaxuefei ~]# ovs-vsctl add-port br-in gre0
[root@xiaxuefei ~]# ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.20.1
[root@xiaxuefei ~]# ping 192.168.20.2^C
[root@xiaxuefei ~]# ovs-vsctl list interface gre0
_uuid : f5b1a02c-fa41-4a55-9e31-e8183a001ff5
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : []
cfm_fault_status : []
cfm_flap_count : []
cfm_health : []
cfm_mpid : []
cfm_remote_mpids : []
cfm_remote_opstate : []
duplex : []
external_ids : {}
ifindex : 0
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : []
link_state : up
mac : []
mac_in_use : "ae:de:de:2d:ea:f0"
mtu : []
name : "gre0"
ofport : 2
ofport_request : []
options : {remote_ip="192.168.20.1"}
other_config : {}
statistics : {collisions=0, rx_bytes=0, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=0, tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}
status : {tunnel_egress_iface="eth4", tunnel_egress_iface_carrier=up}
type : gre

重啟兩個物理節點上的kvm

可以ping通了。

node1-kvm1:ifconfig eth0 10.0.4.200/24 up

node2-kvm1:ifconfig eth0 10.0.4.220/24 up

在eth4上進行抓包:

我們可以通過vlan+gre技術,使得上圖中的vm1和vm3通信,vm2和vm4通信,而vm1和vm2不能通信,vm3和vm4不能通信

相關焦點

  • 什麼是虛擬機?虛擬機有哪些產品?
    虛擬機(Virtual Machine)技術,就是通過軟體工具模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。利用這種技術,可以在現有的計算機的作業系統中建立多個同構或異構的虛擬計算機系統。
  • PD 16 虛擬機 (Mac系統虛擬機)
    macOS Catalina以及macOS Big Sur ,還支持m1晶片,Parallels Desktop16 mac版可以輕鬆幫助用戶在Mac上運行windows或其他系統,而且安裝Parallels Desktop mac版後,你可以在Mac上運行數千種Windows程序,這裡準備了Parallels Desktop mac版下載,並附上Parallels Desktop16激活秘鑰應用介紹
  • 關於虛擬機.
    在計算機中創建虛擬機時,需要將實體機的部分硬碟和內存容量作為虛擬機的硬碟和內存容量。每個虛擬機都有獨立的CMOS、硬碟和作業系統,可以像使用實體機一樣對虛擬機進行操作。。。。。。咳嗯。簡單來說,虛擬機軟體相當於一個容器,它可以在你的主機系統中運行這個容器,然後再往裡面放入一個系統。目前,虛擬機分為Iinux虛擬機和java虛擬機。
  • 虛擬機的新選擇,win10自帶Hyper-V 虛擬機
    Hyper-V 簡介Hyper-V是 win10自帶的虛擬機安裝管理工具,使用Hyper-V 可以方便在win10上安裝各種不同的虛擬機
  • 虛擬機是什麼?
    虛擬機概念(virtual machine machine)是一種說明計算機硬體和軟體關係的有效方法。
  • 虛擬機VirtualBox安裝詳細步驟(附虛擬機鏡像下載)
    通過本篇文章,我們將學會安裝虛擬機,以及導入虛擬機鏡像並使用虛擬機。本文還提供虛擬機鏡像下載。
  • 虛擬機是什麼東東?
    虛擬機(Virtual Machine)指通過軟體模擬的具有完整硬體系統功能的、運行在一個完全隔離環境中的完整計算機系統。虛擬機具有真實系統完全一樣的功能,進入虛擬系統後,所有操作都是在這個全新的獨立的虛擬系統裡面進行,可以獨立安裝運行軟體,保存數據,擁有自己的獨立桌面,不會對宿主系統「虛擬機寄生的系統一般被稱作為宿主系統,一個宿主系統可以虛擬出多個虛擬機。」
  • 虛擬機(virtual machine)
    虛擬機技術最早由 IBM 於上世紀六七十年代提出,被定義為硬體設備的軟體模擬實現,通常的使用模式是分時共享昂貴的大型機。虛擬機監視器(Virtual Machine Monitor,VMM)是虛擬機技術的核心,它是一層位於作業系統和計算機硬體之間的代碼,用來將硬體平臺分割成多個虛擬機。
  • 說說虛擬機的備份
    虛擬機機的備份,首先要從數據安全角度來看,大家都普遍使用傳統共享存儲或 vSAN等分布式存儲,雖然這些存儲解決方案都有超過三個九以上的可靠性,但是仍然存在數據丟失的風險,而且有些問題,如數據的誤刪除,病毒感染等,這些都不是存儲的可靠性能解決的,所以大家應該把虛擬機備份看作是數據安全的基礎,而且由於虛擬機的備份很容易,且不用說備份軟體,自己寫個腳本,每天晚上把虛擬機克隆一下
  • Nova虛擬機啟動
    既然流表是為了虛擬機通信用的,那麼沒有虛擬機的接入,流表也就沒有了用武之地。因此,本節就來講一講OpenStack中虛擬機啟動過程中,是如何獲取MAC、IP位址,如何在Neutron上綁定port,以及如何獲取IP位址的。這一節就當做是對上一節「Neutron的軟體實現」的一個補充吧。從頭開始講。
  • 【虛擬機安裝】Windows 自帶虛擬機性能比 VMware 更強?
    相信說到要在電腦上安裝虛擬機,第一個想到的名字就是VMware,確實在虛擬機中VMware的地位可以說是沒人可以撼動了。VMware 虛擬機可以在同一臺電腦安裝多個系統,Linux、windows各個版本,而且虛擬系統和原系統都可以互相操作:如網絡、複製粘貼功能等...
  • 虛擬機保護逆向入門
    目前比較前沿的軟體保護技術是虛擬機保護(Virtual-Machine-Protect),當然這種虛擬化的思想也廣泛用於軟體開發等其他領域。最近在打一些CTF比賽的時候,感覺虛擬機保護的逆向已經成了Reverse題目的一個新趨勢,甚至現在的CTF中,稍微簡單的虛擬機題目都快成入門題了。
  • 虛擬機的介紹及安裝使用
    虛擬機技術最早由 IBM 於上世紀六七十年代提出,被定義為硬體設備的軟體模擬實現,通常的使用模式是分時共享昂貴的大型機。 虛擬機監視器(Virtual Machine Monitor,VMM)是虛擬機技術的核心,它是一層位於作業系統和計算機硬體之間的代碼,用來將硬體平臺分割成多個虛擬機。
  • Istio 對虛擬機支持史話
    現在,Istio 1.8 新增了 WorkloadGroup 及 智能 DNS 代理 [2],這使得如虛擬機這樣的非 Kubernetes 工作負載可以在 Istio 中成為像 Pod 一樣的一等公民。
  • 聊聊虛擬機的那些事兒
    四、虛擬機的簡單配置1、硬體配置:如下圖所示,可在虛擬機處於關機狀態時調節各項硬體配置(虛擬機與主機共享硬體資源,因此內存大小建議設置為主機的50%以內,即主機運行內存為8G時,虛擬機佔用內存不超過4G)需要注意的是:這裡設置的硬體資源大小為理論上的最大值(以硬碟大小為例:硬碟大小設置為60G,並不意味著該虛擬機佔用主機硬碟的
  • 虛擬機安裝Windows教程
    虛擬機安裝 如果只是為了使用某個軟體,虛擬機是一個不錯的選擇,但是你的內存要大一些,如果是4G,那就打擾了使用虛擬機內存至少8G或者
  • 虛擬機快照的備份原理
    在進行快照時,虛擬化控制臺會與VM kernel通訊,短時間截斷該虛擬機上IO流、將IO操作進行懸掛,從而儘可能保障虛擬化系統進行快照時虛擬機上數據的一致性
  • 本地連接虛擬機mysql
    基礎環境:window10-SQLyog + VM8-centos7-mysql5.71.檢測虛擬機ip是否可以在本地ping通虛擬機->ip查看命令:ifconfig  cmd->ping命令:ping 虛擬機ip2.檢查虛擬機mysql埠是否有對外開放  a.可在mysql
  • Win10啟用系統自帶Hyper-V虛擬機|Win10添加虛擬機
    Hyper-V是微軟提出的一種系統管理程序虛擬化技術,能夠實現桌面虛擬化,跟很多用戶使用的VMware Workstation虛擬機軟體差不多。
  • 使用qemu安裝虛擬機
    安裝一臺虛擬機事前準備就和我們要安裝物理機一樣,我們在安裝虛擬機之前也要做點事先的準備。要準備這麼幾樣東西。必要的系統檢查創建虛擬機的虛擬磁碟下載guest系統的iso鏡像必要的系統檢查檢查分為兩種,硬體和軟體,軟體上又可以分為內核模塊和應用程式。首先晶片上要支持kvm,比如x86的架構需要有vmx。