Linux——KVM虛擬化

目錄標題

  • 虛擬化技術
  • 虛擬化技術發展
  • 案例
  • KVM簡介
  • KVM架構及原理
  • KVM原理
  • KVM虛擬化架構/三種模式
  • 虛擬化前、虛擬化后對比
  • KVM蓋中蓋套娃實驗

虛擬化技術

通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機,在一臺計算機上同時運行多個邏輯計算機,同時每個邏輯計算機可運行不同的操作系統,應用程序都可以在相互獨立的空間內允許而互相不影響,從而提高計算機的工作效率

虛擬化技術發展

雛形:
1961年,IBM709機器實現了分時系統,將CPO占用切分為多個極短的時間片(1/100sec)每一個時間片執行不同的工作,通過對這些時間片進行輪詢
從而將一個CPU偽裝成多個CPU
1972年, IBM正式將system370機的分時系統命名為虛擬機
1990年,IBM推出的system390機支持邏輯分區(將一個CPU分為多份,相互獨立,也就是邏輯分割)
Xen 2003年問世,是一個外部的hypervisor/VMM程序(虛擬機管理程序),能夠控制宿主機和給多個客戶機分配資源
KVM:2007年問世,現已內置在kernel內核中的
Xen支持的虛擬化技術:全虛擬化,半虛擬化
KVM:支持的虛擬化技術:全虛擬化

虛擬化類型

  • 全虛擬化:將物理硬件資源全部通過軟件的方式抽象化,最后進行調用
    ★★使用的方法:使用hypervisor (VMM)軟件,其原理是在底層硬件和服務器之間建立一個抽象層,而基于核心的虛擬機是面向Linux系統的開源產品hypervisor (VMM)可以捕捉cPu的指令,為指令訪問硬件控制器和外設充當中介。
  • 半虛擬化:需要修改操作系統
  • 直通:直接使用物理硬件資源(需要支持,還不完善)

特性:

  • 優勢
  • 集中化管理(遠程管理、維護)
  • 提高硬件利用率(物理資源利用率低-例如峰值,虛擬化解決了“空閑”容量)
  • 動態調整機器/資源配置(虛擬化把系統的應用程序和服務硬件分離、提高了靈活性)
  • 高可靠(可部署額外的功能的方案,可提高透明負載均衡、遷移、恢復復制等應用環境)
  • 劣勢
  • 前期高額費用(初期硬件支持)
  • 降低硬件利用率(特定場景-例如極度吃資源的應用不一定適合虛擬化)
  • 更大的錯誤影響面(本地物理機down機會導致虛擬機均不可用,同時可能虛擬機中文件全部損壞)
  • 實施配置復雜、管理復雜(管理人員運維、排障困難)
  • 一定的限制性(虛擬化技術設計各種限制,必須與支持/兼容虛擬化的服務器、應用程序及供應商結合使用)
  • 安全性(虛擬化技術自身的安全隱患)

案例

VMwareWorkstation:使用軟件達到虛擬多操作系統
VirtualBox:使用軟件虛擬出多物理設備功能
以VMwareWorkstation為例
Workstation支持Intel公司和AMD公司的虛擬化技術
硬件復制虛擬化技術Intel-TV-x AMD-V

Intel VT-x技術主要包含CPU、內存和I/0三方面的虛擬化技術,同時提供優化處理(早期為彌補x86架構虛擬化的缺陷)AMD-V是對x86處理器系統架構的一組硬件擴展和硬件輔助虛擬化技術,可以簡化純軟件的虛擬化解決方案

改進VMM(虛擬機監視器)的設計,更充分地利用硬件資源,提高服務器和數據中心的虛擬化效率
VMM(虛擬機監視器/管理程序)haperivisor
VM是一個系統軟件,可以維護多個高效、隔離的程序環境(虛擬機),同時可以管理計算機系統的真實資源、為虛擬機提供接口

VMM功能:
對物理資源進行邏輯分割(轉化為虛擬資源)
是宿主機與應用程序/虛擬機的中介

KVM簡介

廣義KVM:
KVM (Kernel-based Vritual Machine)–基于內核的虛擬機
KVM是基于虛擬化擴展的x86硬件的開源Linux原生的全虛擬化方案(要求cpu支持Intel-VT-x或AMD-V)
KVM內嵌于內核模塊中,模擬處理器和內存以支持虛擬機運行
虛擬機被實現為常規的Linux進程,由標準 Linux調度程序進行調度;
虛擬機的每個虛擬CPU被實現為一個常規的Linux進程。這使得KMV能夠使用Linux內核的已有功能
但KWM本身不執行任何模擬。需要客戶空間程序(虛擬機)通過/dev/kvm(此虛擬設備需要開起硬件輔助虛擬化才能看到)接口設置一個客戶機虛擬服務器的地址空間,并且由Qemu模擬I/o (ioctl)進行調度資源和維護管理
Libvirt:KVM的管理工具,除了可以管理KVM這類VMM,還可以管理Xen,VirtualBox,甚至OpenStack底層Libvirt包含3個組件:后臺daemon程序libvirtd、API庫、命令行工具virsh

KVM架構及原理

1.客戶模式(guestOS):VM中的OS為GuestOS
客戶機在操作系統中運行的模式,客戶機分為內核模式和用戶模式
2.用戶模式:
為用戶提供虛擬機管理的用戶空間格局以及代表用戶執行I/O,Qemu工作在此模式下(Qemu的主要功能)
3.內核模式:
模擬CPU、內存,實現客戶模式切換,處理從客戶模式的退出,KVM即運行在此模式下

KVM原理

1、Guest:客戶機系統,包括CPU(vCPU)、內存、驅動(Console、網卡、I/O設備驅動等),被KVM置于一種受限制的CPU模式下運行。
2、KVM內核模塊模擬處理器和內存以支持虛擬機運行
3、Qemu主要處理I/O以及為客戶提供一個用戶空間/dev/kvm 工具libvirt來進行虛擬機管理ioctl(定義)專用于設備輸入輸出操作的系統調用
libvirt: KVM管理工具
以上構成一個完整的虛擬化平臺

簡單理解:
KVM驅動提供處理器、內存的虛擬化,以及客戶機I/o的攔截(攔截敏感指令),guest的I/O被攔截后,交由Qemu處理
Qemu利用接口libkvm調用(ioctl)虛擬機設備接口/dev/kvm來分配資源、管理、維護虛擬機

KVM虛擬化架構/三種模式

1、客戶模式(guestoS):VM中的os為GuestoS
客戶機在操作系統中運行的模式,客戶機分為內核模式和用戶模式,作用如下:
2、用戶模式:
為用戶提供虛擬機管理的用戶空間工具以及代表用戶執行I/o,Qemu工作在此模式下(Qemu的主要功能)
3、 linux內核模式
模擬cPU、內存,實現客戶模式切換,處理從客戶模式的退出,KVM即運行在此模式下

KVM工作流程
用戶模式的Qemu利用接口 libkvm通過ioctl系統調用進入內核模式。KVM驅動為虛擬機創建虛擬CPU 和虛擬內存,然后執行VMLAU·NCH 指令進入客戶模式,裝載Guest 0S并運行。Guestos 運行過程中如果發生異常,則暫停Guest OS的運行并保存當前狀態同時退出到內核模式來處理這些異常。
內核模式處理這些異常時如果不需要I/o則處理完成后重新進入客戶模式。如果需要I/O則進入到用戶模式,則由Qemu來處理I/0,處理完成后進入內核模式,再進入客戶模式

思路:

  • KVM技術介紹
    是什么技術:虛擬化
  • KVM技術定位(實際用用)
    workstation、virtualbox
    模擬硬件資源/設備/操作系統
  • KVM虛擬化技術核心功能(原理方面)
    QEMU工作在用戶層,控制libkvm工具(工具作用,控制內核中的KVM)來調用物理虛擬化資源(調用物理虛擬化資源的防護是ioctl,供給虛擬機))
    KVM(工作在內核層,虛擬化/抽象化物理硬件資源,供給Qemu組件調用),同時負責攔截一些I/O的敏感指令,轉交給Qemu進行處理
  • KVM各核心組件功能
    Qemu
    功能:控制I/O虛擬化,調用硬件資源
    KVM
    功能:為虛擬機提供CPU、內存(硬件資源)的虛擬化,提供敏感指令攔截
    KVM 邏輯分割物理資源好處:
    1、將“空閑”的資源,分配給其他任務,充分利用物理資源
    2、動態的調整機器的資源配置
    3、攔截:避免越權、一定的安全防護保障

虛擬化前、虛擬化后對比

虛擬化前:

  • 每臺主機擁有一個操作系統
  • 軟硬件緊密結合
  • 在同一個主機上運行多個應用程序通常會產生沖突
  • 系統資源利用率低
  • 硬件成本高昂并且不夠靈活

虛擬化后:

  • 打破了操作系統的硬件的互相依賴
  • 通過封裝到虛擬機的技術,管理操作系統和應用程序為單一的個體
  • 強大的安全和故障隔離
  • 虛擬機時獨立于硬件的,它們可以在任何硬件上運行

對比:

  • 操作系統方面(虛擬化前):
  • LAMP架構中(以一臺主機實現)
  • LINUX + Apachen +MySQL + PHP
  • 其中Apachen 與 MySQL資源是共享的
  • 如果架構要求服務間的安全性隔離比較高的話,Apachen的頁面和MySQL數據庫的目錄一定是不能互相碰面,如果Apachen漏洞暴露出來,攻擊者就可以通過Apachen的進程訪問到MySQL的數據目錄,從而獲取MySQL中的數據,這種精神驗證的安全隱患而想解決這種潛在的危險,可以通過實現內核級別的隔離(使用虛擬化技術)

軟硬件結合
因為硬件和操作系統不兼容或者不支持,導致有些軟、硬件功能無法正常使用(也是最難的問題)使用虛擬化,軟硬件之間是會通過虛擬化層驅動進行隔離(調配)的,只要虛擬化層可以識別軟/硬件應用,就可以將軟硬件結合使用

在同一個主機上運行多個應用程序通常會產生沖突
Apache和Nginx定位相同(80端口)
只能使用反向代理的方式進行分離,而同時如果在同一臺機器使用這種方式,Apache和Nginx中重要的數據文件如果同時被泄露出去…而虛擬化可以隔離服務

KVM蓋中蓋套娃實驗

第一步、虛擬機資源
CPU:雙核雙線程-CPU虛擬化開啟
內存:8G
硬盤:40G
在這里插入圖片描述
二、實驗環境
修改主機名
hostnamectl set-hostname kvm
su
將鏡像光盤設為自動/永久掛載
vim /etc/fstab
/dev/cdrom /mnt iso9660 defaults 0 0
mount -a
df -hT

環境優化
設置DNS反向解析
#是否反解DNS,設置為NO可以讓客戶端SSH連接服務器更快
vim /etc/ssh/sshd_config
#取消DNS注釋,改為NO
UseDNS no
在這里插入圖片描述

制作本地yum倉庫
mkdir /abc
cd /etc/yum.repos.d/
ls
mkdir bak
mv CentOS-* bak
vim local.repo
[iso]
name=iso
baseurl=file:///mnt
gpgcheck=0
enabled=1

yum clean all && yum repolist

關閉防火墻、核心防護
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

三、安裝KVM
yum groupinstall -y "GNOME Desktop"安裝 GNOME 桌面環境 如果裝了圖形界面可以不需要裝
yum -y install qemu-kvmKVM 模塊
yum -y install qemu-kvm-tools安裝KVM 調試工具,可不安裝
yum -y install virt-install構建虛擬機的命令行工具
yum -y install qemu-imgqemu 組件,創建磁盤、啟動虛擬機等
yum -y install bridge-utils網絡支持工具
yum -y install libvirt虛擬機管理工具
yum -y install virt-manager圖形界面管理虛擬機

yum groupinstall -y “GNOME Desktop”
yum -y install qemu-kvm
yum -y install qemu-kvm-tools
yum -y install virt-install
yum -y install qemu-img
yum -y install bridge-utils
yum -y install libvirt
yum -y install virt-manager

檢測CPU是否支持虛擬化
cat /proc/cpuinfo | grep vmx
在這里插入圖片描述

查看KVM模塊是否已安裝
Lsmod:顯示已載入的系統模塊
lsmod | grep kvm
在這里插入圖片描述

設置開啟啟動界面的顯示模式
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

三、設置KVM網絡
KVM網絡的兩種模式:
① NAT: 默認設置,數據包由 NAT 方式通過主機的接口進行
傳送,可以訪問外網,但是無法從外部訪問虛擬機網絡
② 網橋:這種模式允許虛擬機像一臺獨立的主機一樣擁有網絡,外部的機器可以直接訪問到虛擬機內部,但需要網卡支持(一般有線網卡都支持)

使用Bridge網橋模式進行部署

vim /etc/sysconfig/network-scripts/ifcfg-ens33
注釋
#IPADDR=192.168.100.46
#PREFIX=24
#GATEWAY=192.168.100.1
BRIDGE=br0 #刪除原先地址,設置為網橋模式,關聯br0網卡

創建、編輯橋接網卡
vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.150.200
NETMASK=255.255.255.0
GATEWAY=192.168.150.2

systemctl restart network
四、KVM部署與管理
創建KVM存儲和鏡像數據的目錄、上傳centos7鏡像
mkdir -p /data_kvm/iso
mkdir -p /data_kvm/store
mount.cifs //192.168.1.16/軟件包 /abc -o username=sensirx,password=sensirx,vers=2.0
cd /abc/軟件包
cp -p CentOS-7-x86_64-DVD-1708.iso /data_kvm/iso/
查看鏡像
ll /data_kvm/iso/
使用虛擬系統管理器管理虛擬機
virt-manager虛擬機中輸入
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42080.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42080.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42080.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

智安網絡|零信任安全框架:保障數字化時代網絡安全的最佳實踐

隨著數字化時代的快速發展,網絡安全問題變得越來越突出。傳統的安全防御模式已經不再適用于現代復雜的網絡環境中。為了應對日益增長的網絡威脅,零信任安全模式應運而生。 一、什么是零信任? 零信任是一種安全框架和哲學,它基于…

pytest的fixture梳理

fixture特性 夾具是在測試中用于提供共享資源、設置測試環境或模擬行為的工具。 1. 可以重復使用,多個用例可以使用同一個fixture 2. 一個測試用例可以使用多個裝置 import pytest # Arrange pytest.fixture def first_entry():return "a"# Arrange pyt…

全新 – Amazon EC2 M1 Mac 實例

去年,在 re: Invent 2021 大會期間,我寫了一篇博客文章,宣布推出 EC2 M1 Mac 實例的預覽版。我知道你們當中許多人請求訪問預覽版,我們盡了最大努力,卻無法讓所有人滿意。不過,大家現在已經無需等待了。我很…

postmarketOS

主步驟 #以下全程插入usb線 fastboot devices fastboot getvar all fastboot erase userdata fastboot erase system fastboot erase cachepmbootstrap init pmbootstrap installpmbootstrap flasher flash_rootfs --partition userdata pmbootstrap flasher flash_kernel…

java生成Excel表格

public HSSFWorkbook CreateJZZJSList() {// 繪制ExcelString fileName "自動分析詳情";HSSFWorkbook wb new HSSFWorkbook();//創建工作相簿對象HSSFSheet sheet wb.createSheet(fileName); // --->創建了一個工作簿sheet.setDefaultRowHeight((short) 600);…

前端開發工具及環境配置

1.前端開發環境node npm環境配置 第一步:打開Download | Node.js (nodejs.org)下載,解壓。 找到下載壓縮包進行解壓 解壓到D盤目錄下: 第二步:配置環境變量:右擊此電腦點擊屬性進入高級系統設置 點擊高級系統設置進入…

項目管理系統是什么?能干什么?有什么功能?一文看懂

閱讀本文您可以了解:1、項目任務管理系統是什么;2、項目任務管理系統的作用;3、項目任務管理系統的功能 一、什么是項目任務管理 項目任務管理是指運用系統的理論方法,在有限的條件和資源下,對項目從開始到結束的全流…

Github下載任意版本的VsCode

下載歷史版本VsCode(zip) 下載鏈接由三部分組成: 固定部分commit idVSCode-win32-x64-版本號.zip 固定部分: https://vscode.cdn.azure.cn/stable/ Commit id: 打開 vscode的GitHub:[https://github.com/microsoft/vscode/r…

(搜索) 劍指 Offer 13. 機器人的運動范圍 ——【Leetcode每日一題】

?劍指 Offer 13. 機器人的運動范圍 難度:中等 地上有一個 m 行 n 列的方格,從坐標 [0,0] 到坐標 [m-1,n-1] 。一個機器人從坐標 [0, 0] 的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外)&…

shell腳本基礎

目錄 前言 一、概述 (一)、shell腳本基礎概念 (二)、shell的類型 二、Shell變量 (一)、組成 1.變量名 2.變量值 (二)、類型 1.系統內置變量(環境變量) 2.自定…

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI轉DP EDP方案設計

PIN TO PIN替代LT8911EXB|CS5523低成本替代LT8911EXB|MIP DSI轉DP EDP方案設計 LT8911EXB是MIPI DSI/CSI 轉eDP轉換芯片,ASL CS5523不需要改電路就可以直接PIN TO PIN替代與兼容LT8911EXB。 ASL CS5523與 LT8911EXB的功能與參數,用途方式以及封裝方式和…

【題解】旋轉數組的最小數字、比較版本號

文章目錄 旋轉數組的最小數字比較版本號 旋轉數組的最小數字 題目鏈接&#xff1a;旋轉數組的最小數字 解題思路1&#xff1a;遍歷求最小值 代碼如下&#xff1a; int minNumberInRotateArray(vector<int> rotateArray) {int min rotateArray[0];for(auto const&…

迪米特法則

迪米特法則&#xff0c;也稱為最少知識原則&#xff08;Law of Demeter&#xff09;&#xff0c;是面向對象設計中的一個原則&#xff0c;旨在降低對象之間的耦合性&#xff0c;提高系統的可維護性和可擴展性。該原則強調一個類不應該直接與其它不相關的類相互交互&#xff0c;…

Android 控件截圖保存本地并分享

目錄 需求 需求分析 一、截圖控件生成圖片 二、將圖片保存至本地 2.1 權限 2.2 保存圖片 2.3 調用 三、分享 四、通過測試機型 需求 截圖當前頁面某個控件的內容&#xff0c;并且保存在本地&#xff0c;可分享。 需求分析 1.截圖控件生成圖片 2.保存至本地(需考慮版…

【SpringCloud】Ribbon定制化配置

文章目錄 使用Ribbon自帶負載均衡算法添加負載均衡算法ConfigurationRestTemplate使用上面負載均衡算法 自定義負載均衡算法負載均衡算法實現RestTemplate在Controller中使用該負載均衡算法ServiceIInstance解釋 使用Ribbon自帶負載均衡算法 添加負載均衡算法Configuration /…

實現矩陣地圖與rviz地圖重合

文章目錄 一、rviz地圖轉換矩形地圖(只能用于全局規劃)二、在rviz上顯示地圖邊界信息,可視化調整,實現重合(只能用于局部規劃)一、rviz地圖轉換矩形地圖(只能用于全局規劃) 此方法矩形地圖可能會與rviz地圖不重合,通過改變偏移量x_offset,y_offset接近地圖 可以將矩…

FL Studio for Windows-21.1.0.3713中文直裝版功能介紹及系統配置要求

FL Studio 21簡稱FL水果軟件,全稱是&#xff1a;Fruity Loops Studio編曲&#xff0c;由于其Logo長的比較像一款水果因此&#xff0c;在大家更多的是喜歡稱他為水果蘿卜&#xff0c;FL studio21是目前最新的版本&#xff0c;這是一款可以讓你的計算機就像是一個全功能的錄音室&…

Docker Dockerfile Docker-compose學習筆記

文章目錄 Centos環境下安裝Docker配置鏡像源 Windows環境下安裝Docker配置鏡像源 使用Dokcer鏡像1.獲取鏡像2.查看鏡像信息(1)列出鏡像(2)鏡像標簽(3)鏡像詳細信息(4)鏡像歷史 3.搜索鏡像4.刪除和清理鏡像(1)使用標簽刪除鏡像(2)使用ID刪除鏡像(3)清理鏡像 5.創建鏡像(1)基于已…

基于SpringBoot和Freemarker的頁面靜態化

頁面靜態化能夠緩輕數據庫的壓力&#xff0c;還能提高頁面的并發能力&#xff0c;但是網頁靜態化是比較適合大規模且相對變化不太頻繁的數據。 頁面靜態化在實際應用中還是比較常見的&#xff0c;比如博客詳情頁、新聞網站或者文章類網站等等。這類數據變化不頻繁比較適合靜態…

56.linux 進程管理命令和用戶管理命令

目錄 一、進程管理命令 1.ps 2.pstree 3.kill 4.pkill 5.&后臺運行程序 6.jobs 7.fg bg 8.top 二、用戶管理命令 1.系統存儲用戶信息的文件 2.添加新用戶 3.修改用戶密碼 4.刪除用戶 一、進程管理命令 1.ps 用于查看當前系統中運行的進程信息。它可以…