1. 虛擬化基礎概念
01. 什么是虛擬化?
虛擬化,是指通過虛擬化技術將一臺計算機虛擬為多臺邏輯計算機,在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的作業系統,并且應用程式都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的作業效率
虛擬化使用軟體的方法重新定義劃分IT資源,可以實作IT資源的動態分配、靈活調度、跨域共享,提高IT資源利用率,使IT資源能夠真正成為社會基礎設施,服務于各行各業中靈活多變的應用需求,

02. 為什么要用虛擬化?
提高計算機資源的利用率和程式運行環境的安全隔離,還可以有效限制程式的資源占用
優勢:
1.降低運營成本
服務器虛擬化降低了IT基礎設施的運營成本,令系統管理員擺脫了繁重的物理服務器、OS、中間件及兼容性的管理作業,減少人工干預頻率,使管理更加強大、便捷,
2.提高應用兼容性
服務器虛擬化提供的封裝性和隔離性使大量應用獨立運行于各種環境中,管理人員不需頻繁根據底層環境調整應用,只需構建一個應用版本并將其發布到虛擬化后的不同型別平臺上即可,
3.加速應用部署
采用服務器虛擬化技術只需輸入激活配置引數、拷貝虛擬機、啟動虛擬機、激活虛擬機即可完成部署,大大縮短了部署時間,免除人工干預,降低了部署成本,
4.提高服務可用性
用戶可以方便地備份虛擬機,在進行虛擬機動態遷移后,可以方便的恢復備份,或者在其他物理機上運行備份,大大提高了服務的可用性,
5.提升資源利用率
通過服務器虛擬化的整合,提高了CPU、記憶體、存盤、網路等設備的利用率,同時保證原有服務的可用性,使其安全性及性能不受影響,
6.動態調度資源
在服務器虛擬化技術中,資料中心從傳統的單一服務器變成了統一的資源池,用戶可以即時地調整虛擬機資源,同時資料中心管理程式和資料中心管理員可以靈活根據虛擬機內部資源使用情況靈活分配調整給虛擬機的資源,
7.降低能源消耗
通過減少運行的物理服務器數量,減少CPU以外各單元的耗電量,達到節能減排的目的,
03. 虛擬化在企業中的應用場景?
場景1:多版本作業系統共存,小公司經常會出現的一種比較尷尬的問題,只有一臺服務器,非要同時運行windows和Linux,只有虛擬化才能完美解決.
場景2:機房遷移,沒有虛擬化之前,遷移非常痛苦,物理機搬遷中途損傷,新機房很難復原舊環境,物理機老化可能再也開不了機,這些都是問題,有了虛擬化之后,搬遷變得簡單,只需拷貝虛擬機的檔案即可
場景3:相同業務部署,在沒有虛擬化之前,部署業務,每次都是從安裝系統開始,一步一步安裝軟體,效率非常低!有了虛擬化,只需克隆模板機即可
場景4:軟體發布體驗,有的軟體安裝特別繁瑣,導致很多普通用戶都無法安裝成功,為了讓這部分用戶能體驗到軟體的功能,可以制作一個虛擬機模板,讓用戶直接使用體驗,例如zabbix就有現成的虛擬機模板
04. 虛擬化軟體介紹
Xen
Xen是一個開放源代碼虛擬機監視器,由XenProject開發,它打算在單個計算機上運行多達128個有完全功能的作業系統, 在舊(無虛擬硬體)的處理器上執行Xen,作業系統必須進行顯式地修改("移植")以在Xen上運行(但是提供對用戶應用的兼容性),這使得Xen無需特殊硬體支持,就能達到高性能的虛擬化, 軟體純模擬全虛擬化軟體,特別慢!
QEMU
QEMU是一套由法布里斯·貝拉(Fabrice Bellard)所撰寫的模擬處理器的自由軟體,它與Bochs(Bochs是一個x86硬體平臺的開源模擬器,它可以模擬各種硬體的配置,),PearPC(實作PC機上安裝Mac OS)近似,但其具有某些后兩者所不具備的特性,如高速度及跨平臺的特性,經由KVM(早期為kqemu加速器,現在kqemu已被KVM取代)這個開源的加速器,QEMU能模擬至接近真實電腦的速度,QEMU有兩種主要運作模式: User mode模擬模式,亦即是用戶模式,
QEMU能引導那些為不同中央處理器編譯的Linux程式,而Wine(運行 Windows 應用的兼容層,)及Dosemu(DOS模擬器)是其主要目標, System mode模擬模式,亦即是系統模式,
QEMU能模擬整個電腦系統,包括中央處理器及其他周邊設備,它使得為系統源代碼進行測驗及除錯作業變得容易,其亦能用來在一部主機上模擬數部不同虛擬電腦, 性能特別好,但是需要使用專門修改之后的內核,
小結:
xen 純軟體模擬,特別慢
qemu 需要一個專門的內核,性能特別好
kvm 基于內核的 2.6.20以上的版本內核
kvm的優點:
kvm是一種年輕的虛擬化技術,在出生的時候就吸收了其他虛擬化技術的優點,而且架構簡單,沒有歷史兼容性的包袱,性能表現優異,使用越來越廣
05. Kvm介紹
1.KVM是開源軟體,全稱是kernel-based virtual machine(基于內核的虛擬機),
2.是x86架構且硬體支持虛擬化技術(如 intel VT 或 AMD-V)的Linux全虛擬化解決方案,
3.它包含一個為處理器提供底層虛擬化,可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko),
4.KVM還需要一個經過修改的QEMU軟體(qemu-kvm),作為虛擬機上層控制和界面,
5.KVM能在不改變linux或windows鏡像的情況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)并為每一個虛擬機配置個性化硬體環境(網卡、磁盤、圖形配接器……)同時KVM還能夠使用ksm技術幫助宿主服務器節約記憶體,
6.在主流的Linux內核,如2.6.20以上的內核均已包含了KVM核心,
Kvm的優點:KVM是一種年輕的虛擬化技術,在出生的時候就吸收了其他虛擬化技術的優點,而且架構簡單,沒有歷史兼容性的包袱,性能表現優異,使用越來越廣!
03. 安裝VNC軟體(遠程桌面管理工具)
遠程鏈接地址:10.0.0.161:5900
#下載vnc軟體方法,tightvnc官網:http://www.tightvnc.com
? VNC軟體,用于VNC(Virtual Network Computing),為一種使用RFB協議的顯示屏畫面分享及遠程操作軟體,此軟體借由網路,可發送鍵盤與滑鼠的動作及即時的顯示屏畫面, VNC與作業系統無關,因此可跨平臺使用,例如可用Windows連接到某Linux的電腦,反之亦同,甚至在沒有安裝客戶端程式的電腦中,只要有支持JAVA的瀏覽器,也可使用,




2. 安裝部署Kvm
環境安裝
1.添加100G硬碟
2.重啟生效
3.初始化
[root@webvirtmgr ~]# mkfs.xfs /dev/sdb
meta-data=https://www.cnblogs.com/dev/sdb isize=512 agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
4.掛載
mount /dev/sdb /opt
01. 如果采用的是虛擬機安裝,需要開啟虛擬機的虛擬化技術

02. Kvm虛擬化管理軟體的安裝
[root@kvm01 ~]# yum install -y libvirt virt-install qemu-kvm -y
libvirt #虛擬化的管理平臺 kvm qemu xen
virt-install #安裝克隆虛擬機
qemu-kvm qemu-img #磁盤管理,底層平臺
#查看是否支持kvm
lsmod|grep -i kvm
#啟動
[root@kvm01 ~]# systemctl start libvirtd
#安裝虛擬機
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
--virt-type kvm #虛擬化的型別 (qemu效率慢)
--os-type=linux #系統型別
--os-variant rhel7 #客戶機的安裝系統,centos-7系列
--name centos7 #虛擬機的名稱
--memory 1024 #虛擬機的記憶體
--vcpus 1 #CPU的核心
--disk /opt/centos7.raw,format=raw,size=10 #磁盤 ,磁盤的格式 raw 性能好,不支持快照 qcow2,支持快照,默認G為大小
--cdrom /opt/CentOS-7-x86_64-DVD-1810.iso #鏡像位置
--network network=default #網路
--graphics vnc,listen=0.0.0.0 #顯示幕 vnc
--noautoconsole #禁止自動consle連接控制臺
vnc安裝出問題處理方法(版本7.5有坑,不建議使用):
1.操作如下步驟
virsh list --all
virsh destroy centos7
virsh undefine centos7
rm -fr /opt/centos7.raw
2.調整記憶體
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos7.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1810.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
3.重新安裝
#不是默認盤手動創建盤
qemu-img create /opt/centos7.raw 20G
安裝需要配置的幾個點

kvm主機管理
[root@kvm01 opt]# virsh list --all #顯示所有的主機
Id Name State
----------------------------------------------------
4 centos7 running
[root@kvm01 opt]# virsh list #只顯示開機狀態的主機
Id Name State
----------------------------------------------------
4 centos7 running
#查看主機的配置資訊
[root@kvm01 opt]# virsh dominfo centos7
Id: 4
Name: centos7
UUID: 633eccfd-afb3-408e-a1c5-cc501d442663
OS Type: hvm
State: running
CPU(s): 1
CPU time: 24.4s
Max memory: 1048576 KiB
Used memory: 1048576 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0
#關機
[root@kvm01 opt]# virsh shutdown centos7
Domain centos7 is being shutdown
#拔掉電源進行關機
[root@kvm01 opt]# virsh destroy centos7
Domain centos7 destroyed
#啟動
[root@kvm01 opt]# virsh start centos7
Domain centos7 started
[root@kvm01 opt]# virsh list --all
Id Name State
----------------------------------------------------
5 centos7 running
#重啟
[root@kvm01 opt]# virsh reboot centos7 #系統正常是可以用,否則強制關機
#主機的磁盤
[root@kvm01 opt]# ll
total 5924408
-rw------- 1 root root 10737418240 Dec 3 01:33 centos7.raw
#組態檔
[root@kvm01 opt]# ll /etc/libvirt/qemu/
total 4
-rw------- 1 root root 4077 Dec 3 00:58 centos7.xml
#直接修改組態檔
[root@kvm01 opt]# virsh edit centos7
#查看運行中的主機的對應的埠號
[root@kvm01 opt]# virsh vncdisplay centos7
:0
#掛起虛擬主機
[root@kvm01 opt]# virsh suspend centos7
Domain centos7 suspended
#恢復虛擬主機
[root@kvm01 opt]# virsh resume centos7
Domain centos7 resumed
#關機
[root@kvm01 opt]# virsh shutdown qls
Domain qls is being shutdown
#修改名稱(低版本不支持centos7.3開始)
[root@kvm01 opt]# virsh domrename qls centos7
Domain successfully renamed
#修改組態檔
[root@kvm01 opt]# virsh edit centos7
<source file='/opt/centos7.raw'/> #修改磁盤名稱
#修改磁盤名稱
[root@kvm01 opt]# mv qls.raw centos7.raw
#啟動
[root@kvm01 opt]# virsh start centos7
Domain centos7 started
[root@kvm01 opt]# virsh list --all
Id Name State
----------------------------------------------------
9 centos7 running
#調整記憶體 (調小)
[root@kvm01 opt]# virsh setmem centos7 524288
[root@kvm01 opt]# virsh dominfo centos7 |grep -i mem
Max memory: 1048576 KiB
Used memory: 524288 KiB
#關機
[root@kvm01 opt]# virsh shutdown centos7
Domain centos7 is being shutdown
#修改組態檔,帶有語法檢查
[root@kvm01 opt]# virsh edit centos7 #修改記憶體
<domain type='kvm'>
<name>centos7</name>
<uuid>633eccfd-afb3-408e-a1c5-cc501d442663</uuid>
<memory unit='KiB'>2097152</memory> #最大限制
<currentMemory unit='KiB'>2097152</currentMemory> #允許使用
<vcpu placement='static'>1</vcpu> #修改CPU核心數
[root@kvm01 opt]# virsh start centos7 #啟動
Domain centos7 started
[root@kvm01 opt]# virsh dominfo centos7 |grep -i mem #檢查
Max memory: 2097152 KiB
Used memory: 2097152 KiB
匯出,洗掉,恢復組態檔
\#匯出主機配置資訊
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-bak.xml
[root@kvm01 /opt]# ll
total 13544120
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml
\#刪除主機資訊,只有關機狀態下才能關機
[root@kvm01 /opt]# virsh undefine centos7
Domain centos7 has been undefined
\#匯入主機配置資訊
[root@kvm01 /opt]# virsh define centos7-bak.xml
Domain centos7 defined from centos7-bak.xml
注意:
\#開機狀態下,洗掉主機資訊,洗掉了組態檔,不會洗掉磁盤檔案
[root@kvm01 /opt]# virsh undefine centos7
Domain centos7 has been undefined
關機,就生效
先備份
\#匯出主機配置資訊
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-bak.xml
\#匯入主機配置資訊
[root@kvm01 /opt]# virsh define centos7-bak.xml
Domain centos7 defined from centos7-bak.xml
補充:

virsh日志管理和配置
| 引數 | 引數說明 |
|---|---|
| 基礎操作 | |
| list | 查看虛擬機串列,列出域 |
| start | 啟動虛擬機,開始一個(以前定義的)非活躍的域 |
| shutdown | 關閉虛擬機,關閉一個域 |
| destroy(危險) | 強制關閉虛擬機,銷毀(停止)域 |
| dominfo | 顯示主機基本資訊 |
| vncdisplay | 查詢正在運行狀態下的虛擬機vnc埠號 |
| setmem | 調整主機記憶體大小,只能調小 |
| edit | 編輯組態檔 |
| console | 命令列console進行登錄 |
| 配置管理操作 | |
| dumpxml | 匯出主機配置資訊 |
| undefine | 洗掉主機 |
| define | 匯入主機配置 |
| domrename | 對虛擬機進行重命名(低版本的系統不支持) |
| 掛起與恢復 | |
| suspend | 掛起虛擬機 |
| resume | 恢復虛擬機 |
| 自啟動管理 | |
| autostart | 虛擬機開機啟動 |
| autostart --disable | 取消虛擬機開機啟動 |
| 快照管理 | |
| snapshot-create | 創建快照 |
| snapshot-list | 查看快照串列 |
| snapshot-info | 顯示快照資訊 |
| snapshot-revert | 還原快照 |
| snapshot-delete | 洗掉快照 |
kvm虛擬主機的相關檔案
\#主機的鏡像檔案
[root@qiudao /opt]# ll
-rw------- 1 root root 10737418240 2019-07-22 20:19 centos7.raw
\#主機的組態檔
[root@qiudao /opt]# ll /etc/libvirt/qemu/centos7.xml
-rw------- 1 root root 4078 2019-07-22 21:01 /etc/libvirt/qemu/centos7.xml
#修改虛擬主機組態檔的方法,使用下面命令修改可以對檔案進行語法校驗
[root@qiudao /opt]# virsh edit centos7
\#配置管理操作
[root@kvm01 /opt]# virsh list --all #運行狀態
Id Name State----------------------------------------------------1 centos7 running
\#匯出主機配置資訊
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-bak.xml
[root@kvm01 /opt]# ll
total 13544120
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml
\#關機狀態
[root@kvm01 /opt]# virsh shutdown centos7
Domain centos7 is being shutdown
\#匯出主機配置資訊,關機狀態下的要比開機狀態下的省資源
[root@kvm01 /opt]# virsh dumpxml centos7 > centos7-back.xml
[root@kvm01 /opt]# ll
total 13544124-rw-r--r-- 1 root root 3951 Dec 1 16:12 centos7-back.xml-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml
\#洗掉主機資訊,只有關機狀態下才能關機
[root@kvm01 /opt]# virsh undefine centos7
Domain centos7 has been undefined
\#發現主機的組態檔已經不存在了
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 0drwx------ 3 root root 42 Dec 1 14:10 networks
\#檢查串列也是沒有
[root@kvm01 /opt]# virsh list --all
Id Name State----------------------------------------------------
\#匯入主機配置資訊
[root@kvm01 /opt]# virsh define centos7-bak.xml
Domain centos7 defined from centos7-bak.xml
\#組態檔已經回來了
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 8-rw------- 1 root root 4513 Dec 1 16:24 centos7.xml
\#檢查串列
[root@kvm01 /opt]# virsh list --all
Id Name State----------------------------------------------------- centos7 shut off
\#主機重命名,只能修改關機狀態下的主機,臨時修改
[root@kvm01 /opt]# virsh domrename centos7 qls
Domain successfully renamed
[root@kvm01 /opt]# virsh list --all
Id Name State----------------------------------------------------- qls shut off
\#組態檔名稱已經發生改變
[root@kvm01 /opt]# ll /etc/libvirt/qemu
total 8drwx------ 3 root root 42 Dec 1 14:10 networks
-rw------- 1 root root 4505 Dec 1 16:26 qls.xml
\#磁盤名稱沒有改變,可以通過修改組態檔實作
[root@kvm01 /opt]# ll
total 13544124
-rw-r--r-- 1 root root 3951 Dec 1 16:12 centos7-back.xml
-rw-r--r-- 1 root root 5243 Dec 1 16:10 centos7-bak.xml
-rw------- 1 qemu qemu 10737418240 Dec 1 16:23 centos7.raw
\#掛起與恢復(時間會有變動)
virsh進去
命令可以補全
exit退出
[root@kvm01 ~]# virsh suspend centos7 #掛起,掛起之后主機無法進行任何操作Domain centos7 suspended
[root@kvm01 ~]# virsh resume centos7 #恢復Domain centos7 resumed
**03. 安裝一個CentOS6的系統的虛擬主機**
\#上傳一個CenOS6系統的鏡像到/opt目錄下
[root@qiudao /opt]# ll
-rw-r--r-- 1 root root 3916431360 2019-07-22 22:03 CentOS-6.8-x86_64-bin-DVD1.iso
-rw------- 1 root root 10737418240 2019-07-22 20:19 centos7.raw
-rw-r--r-- 1 qemu qemu 4588568576 2019-07-22 17:58 CentOS-7-x86_64-DVD-1810.iso
[root@qiudao /opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel6 --name centos6 --memory 1024 --vcpus 1 --disk /opt/centos6.raw,format=raw,size=10 --cdrom /opt/CentOS-6.8-x86_64-bin-DVD1.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...Domain installation still in progress. You can reconnect tothe console to complete the installation process.
\#使用TightVNC進行連接,如果centos7是開啟的,那么這個的默認埠號是5901
? 進入之后,開始安裝CenOS6的系統,正常安裝就可以,ip地址設定為自動就可以了,磁區時一定要配置swap磁區,不配置swap磁區,會出現報錯的情況,主機起動不來,
**04. Kvm虛擬機console登錄**
**CentOS-7.X 版本console登錄**
開機自啟,取消
#開機啟動autostart,前提:systemctl enable libvirtd;取消開機啟動autostart --disable
[root@qiudao /opt]# virsh autostart centos7
進入控制臺
virsh console centos7
退出
ctrl+]
實作命令列輸入(跳板機管理的服務:vnc ip地址一致才可以)
centos7開啟censole登錄
#連接到kvm虛擬主機
[root@qiudao /opt]# ssh [email protected]
[root@centos-7 ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
[root@centos-7 ~]# reboot
\#115200n8:能顯示虛擬機的啟動程序,重啟完成后,使用virsh console 連接虛擬機,
[root@qiudao /opt]# virsh console centos7
Connected to domain centos7
Escape character is ^]CentOS Linux 7 (Core)Kernel 3.10.0-957.el7.x86_64 on an x86_64
centos7 login: rootPassword:Last login: Tue Jul 23 09:51:50 from gateway[root@centos-7 ~]#
\#查看終端
[root@centos-7 ~]# whoroot ttyS0 2019-12-01 17:05
\#注意:退出virsh console連接的方法,使用組合鍵Ctrl+]即可
centos6開啟censole登錄
\#開啟centos-6的虛擬主機
[root@qiudao /opt]# virsh start centos6
Domain centos6 started
[root@qiudao /opt]# virsh list --all
Id Name State----------------------------------------------------1 centos7 running2 centos6 running
\#連接到kvm虛擬主機,默認網路是沒有啟動的,需要手動啟動起來
[root@qiudao /opt]# ssh [email protected]
\#1.添加ttyS0的許可,允許root登陸
[root@centos6 ~]# echo "ttyS0" >> /etc/securetty
\#2.編輯/etc/grub.conf中加入console=ttyS0
[root@centos6 ~]# sed -i '/\tkernel/s#.*#& console=ttyS0#g' /boot/grub/grub.conf
\#3.編輯/etc/inittab在最后一行加入內容 S0:12345:respawn:/sbin/agetty ttyS0 115200
[root@centos6 ~]# echo 'S0:12345:respawn:/sbin/agetty ttyS0 115200' >>/etc/inittab
\#4.重啟虛擬主機
[root@centos6 ~]# reboot
\#5.重啟完成后,使用virsh console 連接虛擬機,
[root@qiudao /opt]# virsh console centos6
Connected to domain centos6Escape character is ^]
CentOS release 6.8 (Final)Kernel 2.6.32-642.el6.x86_64 on an x86_64
centos6 login: rootPassword:Last login: Tue Jul 23 02:01:46 from 192.168.122.1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/49833.html
標籤:其他
上一篇:計算機網路—資料鏈路層
下一篇:手機ffbm模式
