丰满女人又夹又紧又丰满/国产精品久久久久久久久福交 /黄色va视频/姜恩惠的29分钟激情视频

English 服務熱線: 400-610-7333

虛擬化技術之 KVM 2024-11-21 14:31  作者或來源:CSDN 博客

虛擬化概述

現在使用的計算機都離不開馮諾依曼體系結構,如圖所示,有輸入設備、輸出設備、存儲器、cpu 這就算是完整的計算機硬件環境了(當然還需要網卡、顯卡等等)。虛擬化技術就是在一臺機器上模擬出獨立的 cpu、存儲器等使得同一臺主機能虛擬為多臺主機或者多臺主機能虛擬為一臺主機。

虛擬化使用軟件的方法重新定義劃分 IT 資源,可以實現 IT 資源的動態分配、靈活調度、跨域共享,提高 IT 資源利用率,使 IT 資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求。

虛擬化的分類

半虛擬化、全虛擬化、寄居虛擬化、裸金屬虛擬化、硬件虛擬化、軟件虛擬化、CPU、內存、磁盤、網絡虛擬化

半虛擬化

最理想的虛擬化的兩個目標如下:

  1. 客戶機完全不知道自己運行在虛擬化環境中,還以為自己運行在原生環境里。
  2. 完全不需要 VMM 介入客戶機的運行過程。

純軟件的虛擬化可以做到第一個目標,但性能不是很好,而且軟件設計的復雜度大大增加。那么如果放棄第一個目標呢?讓客戶機意識到自己是運行在虛擬化環境里,并做相應修改以配合 VMM,這就是半虛擬化(Para-Virtualization)。

一方面,可以提升性能和簡化 VMM 軟件復雜度;另一方面,也不需要太依賴硬件虛擬化的支持,從而使得其軟件設計(至少是 VMM 這一側)可以跨平臺且是優雅的。本質上,準虛擬化弱化了對虛擬機特殊指令的被動截獲要求,將其轉化成客戶機操作系統的主動通知。但是,準虛擬化需要修改客戶機操作系統的源代碼來實現主動通知。典型的半虛擬化技術就是 virtio,使用 virtio 需要在宿主機 / VMM 和客戶機里都相應地裝上驅動。

全虛擬化

與半虛擬化相反的,全虛擬化(Full Virtualization)堅持第一個理想化目標:客戶機的操作系統完全不需要改動。敏感指令在操作系統和硬件之間被 VMM 捕捉處理,客戶操作系統無須修改,所有軟件都能在虛擬機中運行。因此,全虛擬化需要模擬出完整的、和物理平臺一模一樣的平臺給客戶機,這在達到了第一個目標的同時也增加了虛擬化層(VMM)的復雜度。

性能上,2005 年硬件虛擬化興起之前,軟件實現的全虛擬化完敗于 VMM 和客戶機操作系統協同運作的半虛擬化,這種情況一直延續到 2006 年。之后以 Intel VT-xVT-d 為代表的硬件虛擬化技術的興起,讓由硬件虛擬化輔助的全虛擬化全面超過了半虛擬化。但是,以 virtio 為代表的半虛擬化技術也一直在演進發展,性能上只是略遜于全虛擬化,加之其較少的平臺依賴性,依然受到廣泛的歡迎。

寄居虛擬化

最底層是物理硬件,物理硬件之上是主機的操作系統,操作系統之上是 VMM(virtual machine monitor, 虛擬機管理層),再往上就是客戶的虛擬戶了。

在這種技術里面,虛擬機對各種物理設備(cpu、內存、硬盤等)的調用,都是通過 VMM 層和宿主機的操作系統一起協調才完成的。VMware VirtualBox 都是基于這種方式實現的。

裸金屬虛擬化

裸機虛擬化指的是,直接將 VMM 安裝在硬件設備與物理硬件之間。VMM 在這種模式下又叫做 Hypervisor, 虛擬機有指令要執行時, Hypervisor 會接管該指令,模擬相應的操作。

Hypervisor 是一種在虛擬環境中的操作系統。他們可以訪問服務器上包括磁盤和內存在內的所有物理設備。 Hypervisor 不但協調著這些硬件資源的訪問,也同時在各個虛擬機之間施加防護。當服務器啟動并執行 Hypervisor 時,它會加載所有虛擬機客戶端的操作系統同時會分配給每一臺虛擬機適量的內存,CPU,網絡和磁盤。

硬件虛擬化

硬件虛擬化技術就是指計算機硬件本身提供能力讓客戶機指令獨立執行,而不需要(嚴格來說是不完全需要)VMM 截獲重定向。

x86 架構為例,它提供一個略微受限制的硬件運行環境供客戶機運行(non-root mode),在絕大多數情況下,客戶機在此受限環境中運行與原生系統在非虛擬化環境中運行沒有什么兩樣,不需要像軟件虛擬化那樣每條指令都先翻譯再執行,而 VMM 運行在 root mode,擁有完整的硬件訪問控制權限。僅僅在少數必要的時候,某些客戶機指令的運行才需要被 VMM 截獲并做相應處理,之后客戶機返回并繼續在 non-root mode 中運行。可以想見,硬件虛擬化技術的性能接近于原生系統,并且,極大地簡化了 VMM 的軟件設計架構。

軟件虛擬化

軟件虛擬化,顧名思義,就是通過軟件模擬來實現 VMM 層,通過純軟件的環境來模擬執行客戶機里的指令。最純粹的軟件虛擬化實現當屬 QEMU。在沒有啟用硬件虛擬化輔助的時候,它通過軟件的二進制翻譯仿真出目標平臺呈現給客戶機,客戶機的每一條目標平臺指令都會被 QEMU 截取,并翻譯成宿主機平臺的指令,然后交給實際的物理平臺執行。由于每一條都需要這么操作一下,其虛擬化性能是比較差的,同時其軟件復雜度也大大增加。但好處是可以呈現各種平臺給客戶機,只要其二進制翻譯支持。

CPU 虛擬化

詳細內容可參考:https://www.pianshen.com/article/701760589/

cpu 虛擬化指的就是把物理的 cpu 虛擬為多個虛擬 cpu,從而實現一個 cpu 能被多臺虛擬機共用,但是卻相互隔離的場景。cpu 的運轉是以時間為單位的,cpu 虛擬化要解決的問題主要是隔離和調度問題,隔離指的是讓不同的虛擬機之間能夠相互獨立的執行命令,調度指的是 VMM 決定 cpu 當前在哪臺虛擬機上執行。

由于 x86 體系設計的 cpu 在虛擬化上具有一定的缺陷,所以我們有兩種方法來實現 cpu 的虛擬化。其一是采用完全虛擬化的方式,利用動態指令轉換或者硬件輔助來幫助實現 cpu 的虛擬化;其二是采用半虛擬化得方式,在客戶的操作系統內核上進行一定的更改使得操作系統自己明白自己是虛擬機的角色,能夠在 VMM 的管理下盡可能的訪問硬件。(硬件輔助虛擬化 軟件輔助虛擬化)

內存虛擬化

影子頁表:https://www.51cto.com/article/686032.html

擴展表 EPThttps://www.pianshen.com/article/701760589/

內存提出的原因

首先,內存存在的原因是 cpu 運轉速度極快,超過了磁盤的讀取速度,如果 cpu 直接讀取硬盤的話,大部分的時間 cpu 都在等待。同時,程序訪問又擁有局部性原理(80% 的訪問都在訪問數據中 20% 的數據),于是乎就有牛人想到能不能用一小塊兒讀取速率快的存儲設備來存放經常被讀取的數據,這樣 cpu 處理數據的速度就能和存儲器讀取設備的速度相匹配。系統性能達到最大化。

虛擬內存

早期的計算機內存,只有物理內存,而且空間是極其有限的,每個應用或進程在使用內存時都得小心翼翼,不能覆蓋別的進程的內存區。

為了避免這些問題,就提出了虛擬內存的概念,其抽象了物理內存,相當于對物理內存進行了虛擬化,保證每個進程都被賦予一塊連續的,超大的(根據系統結構來定,32 位系統尋址空間為 2^3264 位系統為 2^64)虛擬內存空間,進程可以毫無顧忌地使用內存,不用擔心申請內存會和別的進程沖突,因為底層有機制幫忙處理這種沖突,能夠將虛擬地址根據一個頁表映射成相應的物理地址。

這種機制正是虛擬化軟件做的事,也就是 MMU 內存管理單元。

假設我們設定的虛擬內存是 4G, 虛擬內存就是給系統當中的每一個進程分配 4G 的虛擬地址,這樣每個進程都感覺自己是獨立的使用一塊兒內存,具有良好的隔離性,同時,每個進程都是從 0 的虛擬地址開始的,這樣就更有助于管理進程。但程序要運行,必須要運行在真實的內存上,所以會建立一種映射機制來幫助實現虛擬地址到物理地址之間的映射。

通過虛擬內存的方式實現了進程之間的地址隔離。(32 位的 CPU 的尋址空間是 4G , 所以虛擬內存的最大值為 4G , windows 操作系統把這 4G 分成 2 部分, 2G 的用戶空間和 2G 的系統空間, 系統空間是各個進程所共享的, 他存放的是操作系統及一些內核對象等, 而用戶空間是分配給各個進程使用的, 用戶空間包括用: 程序代碼和數據, , 共享庫, 棧。)

內存的虛擬化

內存的虛擬化指的是把物理內存包裝成若干虛擬內存來使用,把物理內存抽象出來,給每一臺虛擬機都分配一個連續的內存空間。

內存軟件虛擬化的目標就是要將虛擬機的虛擬地址(Guest Virtual Address, GVA)轉化為 Host 的物理地址(Host Physical Address, HPA),中間要經過虛擬機的物理地址(Guest Physical Address, GPA)和 Host 虛擬地址(Host Virtual Address)的轉化,即:GVA -> GPA -> HVA -> HPA

磁盤虛擬化

硬盤虛擬化相對簡單一些,拿 VMvare 來舉例,在 VMvare 當中,會使用物理硬盤上的一個文件來當做虛擬機當中的一個硬盤,虛擬機通過調用相關進程(如 VMvare 進程)訪問相關的宿主機的文件系統,再通過文件系統調用 windows 內核,再調用驅動,然后在磁盤上進行讀寫。

網絡虛擬化

網絡虛擬化是讓一個物理網絡能夠支持多個邏輯網絡,虛擬化保留了網絡設計中原有的層次結構、數據通道和所能提供的服務,使得最終用戶的體驗和獨享物理網絡一樣,同時網絡虛擬化技術還可以高效的利用網絡資源如空間、能源、設備容量等。網絡虛擬化的目的,是要節省物理主機的網卡設備資源。

傳統網絡架構

在傳統網絡環境中,一臺物理主機包含一個或多個網卡(NIC),要實現與其他物理主機之間的通信,需要通過自身的 NIC 連接到外部的網絡設施

這種架構下,為了對應用進行隔離,往往是將一個應用部署在一臺物理設備上,這樣會存在兩個問題

  1. 是某些應用大部分情況可能處于空閑狀態
  2. 是當應用增多的時候,只能通過增加物理設備來解決擴展性問題。不管怎么樣,這種架構都會對物理資源造成極大的浪費。

虛擬化網絡架構

借助虛擬化技術對一臺物理資源進行抽象,將一張物理網卡虛擬成多張虛擬網卡(vNIC),通過虛擬機來隔離不同的應用。

這樣對于上面的問題

  1. 可以利用虛擬化層 Hypervisor 的調度技術,將資源從空閑的應用上調度到繁忙的應用上,達到資源的合理利用
  2. 可以根據物理設備的資源使用情況進行橫向擴容,除非設備資源已經用盡,否則沒有必要新增設備。這種架構如下所示。

虛擬機與虛擬機之間的通信,由虛擬交換機完成,虛擬網卡和虛擬交換機之間的鏈路也是虛擬的鏈路,整個主機內部構成了一個虛擬的網絡,如果虛擬機之間涉及到三層的網絡包轉發,則又由另外一個角色——虛擬路由器來完成。

一般,這一整套虛擬網絡的模塊都可以獨立出去,由第三方來完成,如其中比較出名的一個解決方案就是 Open vSwitchOVS)。

OVS 的優勢在于它基于 SDN 的設計原則,方便虛擬機集群的控制與管理,另外就是它分布式的特性,可以「透明」地實現跨主機之間的虛擬機通信

總結:網絡虛擬化主要解決的是虛擬機構成的網絡通信問題,完成的是各種網絡設備的虛擬化,如網卡、交換設備、路由設備等。

常用虛擬化技術簡介

KVM

KVM 為完全虛擬化技術,依賴在操作系統上,需要在操作系統上運行,不能直接在物理機上運行,這種虛擬化必須要求 cpu 支持虛擬化功能,即虛擬化模塊內置在 cpu 中,因此 kvm 就不用將 cpu 和內存全部模擬出來,直接調用物理機 cpu 和內存只需對它們執行分配操作,使得虛擬機的性能大大提升,其性能與物理機基本相當,kvm 模塊是內置在 linux 系統中的,是系統自帶的,無需再安裝。

XEN

半虛擬化,要求客戶機系統的內核要知道自己是在虛擬化環境中運行,所以客戶機系統架構要和宿主機或物理機系統架構相同,即需要支持客戶機系統內核的修改;支持內核修改的系統必然是開源系統,而閉源系統就不支持內核修改,例如微軟、蘋果的操作系統都不開源,不支持 xen 半虛擬化技術 ,這是 XEN 的一大缺陷,3.0 版本之后也支持完全虛擬化。

KVM XEN 對比

由于現在大多數 CPU 都內置虛擬化功能,所以基本都支持 KVM 虛擬化技術;而 XEN 虛擬化技術必須得是開源的操作系統、需要修改客戶機系統內核、要保持客戶機系統架構和宿主機系統架構一致,這是 XEN 的一大致命缺陷,避免不了逐漸被 KVM 替代,不過 3.0 版本之后 XEN 也支持完全虛擬化,提高了兼容性,由于 KVM 的火熱依然擋不住被 KVM 替代。

VMWARE

虛擬化 VNWARE-esxi 是一個獨立的操作系統,直接運行在物理機上,不依賴操作系統,esxi 有自帶的服務端管理服務器,可創建虛擬機,上傳鏡像文件,此管理服務器不支持虛擬機的移動;但將 vsphere-server 安裝在 window-server2008 上可以實現遠程服務端管理虛擬機,支持將虛擬機的移動到另一臺物理機上,同樣支持虛擬機的創建和 iso 鏡像文件的上傳。

磁盤格式

  1. raw:指定多大空間就創建多大空間,相當于一個占用物理空間的文件,可以直接掛載使用,數據的保存在磁道上是順序保存,所以其性能是最好的,但占用的空間是最大的,不利于虛擬機的遷移,KVM XEN 默認此磁盤格式。
  2. qcow2:主流的虛擬化鏡像格式,可以在鏡像上做多個快照,數據的保存在磁道上是隨機的,性能接近 RAW 磁盤格式,磁盤占用更小的存儲空間,磁盤占用物理空間的大小是隨著存入磁盤的數據的增加而增大,虛擬機的遷移比 RAW 格式更快捷。
  3. vmdkkvm XEN 等虛擬技術上用的不多,但在 vmware-esxi 上此鏡像格式性能還是相當穩定,比較出色。

KVM 使用

KVM

安裝虛擬化服務器平臺

  • KVM /QEMU /LIBVIRTD
    • KVM linux 內核的模塊,它需要 CPU 的支持,采用硬件輔助虛擬化技術 Intel-VTAMD-V,內存的相關如 Intel EPT AMD RVI 技術
    • QEMU 是一個虛擬化的仿真工具,通過 ioctl 與內核 kvm 交互完成對硬件的虛擬化支持
    • Libvirt 是一個對虛擬化管理的接口和工具,提供用戶端程序 virsh ,virt-install, virt-manager, virt-view 與用戶交互

必備軟件

  • qemu-kvm
    • kvm 提供底層仿真支持
  • libvirt-daemon
    • libvirtd 守護進程,管理虛擬機
  • libvirt-client
    • 用戶端軟件,提供客戶端管理命令
  • libvirt-daemon-driver-qemu
    • libvirtd 連接 qemu 的驅動

虛擬機的組成

  • 內核虛擬化模塊(KVM
  • 系統設備仿真(QEMU
  • 虛擬機管理程序(LIBVIRT
  • 一個 XML 文件(虛擬機配置聲明文件)
  • 位置 /etc/libvirt/qemu/
  • 一個磁盤鏡像文件(虛擬機的硬盤)
  • 位置 /var/lib/libvirt/images/

啟動 libvirtd 服務端

  • libvirtd 為管理虛擬機提供服務接口
    • 調用 dnsmasq 提供 DNSDHCP 等功能
    • 建立 virbr0 虛擬網絡(192.168.122.0/24
  • systemctl restart libvirtd (裝完包后啟動服務)

Virsh 控制工具

virsh 命令工具介紹

  • 提供管理各虛擬機的命令接口
    • 支持交互模式,查看 / 創建 / 停止 / 關閉.. ..
    • 格式:virsh 控制指令 [虛擬機名稱] [參數]

查看虛擬化信息

  • 查看 KVM 節點(服務器)信息
    • virsh nodeinfo
  • 列出虛擬機
    • virsh list [--all]
  • 列出虛擬網絡
    • virsh net-list [--all]
  • 查看指定虛擬機的信息
    • virsh dominfo 虛擬機名稱

開關機操作

  • 運行 | 重啟 | 關閉挃定的虛擬機
    • virsh start|reboot|shutdown 虛擬機名稱
  • 強制關閉指定的虛擬機
    • virsh destroy 虛擬機名稱
  • 將指定的虛擬機設為開機自動運行
    • virsh autostart[--disable] 虛擬機名稱

XML 配置文件

導出虛擬機

  • xml 配置文件
    • 定義了一個虛擬機的名稱、UUIDCPU、內存、虛擬磁盤、網卡等各種參數設置
    • 默認位于 / etc/libvirt/qemu / 虛擬機名. xml
  • 導出 xml 配置文件
    • 查看:virshdumpxml 虛擬機名
    • 備份:virshdumpxml 虛擬機名 > 虛擬機名. xml

編輯虛擬機設置

  • 對虛擬機的配置進行調整
    • 編輯:virsh edit 虛擬機名
    • 若修改 nameuuiddiskmac,可自動保存為新虛擬機配置

導入虛擬機

  • 根據修改后的獨立 xml 文件定義新虛擬機
    • virsh define XML 描述文件

刪除虛擬機

  • 必要時可去除多余的 xml 配置
    • 比如虛擬機改名的情況
    • 避克出現多個虛擬機的磁盤或 MAC 地址沖突
    • virsh undefine 虛擬機名

鏡像管理

常用鏡像盤類型

  • 虛擬機的磁盤鏡像文件格式

特點類型

RAW

QCOW2

KVM 默認

I/O 效率

較高

占用空間

壓縮

不支持

支持

后端盤復用

不支持

支持

快照

不支持

支持

創建虛擬機磁盤鏡像

  • 創建新的鏡像盤文件
    • qemu-img create -f 格式磁盤路徑大小
  • 查詢鏡像盤文件的信息
    • qemu-img info 磁盤路徑

創建 / 還原 / 刪除快照

  • 快照的作用
    • 在虛擬機磁盤鏡像內記錄不同時間點的狀態數據備份
    • 必要時可將虛擬機恢復到指定的快照
  • 基本用法
    • qemu-img snapshot -c 快照名 qcow2 磁盤
    • qemu-img snapshot -l qcow2 磁盤
    • qemu-img snapshot -a 快照名 qcow2 磁盤
    • qemu-img snapshot -d 快照名 qcow2 磁盤

快速創建虛擬機

重點!!!

一臺 KVM 虛擬機的組成

  • 一臺 KVM 虛擬機的組成
    • xml 配置文件:定義虛擬機的名稱、UUIDCPU、內存、虛擬磁盤、網卡等各種參數設置
    • 磁盤鏡像文件:保存虛擬機的操作系統及文檔數據,鏡像路徑取決于 xml 配置文件中的定義

基本思路

  1. 準備一臺模板虛擬機(鏡像磁盤 + xml 配置文件)
  2. 基于磁盤復用技術快建新虛擬機的磁盤
  3. 通過調整模板機的配置快建新虛擬機的 xml 配置文件
  4. 導入新虛擬機

COW 技術原理

  • Copy On Write,寫時復制
    • 直接映射原始盤的數據內容
    • 當原始盤的舊數據有修改時,在修改之前自勱將舊數據存入前端盤
    • 對前端盤的修改丌回寫到原始盤

模板機的初始化

  1. 預裝軟件 / 系統優化 / 關閉 SELinux
  2. 生產環境可以標記 /.unconfigured,方便新虛擬機的配置(相當于出廠設置,提示用戶初始化)
  3. 備份好模板磁盤、xml 配置文件
  4. 刪除模板機(undefine

快速創建 qcow 前端盤

  • qemu-img 通過 - b 選項復用挃定后端盤
    • qemu-imgcreate -f qcow2 -b 后端盤前端盤

配置新虛擬機

  • 拷貝模板機的 xml 配置
    • 挄照需要修改,并據此定義新虛擬機

新虛擬機的交付使用

  • 正常運行快建的新虛擬機
    • 檢查已有裝好的操作系統,登入后不模板機一樣
    • 用戶自行修改主機名 / IP 地址等參數
  • 擴展:使用 guestmount 工具
    • 支持離線掛載 rawqcow2 格式虛擬機磁盤
    • 可以在虛擬機關機的情況下,直接修改磁盤中的文檔
    • 方便對虛擬機定制、修復、腳本維護

如何掛載虛擬盤

  • 基本用法
    • guestmount -a 虛擬機磁盤路徑 -i / 掛載點

 

 

 

 

服務熱線:400-610-7333 | 郵箱:service@gpos.cn | 電話:8610-82564561/71 | 傳真:8610-82564561-8025 | 京ICP備18017976號 | 京公網安備 11010802036102號 Copyright ? 2005-2025 Beijing Golden Point Outsourcing Service Co., Ltd. All Rights Reserved. | 北京金支點技術服務有限公司保留所有權利。