KVM虛擬化技術詳解(二)--網絡及磁盤管理

目錄:
(2.1)半虛擬化驅動網卡
(2.2)半虛擬化網卡,全虛擬化網卡的理解
(2.3)網絡的介紹:橋接、NAT、僅主機
(2.4)存儲池管理及虛擬磁盤的管理


(2.1)半虛擬化驅動網卡
(2.1.1)我們使用的管理工具virsh、virt-manager是屬於單機版本的,在企業版中的vmm產品主要有ovirt,紅帽的rhev,新浪的stonevirt。接着我們來看一下網絡的相關內容,在網卡NIC中選擇virtio代表的是半虛擬化驅動,而e1000、rtl8139則代表的是全虛擬化驅動。
KVM虛擬化技術詳解(二)--網絡及磁盤管理


(2.2)半虛擬化網卡,全虛擬化網卡的理解
(2.2.1)我們網卡的拓撲圖,首先是我們的一臺虛擬機,虛擬機會有一個自身的網卡,虛擬機的網卡會連接到一個虛擬化層,再接着連接到一個我們自己做的網橋例如br0,通過我們自己做的網橋最後連接到物理機的網卡上。如果網卡驅動使用的是全虛擬化,那麼網卡是不知道自己在虛擬機裏的,所以vm虛擬機中的所有數據包傳輸都會進過全虛擬化層。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.2.2)如果網卡驅動使用的是virtio這樣的半虛擬化驅動,那麼此時虛擬機guestos知道自己是運行在虛擬機上的,是可以跳過虛擬化層,從虛擬機網卡直接到達虛擬機所創建的網橋的。所以使用半虛擬化的時候,網卡的IO會有明顯的提升。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.2.3)所以當在使用Linux系統時,選擇virtio的性能會比較高,在Linux系統中默認是能識別virtio這種類型的設備的。如果我們在Windows系統中插入某個硬件設備時,出現了無法識別的情況,此時我們需要安裝半虛擬化驅動程序解決。因此使用半虛擬化驅動是能夠有效的提供我們系統的性能的。
KVM虛擬化技術詳解(二)--網絡及磁盤管理


(2.3)網絡的介紹:橋接、NAT、僅主機
(2.3.1)接下來我們來了解虛擬化環境裏主要的三種網絡的工作流程。第一種是橋接bridge,在我們的物理機中有兩張網卡eth0、eth1。在我們的物理機中有兩臺虛擬機vm1、vm2,同時物理機中還會創建一個橋接br0。在沒有創建br0之前,物理機的數據包是從eth0傳輸的,當我們創建了br0後,此時物理機的數據包也走br0進行傳輸了。此時所有數據包從br0傳輸了,此時我們定義br0的上行鏈路是eth0。在KVM中,我們稱之爲把eth0橋接到br0;而在vmware中VMnet0類似於我們定義的br0,“橋接到”類似於我們定義的eth0,因此在vmware裏我們稱之爲將VMnet0橋接到物理機的具體網卡。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.2)現在我們對圖2-5進行示意圖轉換,將創建的虛擬機和網橋br0都從物理機中提取出來,此時br0就是作爲一個交換機管理着vm1、vm2、物理機OS,而這三個主機都是在同一個網段,br0爲三個主機提供內部傳輸數據服務,同時外部鏈接eth0對外傳輸數據。這就是我們所說的橋接網絡。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.3)現在我們用以下拓撲圖在實驗中配置橋接模式,我們將eth0橋接到br0上,這樣eth0上就沒有IP地址了,而在br0上有IP地址,並且將vmware workstation的DHCP自帶的服務打開。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.4)我們先使用命令brctl show查看vms002主機上當前網橋的情況,我們在vms002主機上啓動網絡的圖形化配置界面,並且將eno16777728網卡刪除掉,添加一個橋接網絡。我們可以啓動網絡配置的圖形化界面操作“nm-connection-editor &”,以此來配置IP地址。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.5)接着我們連接名稱和接口名稱都是br0,並設置vms002主機的IP、子網掩碼、網關、DNS的信息。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.6)接着我們在vms002主機上選擇“橋接”--“添加”--“以太網”,然後將eno16777728和br0關聯在一起了,最後點擊保存即可。此時我們發現br0上便有了192.168.26.102的IP地址了。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.7)接着我們使用virt-manager導入一個創建好的KVM虛擬機,此時我們發現系統已經可以自動的識別出創建好的橋接網絡br0
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.8)在配置界面對網卡,硬盤設置好virtio類型,並設置好顯示協議
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.9)我們將創建的KVM虛擬機small的網卡ONBOOT設置爲yes後,此時我們發現虛擬機small已經正常的獲取了由vmware workstation的DHCP分配的192.168.26.0/24網段的IP地址了。
注意(使用經驗總結):我們創建的small虛擬機硬盤可以只劃分8G的總空間,使用最小化的安裝方式,其中“/”根分區給6G,swap分區給2G即可,這樣就可以使用最小化安裝系統的方式安裝出來一個系統,最小化安裝的系統可以啓動,不過系統是精簡版的,很多軟件包都需要自己後續配置安裝。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
同時我們如果希望配置KVM虛擬機的YUM源,則應該首先將光盤鏡像連接到虛擬機中,然後在使用掛載的方式將/mnt目錄下,此時系統便可以訪問光盤中的內容了。
# mount -o remount,ro /dev/cdrom /mnt
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.10)以上就是我們常見的橋接bridge網絡。接下來我們介紹第二種網絡NAT,在我們的物理機中有一個網卡eth0,其IP地址是192.168.26.102,同時有兩個虛擬機vm1和vm2,還有一個網橋xx,所在的網段是192.168.101.0/24,同時在我們的物理機上也會自動的創建一個虛擬的網卡virbr1,且網卡的IP默認爲192.168.101.1,此時KVM中的vm1虛擬機是需要和外部網絡進行通信的,所以在我們的NAT網絡環境裏存在着一個虛擬機的路由器,這個路由器一頭橋接到virbr1網卡,一頭橋接到物理機上的eth0網卡。路由器中傳輸數據一般有兩種方式:第一個是路由的方式,當vm1虛擬機的數據包要到達eth0時,會通過指定路由表的方式,傳輸數據時IP地址信息是不發生任何的變化的,因此一般有公網地址的時候可以使用路由轉發的方式;第二個是NAT的方式,會隱藏vm1主機的源地址信息,以外部傳輸的地址進行數據通信。需要注意的是在KVM的環境中,vm1虛擬機指向的網關和DNS都應該設置爲192.168.101.1,而在vmware環境中,virbr1的地址爲192.168.101.1,虛擬路由器的內接口也有一個地址爲192.168.101.2,所以如果環境中有虛擬機,那麼虛擬機的網關和DNS應該設置爲192.168.101.2
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.11)我們在KVM中創建一個新的網絡xx,設置網絡爲192.168.101.0/24,轉發的物理網絡選擇br0,網絡模式設置爲NAT
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.12)此時在我們的vms002主機上便產生了一個virbr1的網卡,且網卡的IP地址爲192.168.101.1,同時我們在small虛擬機中將網卡的類型設置爲NAT到br0
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.13)我們在small虛擬機中將網絡重啓後,發現此時虛擬機已經獲得了192.168.101.0/24網段中的IP地址,且在KVM環境中網關和DNS都已經設置爲192.168.101.1地址了,NETMASK子網掩碼設置的是255.255.255.0了
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.14)這個就是我們所熟知的NAT網絡。接下來我們介紹第三種網絡僅主機模式,在僅主機模式中是不能夠進行外部聯網通信的,即vm1主機通過網橋到達virbr2後,並不再會和物理機的網卡eth0進行通信了,所以這種網絡也是我們常說的隔離網絡,而我們的物理機是可以使用創建的虛擬網卡virbr2和KVM虛擬機進行通信的
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.15)我們創建一個yy網絡,設置網段爲172.25.0.0/24,選擇隔離的虛擬網絡,創建完成後發現在vms002主機上便多了一個虛擬網卡virbr2
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.16)接着在small虛擬機上將網卡設置爲yy網絡,並將網絡重啓一下。發現此時虛擬機small已經獲取了172.25.0.0/24網段中的IP地址了,在vms002主機上指定使用virbr2網卡去ping虛擬化環境中的small虛擬機是可以正常的ping通的,但是使用br0網卡就無法ping通了。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.17)我們也可以使用配置文件的方式,我們KVM環境網絡設置的配置文件在
/etc/libvirt/qemu/networks目錄下。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.18)接着我們自己創建一個zz.xml配置文件,並設置一個隨機的UUID等信息。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.19)現在我們通過命令行創建一個zz網絡,首先我們定義一個zz網絡,然後再創建一個zz網絡,並將網絡啓動起來。
注意:我們可以通過如下的命令查看KVM中所有網絡設置的命令
# virsh --help |grep net
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.20)我們在autostart目錄下可以看到所有啓動的網絡都默認有產生一個軟鏈接
# cd /etc/libvirt/qemu/networks/autostart/
# ln -s /etc/libvirt/qemu/networks/autostart/zz.xml zz.xml
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.3.21)通過如下的命令我們可以查看虛擬機使用的是哪個網絡
# virsh --help |grep if
# virsh domiflist small
KVM虛擬化技術詳解(二)--網絡及磁盤管理


(2.4)存儲池管理及虛擬磁盤的管理
對於硬盤管理,我們主要是從四個方面來進行考慮:1.創建一塊硬盤;2.把一塊硬盤添加到虛擬機裏;3.在不啓動虛擬機的情況下,讀取一塊硬盤的內容;4.分析不同類型硬盤的功能(raw,qcow2)
(2.4.1)首先我們來創建一塊硬盤,創建一個qcow2格式的硬盤文件,命名爲test.qcow2,大小爲2G
# qemu-img create -f qcow2 test.qcow2 2G
# qemu-img info test.qcow2
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.2)注意我們所創建的虛擬機硬盤文件,是需要放在存儲池中才能使用的,如果沒有放在存儲池裏的話,是不能使用的。其中系統默認的存儲池是在/var/lib/libvirt/images當中。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.3)然後我們把創建好的2G虛擬機硬盤文件test.qcow2添加到對應的虛擬機中,並命名爲vdb磁盤
# virsh --help |grep disk---查看命令disk命令的選項幫助
# virsh help attach-disk---查看添加硬盤的所有命令幫助
# virsh domblklist small---查看對應的虛擬機所有硬盤的情況
# virsh attach-disk small /opt/test.qcow2 vdb --subdriver qcow2---在small虛擬機中添加vdb硬盤
# virsh detach-disk small vdb---在small虛擬機中刪除vdb硬盤
# echo 3 > /proc/sys/vm/drop_caches---將緩存中的信息清除
# setterm -blank 0---關閉系統的屏幕保護
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.4)但是我們將虛擬機small關機後,發現添加的硬盤vdb就消失了。這是由於命令行的設置是臨時生效的,如果希望設置能夠用永久生效,應該在命令行加上persistent選項
# virsh attach-disk small /opt/test.qcow2 vdb --subdriver qcow2 --persistent
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.5)在small虛擬機上添加test.qcow2硬盤,命名爲vdb,並且將硬盤持久化,此時將small虛擬機關閉後發現硬盤仍然是存在的。如果需要將硬盤刪除,也是需要加上持久化的選項persistent的。
# virsh detach-disk small vdb --persistent
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.6)除了通過命令行的方式添加硬盤外,也是可以通過配置文件的方式來添加硬盤的。我們進入到/etc/libvirt/qemu/目錄下,編輯small.xml文件。我們將vda的6行內容複製一份並編輯爲vdb的內容。執行完更新的命令後,此時在虛擬機small中通過編輯配置文件,我們的vdb硬盤已經正常的添加進來了。
# systemctl restart libvirtd
# virsh destroy small
# virsh start small
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.7)如果我們在虛擬機不開機的情況下,怎樣來讀取或者修改硬盤的內容分呢,首先我們通過直接打開硬盤文件的方式來實現。我們在虛擬機small的用戶家目錄下創建一個測試文件aa.txt,並寫入相關的文字信息,然後將small虛擬機關機。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.8)接着我們在vms002主機上可以使用guestfish命令,其中-i表示交互式,-w表示可以寫入,-a表示自動運行,在我們的環境中SELinux是permissive狀態,所以不用加--selinux選項。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.9)我們編輯small虛擬機的登錄配置文件/etc/issue,此時在small虛擬機啓動後,便可以看到在guestfish的文件中編輯的開機信息了。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.10)以上就是我們第一種直接打開KVM虛擬機硬盤文件的方式,這種方式適合用於在不開機的情況下編輯這個這個虛擬機中的一些文件的需求情況。同時我們還有第二種打開硬盤文件的方式即掛載硬盤文件,這種方式適合於虛擬機啓動不起來了,我想把硬盤文件裏的數據拷貝出來。我們先來看看raw格式的硬盤操作方式,其中convert表示類型轉換,-f表示源格式,-O表示目標格式,small.raw爲新的raw格式磁盤名。
# qemu-img convert -f qcow2 -O raw vm1.qcow2 small.raw
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.11)我們發現在/dev/mapper目錄中目前還沒有相關的文件。我們使用kpartx命令將small.raw中的文件讀取到/dev/mapper目錄中。此時在/dev/mapper目錄中已經有了small.raw文件的信息,我們將/dev/mapper/rhel-root掛載到/mnt目錄下,查看etc/issue文件,便發現這個是我們之前在small虛擬機中編輯的文件信息了。
# kpartx -av small.raw---將small虛擬機中的文件讀取到/dev/mapper目錄中
# kpartx -d small.raw---將掛載到/dev/mapper目錄的硬盤卸載掉
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.12)將/dev/mapper/rhel-root掛載到/mnt目錄後,將small虛擬機中創建的aa.txt文件拷貝到vms002主機的/opt目錄中,便實現了掛載硬盤文件讀取數據的要求。對於qcow2格式的文件,我們可以先將qcow2格式的文件轉換成raw,然後在通過掛載硬盤文件方式讀取相關數據。
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.13)注意:一般我們的內核模塊都是放在如下的目錄中的,如果我們想要編譯內核可以通過如下的路徑(源碼編譯,編譯安裝)
# ls /lib/modules/3.10.0-229.el7.x86_64/kernel/drivers/block/
# yum install gcc -y---安裝gcc編譯器
# yum install kernel-devel -y---安裝後可以看到內核源代碼
# yum install ncurses-devel -y
# make menuconfig
# modprobe nbd
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
KVM虛擬化技術詳解(二)--網絡及磁盤管理
(2.4.14)接下來我們來分析不同類型硬盤的功能,在KVM環境中常見的硬盤格式主要是raw和qcow2。raw硬盤格式是KVM環境中默認的硬盤格式,其優點是硬盤的傳輸速度很快,缺點是很多功能不支持,比如無法做快照;而qcow2硬盤格式速度相較於raw會慢一些,但是它支持更多的功能,它是支持快照功能的。從分配硬盤空間的角度看raw是立即分配磁盤大小,如果創建了8G的raw磁盤,則馬上從物理磁盤中消耗8G的硬盤空間;而qcow2則是實際用多少空間,就佔用多少硬盤大小。
# virsh --help | grep snap---創建快照命令幫助
KVM虛擬化技術詳解(二)--網絡及磁盤管理

—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章