01. 什麼是虛擬化?linux
虛擬化,是指經過虛擬化技術將一臺計算機虛擬爲多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每一個邏輯計算機可運行不一樣的操做系統,而且應用程序均可以在相互獨立的空間內運行而互不影響,從而顯著提升計算機的工做效率web
虛擬化使用軟件的方法從新定義劃分IT資源,能夠實現IT資源的動態分配、靈活調度、跨域共享,提升IT資源利用率,使IT資源可以真正成爲社會基礎設施,服務於各行各業中靈活多變的應用需求。windows
02. 爲何要用虛擬化?centos
提升計算機資源的利用率和程序運行環境的安全隔離,還能夠有效限制程序的資源佔用跨域
優點:瀏覽器
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的瀏覽器,也可以使用。
環境安裝
1.添加100G硬盤 2.重啓生效 3.初始化 [root@webvirtmgr ~]# mkfs.xfs /dev/sdb meta-data=/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鏈接控制檯
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
安裝須要配置的幾個點
[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 | 刪除快照 |
\#主機的鏡像文件 [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+]
#鏈接到kvm虛擬主機 [root@qiudao /opt]# ssh root@192.168.122.89 [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+]便可
\#開啓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 root@192.168.122.45 \#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