1. 程式人生 > >虛擬化KVM

虛擬化KVM

連接 mac 原理 hyper sent def 時間 關機 snap



第1章 虛擬化KVM

1.1 虛擬化KVM介紹

1.1.1 為什麽學習虛擬化

2 解決資源浪費

2 解決一起使用的資源槍戰沖突

1.1.2 為什麽學習KVM

VMware是收費的(對於企業)對於個人來說是免費的

開源版本KVM

公司使用場景:底層使用KVM,上層使用OpenStack,通過OpenStack管理KVM

1.2 虛擬化的技術演變

1.2.1 軟件模擬

軟件虛擬化 QEMU

1.2.2 虛擬化層翻譯

1)軟件全虛擬化

軟件捕獲翻譯相當於翻譯官

VMware,有一個專門的虛擬化引擎。通過虛擬化引擎,捕獲虛擬機的指令,並進行處理,這也是為什麽在虛擬機上雖然使用的是物理機一樣的指令,但是虛擬機不能對硬件進行操作的原因,比如重啟虛擬機不會引起宿主機的重啟。這種解決方案也叫軟件全虛擬化方案。

技術分享圖片

2)半虛擬化

虛擬化是另一種類似於全虛擬化的技術,它使用Hypervisor分享存取底層的硬件,但是它的guest操作系統集成了虛擬化方面的代碼。該方法無需重新編譯或引起陷阱,因為操作系統自身能夠與虛擬進程進行很好的協作。

技術分享圖片

3)硬件支持的全虛擬化

硬件支持的全虛擬化:硬件支持的虛擬化層翻譯--kvm==》美國人懂中文了

1.2.3 容器虛擬化

Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metalOpenStack 集群和其他的基礎應用平臺。

Docker通常用於如下場景:

2 web應用的自動化打包和發布;

2 自動化測試和持續集成、發布;

2 在服務型環境中部署和調整數據庫或其他的後臺應用;

2 從頭編譯或者擴展現有的OpenShiftCloud Foundry平臺來搭建自己的PaaS環境。

1.2.4 虛擬化的優勢

  ①更高的資源利用率——虛擬可支持實現物理資源和資源池的動態共享,提高資源利用率,特別是針對那些平均需求遠低於需要為其提供專用資源的不同負載。

  ②降低管理成本——虛擬可通過以下途徑提高工作人員的效率:減少必須進行管理的物理資源的數量;隱藏物理資源的部分復雜性;通過實現自動化、獲得更好的信息和實現中央管理來簡化公共管理任務;實現負載管理自動化。另外,虛擬還可以支持在多個平臺上使用公共的工具。

  ③提高使用靈活性——通過虛擬可實現動態的資源部署和重配置,滿足不斷變化的業務需求。

  ④提高安全性——虛擬可實現較簡單的共享機制無法實現的隔離和劃分,這些特性可實現對數據和服務進行可控和安全的訪問。

  ⑤更高的可用性——虛擬可在不影響用戶的情況下對物理資源進行刪除、升級或改變。

  ⑥更高的可擴展性——根據不同的產品,資源分區和匯聚可支持實現比個體物理資源小得多或大得多的虛擬資源,這意味著您可以在不改變物理資源配置的情況下進行規模調整。

  ⑦互操作性和投資保護——虛擬資源可提供底層物理資源無法提供的與各種接口和協議的兼容性。

  ⑧改進資源供應——與個體物理資源單位相比,虛擬能夠以更小的單位進行資源分配。

1.3 KVM簡介

1.3.1 KVM簡介

KVM 全稱是 基於內核的虛擬機(Kernel-based Virtual Machine),它是一個 Linux 的一個內核模塊,該內核模塊使得 Linux 變成了一個 Hypervisor

2 它由 Quramnet 開發,該公司於 2008年被 Red Hat 收購。

2 它支持 x86 (32 and 64 ), s390, Powerpc CPU

2 它從 Linux 2.6.20 起就作為一模塊被包含在 Linux 內核中。

2 它需要支持虛擬化擴展的 CPU

2 它是完全開源的。

2 KVM虛擬機=KVM內核模塊+QEMU模擬器

1.3.2 KVM的架構

技術分享圖片

KVMlinux內核的模塊,它需要CPU的支持,采用硬件輔助虛擬化技術Intel-VTAMD-V,內存的相關如IntelEPTAMDRVI技術,Guest OSCPU指令不用再經過Qemu轉譯,直接運行,大大提高了速度,KVM通過/dev/kvm暴露接口,用戶態程序可以通過ioctl函數來訪問這個接口。

KVM內核模塊本身只能提供CPU和內存的虛擬化,所以它必須結合QEMU才能構成一個完成的虛擬化技術。

技術分享圖片

1.3.3 QEMUKVM

qemuKVM整合進來,通過ioctl調用/dev/kvm接口,將有關CPU指令的部分交由內核模塊來做。kvm負責cpu虛擬化+內存虛擬化,實現了cpu和內存的虛擬化,但kvm不能模擬其他設備。qemu模擬IO設備(網卡,磁盤等),kvm加上qemu之後就能實現真正意義上服務器虛擬化。因為用到了上面兩個東西,所以稱之為qemu-kvm

Qemu模擬其他的硬件,如Network, Disk,同樣會影響這些設備的性能,於是又產生了pass through半虛擬化設備virtio_blk, virtio_net,提高設備性能。

技術分享圖片

KVM虛擬機是基於linux內核虛擬化,自linux2.6.20之後就集成在linux的各個主要發行版本中。它使用linux自身的調度器進行管理,所以相對於xen,其核心源碼很少。KVM的虛擬化需要硬件的支持(如intel VT技術或者AMD V技術),是基於硬件的完全虛擬化。而xen早期則是基於軟件模擬的para-virtualization,新版本是基於硬件支持的完全虛擬化。

qemu是一種模擬處理器,現在運用最多的就是將KVMQEMU結合起來。

準確來說,KVMLinux kernel的一個模塊,可以用命令modprobe去加載KVM模塊。加載了該模塊後,才能進一步通過工具創建虛擬機。但是僅有KVM模塊是不夠的。因為用戶無法直接控制內核去做事情,還必須有一個運行在用戶空間的工具才行。這個用戶空間的工具,kvm開發者選擇了已經成型的開源虛擬化軟件QEMU。說起來QEMU也是一個虛擬化軟件。它的特點是可虛擬不同的CPU。比如說在x86CPU上可虛擬一個powerCPU,並可利用它編譯出可運行在power上的CPU,並可利用它編譯出可運行在power上的程序。KVM使用了QEMU的一部分,並稍加改造,就成了可控制KVM的用戶空間工具了。所以你會看到,官方提供的KVM下載有兩大部分(qemukvm)三個文件(KVM模塊、QEMU工具以及二者的合集)。也就是說,你可以只升級KVM模塊,也可以只升級QEMU工具。

QEMU是一個開源項目,實際就是一臺硬件模擬器,可以模擬許多硬件,包括X86架構處理器、AMD64架構處理器等。

QEMU的好處:因為是純軟件模擬,所以可以支持的平臺模擬支持的設備。

QEMU的缺點:是純軟件模擬,所以非常慢。

KVM只是內核模塊,只提供CPU和內存。所以還使用qemu模擬io設備如磁盤網卡。

1.3.4 KVM 是實現攔截虛機的 I/O 請求的原理:

現代 CPU 本身了對特殊指令的截獲和重定向的硬件支持,甚至新的硬件會提供額外的資源來幫助軟件實現對關鍵硬件資源的虛擬化從而提高性能。以 X86 平臺為例,支持虛擬化技術的 CPU 帶有特別優化過的指令集來控制虛擬化過程。通過這些指令集,VMM 很容易將客戶機置於一種受限制的模式下運行,一旦客戶機視圖訪問物理資源,硬件會暫停客戶機的運行,將控制權交回給 VMM 處理。VMM 還可以利用硬件的虛級化增強機制,將客戶機在受限模式下對一些特定資源的訪問,完全由硬件重定向到 VMM 指定的虛擬資源,整個過程不需要暫停客戶機的運行和 VMM 的參與。由於虛擬化硬件提供全新的架構,支持操作系統直接在上面運行,無需進行二進制轉換,減少了相關的性能開銷,極大簡化了VMM的設計,使得VMM性能更加強大。從 2005 年開始,Intel 在其處理器產品線中推廣 Intel Virtualization Technology IntelVT 技術。

1.3.5 LibvirtKVM

技術分享圖片

libvirt是目前使用最為廣泛的對KVM虛擬機進行管理的工具和APILibvirtd是一個daemon進程,可以被本地的virsh調用,也可以被遠程的virsh調用,Libvirtd調用qemu-kvm操作虛擬機。

組成

n 一套APIlib庫,支持主流的編程語言,包括cpythonruby等。

n libvirtd服務。

n 命令行工具virsh

1.3.6 openstack, kvm, qemu-kvm以及libvirt之間的關系

VM是最底層的hypervisor,它是用來模擬CPU的運行,它缺少了對network和周邊I/O的支持,所以我們是沒法直接用它的。

QEMU-KVM就是一個完整的模擬器,它是構建基於KVM上面的,它提供了完整的網絡和I/O支持。

Openstack不會直接控制qemu-kvm,它會用一個叫libvirt的庫去間接控制qemu-kvmlibvirt提供了跨VM平臺的功能,它可以控制除了QEMU之外的模擬器,包括vmware, virtualbox xen等等。

所以為了openstack的跨VM性,所以openstack只會用libvirt而不直接用qemu-kvmlibvirt還提供了一些高級的功能,例如pool/vol管理。

技術分享圖片

1.4 KVM使用

1.4.1 虛擬機/服務器開啟虛擬化

BIOS開啟虛擬化

虛擬機版本是新版

虛擬機開啟虛擬化配置

技術分享圖片

1.4.2 KVM安裝

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install 
python-virtinst-0.600.0-29.el6.noarch   # 一套Python的虛擬機安裝工具
    gpxe-roms-qemu-0.9.7-6.14.el6.noarch    # 虛擬機iPXE的啟動固件,支持虛擬機從網絡啟動
    virt-manager-0.9.0-29.el6.x86_64        # 基於Libvirt的圖像化虛擬機管理軟件,需要圖形界面操作系統
    qemu-img-0.12.1.2-2.479.el6.x86_64      # 用於操作虛擬機硬盤鏡像的創建、查看和格式轉化
    libvirt-python-0.10.2-54.el6.x86_64     # libvirt為Python提供的API
    qemu-kvm-0.12.1.2-2.479.el6.x86_64      # KVM在用戶空間運行的程序
    qemu-kvm-tools-0.12.1.2-2.479.el6.x86_64
    libvirt-0.10.2-54.el6.x86_64            # 用於管理虛擬機,它提供了一套虛擬機操作API
    libvirt-client-0.10.2-54.el6.x86_64     # Libvirt的客戶端,最重要的功能之一就是就在宿主機關機時可以通知虛擬機也關機,使虛擬機系統正常關機,而不是被強制關機,造成數據丟失
    virt-top-1.0.4-3.15.el6.x86_64          # 類似於top命令,查看虛擬機的資源使用情況
    virt-what-1.11-1.2.el6.x86_64           # 在虛擬機內部執行,查看虛擬機運行的虛擬化平臺
    virt-viewer-0.5.6-8.el6.x86_64          # 顯示虛擬機的控制臺console [root@oldboyedu ~]# mkdir -p /application/tools/ [root@oldboyedu ~]# dd if=/dev/sr0 of=/application/tools/CentOS7_2.iso
查看:
[root@oldboyedu39 ~]# lsmod |grep kvm
kvm_intel             162153  0
kvm                   525259  1 kvm_intel [root@oldboyedu39 ~]#  grep -Eo '(vmx|svm)' /proc/cpuinfo
vmx
vmx [root@oldboyedu39 ~]# cd  /application/tools/
[root@oldboyedu39 tools]# ls
CentOS-7-x86_64-DVD-1511.iso
啟動服務
systemctl start libvirtd.service
[root@oldboyedu39 ~]# mkdir -p /application/kvm_data
[root@oldboyedu39 ~]# cd /application/kvm_data
[root@oldboyedu39 kvm_data]# qemu-img create -f qcow2 /application/kvm_data/moban.qcow2 20G
Formatting '/application/kvm_data/moban.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off
[root@oldboyedu39 kvm_data]# ll -h
total 196K
-rw-r--r-- 1 root root 193K Oct 23 10:17 moban.qcow2
[root@oldboyedu39 kvm_data]#

1.5 創建虛擬機

1.5.1 創建硬盤

技術分享圖片

1.5.2 安裝虛擬機

[root@oldboyedu39 ~]# mkdir -p /application/kvm_data
[root@oldboyedu39 ~]# cd /application/kvm_data
[root@oldboyedu39 kvm_data]# qemu-img create -f qcow2 /application/kvm_data/moban.qcow2 20G
Formatting '/application/kvm_data/moban.qcow2', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off
[root@oldboyedu39 kvm_data]# ll -h
total 196K
-rw-r--r-- 1 root root 193K Oct 23 10:17 moban.qcow2
[root@oldboyedu39 kvm_data]# qemu-img info moban.qcow2
image: moban.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@oldboyedu39 kvm_data]# virt-install --virt-type=kvm --name=c72-moban --vcpus=1 -r 1024 -c /application/tools/CentOS7_2.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/application/kvm_data/moban.qcow2,size=20,format=qcow2

1.5.3 命令使用

[root@oldboyedu39 kvm_data]# virsh start c72-moban 開機
Domain c72-moban started
 
[root@oldboyedu39 kvm_data]# virsh list 查看狀態
 Id    Name                           State
----------------------------------------------------
 2     c72-moban                      running
 
[root@oldboyedu39 kvm_data]#
生成kvm虛擬機:virt-install 查看在運行的虛擬機:virsh list 查看所有虛擬機:virsh list --all 查看kvm虛擬機配置文件:virsh dumpxml name 啟動kvm虛擬機:virsh start name 正常關機:virsh shutdown name  非正常關機(相當於物理機直接拔掉電源):virsh destroy name 刪除:virsh undefine name(徹底刪除,找不回來了,如果想找回來,需要備份/etc/libvirt/qemu的xml文件) 根據配置文件定義虛擬機:virsh define file-name.xml 掛起,終止:virsh suspend name 恢復掛起狀態:virsh resume name

1.5.4 註意

模板機配置文件
[root@oldboyedu39 ~]# cd /etc/libvirt/qemu/
[root@oldboyedu39 qemu]# ls
c72-moban.xml  networks
[root@oldboyedu39 qemu]#
磁盤文件
[root@oldboyedu39 tools]# cd /application/kvm_data/
[root@oldboyedu39 kvm_data]# ls
moban.qcow2
[root@oldboyedu39 kvm_data]#

1.6 磁盤文件格式介紹

rawqcow2簡單區別

2 raw不支持快照

2 qcow2支持快照

1.6.1 raw介紹

老牌的格式了,用一個字來說就是裸,也就是赤裸裸,你隨便dd一個file就模擬了一個raw格式的鏡像。由於裸的徹底,性能上來說的話還是不錯的。目前來看,KVMXEN默認的格式好像還是這個格式。因為其原始,有很多原生的特性,例如直接掛載也是一件簡單的事情。

裸的好處還有就是簡單,支持轉換成其它格式的虛擬機鏡像對裸露的它來說還是很簡單的(如果其它格式需要轉換,有時候還是需要它做為中間格式),空間使用來看,這個很像磁盤,使用多少就是多少(du -h看到的大小就是使用大小),但如果你要把整塊磁盤都拿走的話得全盤拿了(copy鏡像的時候),會比較消耗網絡帶寬和I/O。接下來還有個有趣的問題,如果那天你的硬盤用著用著不夠用了,你咋辦,在買一塊盤。但raw格式的就比較犀利了,可以在原來的盤上追加空間:

dd if=/dev/zero of=zeros.raw bs=1024k count=4096(先創建4G的空間)

cat foresight.img zeros.raw > new-foresight.img(追加到原有的鏡像之後)

當然,好東西是吹出來的,誰用誰知道,還是有挺多問題的。由於原生的裸格式,不支持snapshot也是很正常的。傳說有朋友用版本管理軟件對raw格式的文件做版本管理從而達到snapshot的能力,估計可行,但沒試過,這裏也不妄加評論。但如果你使用LVM的裸設備,那就另當別論。說到LVM還是十分的犀利的,當年用LVM做虛擬機的鏡像,那性能杠杠的。而且現在好多兄弟用虛擬化都采用LVM來做的。在LVM上做了很多的優化,國外聽說也有朋友在LVM增量備份方面做了很多的工作。目前來LVMsnapshot、性能、可擴展性方面都還是有相當的效果的。目前來看的話,備份的話也問題不大。就是在虛擬機遷移方面還是有很大的限制。但目前虛擬化的現狀來看,真正需要熱遷移的情況目前需求還不是是否的強烈。雖然使用LVM做虛擬機鏡像的相關公開資料比較少,但目前來看犧牲一點靈活性,換取性能和便於管理還是不錯的選擇。

1.6.2 qcow2

現在比較主流的一種虛擬化鏡像格式,經過一代的優化,目前qcow2的性能上接近raw裸格式的性能,這個也算是redhat的官方渠道了,哈哈,希望有朋友能拍他們磚:

對於qcow2的格式,幾點還是比較突出的,qcow2snapshot,可以在鏡像上做N多個快照:

2 更小的存儲空間,即使是不支持holes的文件系統也可以(這下du -hls -lh看到的就一樣了)

2 Copy-on-write support, where the image only represents changes made to an underlying disk image(這個特性SUN ZFS表現的淋漓盡致)

2 支持多個snapshot,對歷史snapshot進行管理

2 支持zlib的磁盤壓縮

2 支持AES的加密

1.6.3 vmdk

Mware的格式,這個格式說的蛋疼一點就有點牛X,原本VMware就是做虛擬化起家,自己做了一個集群的VMDKpool,做了自己的虛擬機鏡像格式。又拉著一些公司搞了一個OVF的統一封包。從性能和功能上來說,vmdk應該算最出色的,由於vmdk結合了VMware的很多能力,目前來看,KVMXEN使用這種格式的情況不是太多。但就VMwareEsxi來看,它的穩定性和各方面的能力還是可圈可點。

1.7 KVM克隆

通用方法:既能夠本機克隆,也能跨機克隆

前提:關機克隆

[root@oldboyedu39 qemu]# virsh list --all 查看狀態
 Id    Name                           State
----------------------------------------------------
 -     c72-moban                      shut off
 
[root@oldboyedu39 qemu]#
克隆磁盤文件
[root@oldboyedu39 kvm_data]# virsh dumpxml c72-moban >/tmp/moban.xml
[root@oldboyedu39 kvm_data]#  cp moban.qcow2 clone.qcow2
[root@oldboyedu39 kvm_data]# ll
total 3034052
-rw-r--r-- 1 root root 1553465344 Oct 23 11:34 clone.qcow2
-rw-r--r-- 1 root root 1553465344 Oct 23 11:32 moban.qcow2
[root@oldboyedu39 kvm_data]# pwd
/application/kvm_data
[root@oldboyedu39 kvm_data]# ll -h
total 2.9G
-rw-r--r-- 1 root root 1.5G Oct 23 11:34 clone.qcow2
-rw-r--r-- 1 root root 1.5G Oct 23 11:32 moban.qcow2
[root@oldboyedu39 kvm_data]#
克隆配置文件
[root@oldboyedu39 ~]# sed -i "2s#c72-moban#c72-clone#;3s#.*#<uuid>`uuidgen`</uuid>#;s#moban.qcow2#clone.qcow2#;s#^.*<mac address=.*/>#      <mac address='52:54:00:e2:f9:5e'/>#" /tmp/moban.xml
對比
[root@oldboyedu39 ~]# diff /tmp/moban.xml{,.ori}
2,3c2,3
<   <name>c72-clone</name>
< <uuid>39fed509-08ef-4892-b429-3206f9e292ae</uuid>
---
>   <name>c72-moban</name>
>   <uuid>da066b7c-a502-43b4-b1ae-08f59f6d5225</uuid>
34c34
<       <source file='/application/kvm_data/clone.qcow2'/>
---
>       <source file='/application/kvm_data/moban.qcow2'/>
67c67
<       <mac address='52:54:00:e2:f9:5e'/>
---
>       <mac address='52:54:00:ae:5e:af'/>
[root@oldboyedu39 ~]#
[root@oldboyedu39 ~]# virsh define /tmp/moban.xml
定義域 c72-clone(從 /tmp/moban.xml)
 
[root@oldboyedu39 ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     c72-clone                      關閉
 -     c72-moban                      關閉
 
[root@oldboyedu39 ~]#
開機
[root@oldboyedu39 ~]# virsh start  c72-clone
域 c72-clone 已開始
[root@oldboyedu39 ~]# virsh start  c72-moban
域 c72-moban 已開始
 
[root@oldboyedu39 ~]# [root@oldboyedu39 ~]# virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 3     c72-clone                      running
 4     c72-moban                      running
 
[root@oldboyedu39 ~]#

技術分享圖片

註意事項

1.克隆的CentOS6虛擬機,首先要做的是:

2 清除網卡配置文件的UUIDMAC地址,否則克隆後網卡錯亂

2 清空> /etc/udev/rules.d/70-persistent-net.rules,否則克隆後網卡錯亂

2 最後關閉虛擬機,在虛擬機中使用halt命令關機。

2.克隆CentOS7可以直接克隆:

2 清除網卡配置文件的UUIDMAC地址(不清除網卡也能啟動)

2 關機做克隆

1.8 KVM快照

創建快照(關機做快照節省空間)
[root@oldboyedu39 ~]# virsh shutdown  c72-moban
域 c72-moban 被關閉
[root@oldboyedu39 ~]# virsh shutdown  c72-clone
域 c72-clone 被關閉
[root@oldboyedu39 ~]#
[root@oldboyedu39 ~]# virsh shutdown  c72-clone 創建快照
域 c72-clone 被關閉
[root@oldboyedu39 ~]# virsh snapshot-create-as c72-clone c72-clone-kuaizhao1
已生成域快照 c72-clone-kuaizhao1
[root@oldboyedu39 ~]# virsh snapshot-list c72-clone 查看快照
 名稱               生成時間              狀態
------------------------------------------------------------
 c72-clone-kuaizhao1  2017-10-23 12:05:44 +0800 shutoff
 
[root@oldboyedu39 ~]# [root@oldboyedu39 ~]# virsh snapshot-revert c72-clone c72-clone-kuaizhao1#恢復快照
virsh snapshot-delete c72-clone c72-clone-kuaizhao1 # 刪除快照

1.9 KVM橋接網絡

默認KVM的網絡是NAT模式,那如何讓KVM的網絡和宿主機同網段呢?這就需要橋接網卡了

Bridge方式即虛擬網橋的網絡連接方式,是客戶機和子網裏面的機器能夠互相通信。可以使虛擬機成為網絡中具有獨立ip的主機。

橋接網絡(也叫物理設備共享)被用作把一個物理設備復制到另一臺虛擬機。網橋多用做高級設置,特別是主機多個網絡接口的情況。

技術分享圖片

#四處需要修改
      <name>c72-moban</name>
        <uuid>00e0ff50-c410-40d8-a46e-8919199b2828</uuid>
      <source file='/application/kvm_data/moban.qcow2'/>
      <mac address='52:54:00:e2:f9:6e'/>
[root@oldboyedu39 ~]# cp /etc/sysconfig/network-scripts/{ifcfg-eth0,ifcfg-br0} #復制網卡
[root@oldboyedu39 ~]#  cat>/etc/sysconfig/network-scripts/ifcfg-eth0<<EOF #修改
> DEVICE=eth0
> TYPE=Ethernet
> ONBOOT=yes
> BRIDGE=br0
> EOF
[root@oldboyedu39 ~]#
[root@oldboyedu39 ~]# sed -i.ori 's#Ethernet#Bridge#;s#eth0#br0#g' /etc/sysconfig/network-scripts/ifcfg-br0
[root@oldboyedu39 ~]# diff /etc/sysconfig/network-scripts/ifcfg-br0{,.ori}
1c1
< TYPE=Bridge
---
> TYPE=Ethernet
7c7
< NAME=br0
---
> NAME=eth0
9c9
< DEVICE=br0
---貓
> DEVICE=eth0
[root@oldboyedu39 ~]#  
並把ifcfg-br0配置文件的uuid刪除
systemctl restart  network
[root@oldboyedu kvm_data]# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000c29450547   no      eth0
virbr0      8000.fe5400e2f95e   yes     vnet0
新創建主機采用橋接網卡將
--network network=default換成--network bridge=br0。
對已經創建的主機,修改成橋接方式。修改配置文件


技術分享圖片

a.關閉虛擬機
b.virsh edit c72-moban
給虛擬機再次添加一塊新的網卡,虛擬機需要運行狀態。
virsh attach-interface c72-clone --type bridge --source br0
[root@kvm1 qemu]# virsh --help | grep bridge
    iface-bridge                   生成橋接設備並為其附加一個現有網絡設備
    iface-unbridge                 分離其輔助設備後取消定義橋接設備
[root@kvm1 qemu]# virsh iface-bridge eth0 br0



虛擬化KVM