虛擬化

一、瞭解虛擬化 
二、常見虛擬化軟件 
三、虛擬化架構
四、kvm介紹
五、Centos7上安裝KVM
六、配置網卡
七、建立虛擬機安裝CentOS7
八、虛擬機管理
九、克隆虛擬機
十、快照管理
十一、磁盤格式
十二、磁盤擴容(raw)
1三、磁盤擴容(qcow2)
1四、調整cpu內存和網卡
1五、遷移虛擬機html

 

1、瞭解虛擬化linux

VMware Workstation就是虛擬化
虛擬化簡單講,就是把一臺物理計算機虛擬成多臺邏輯計算機,每一個邏輯計算機裏面能夠運行不一樣的操做系統,相互不受影響,這樣就能夠充分利用硬件資源
關鍵詞Hypervisor(VMM) ---> 虛擬機管理器,用來管理邏輯計算機的
虛擬化技術分爲全虛擬化和半虛擬化
早期的CPU硬件不支持虛擬化,虛擬機上虛擬化出來的操做系統(guestos)要想使用cpu資源,須要經過VMM來翻譯指令,這個過程比較耗費資源,這種虛擬化技術叫作全虛擬化(VMware Workstation)
半虛擬化技術經過修改guestos內核,讓guestos能夠直接使用CPU資源,而不須要翻譯指令了,從而節省了資源,但修改內核比較雞肋(XEN使用半虛擬化)
後續cpu廠商直接支持虛擬化,不須要經過VMM翻譯指令了,無所謂半虛擬化和全虛擬化
全虛擬化和半虛擬化的區別,參考 http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html  
http://itoedr.lofter.com/post/1472ba_69c62fa

2、常見虛擬化軟件vim

VMware系列:
VMware workstation、VMware vsphere(VMware esxi)、VMware Fusion(Mac) 
Xen 開源 半虛擬化
XenServer 商業,廠商Ctirx,基於Xen的
KVM 開源 基於linux內核模塊
Hyper-V 商業,廠商微軟
Openvz 開源  基於linux 虛擬機和宿主機共用一個內核   #必需要宿主機和guestos使用同一個內核
VirtualBox 開源  Sun公司開發  Oracle收購Sun
http://developer.huawei.com/ict/forum/thread-23385-1-1.html

3、虛擬化架構centos

 參考 http://developer.huawei.com/ict/forum/thread-23385-1-1.html服務器

4、kvm介紹網絡

KVM是以色列初創公司Qumranet開發,2008年9月RedHat公司收購了Qumranet
KVM是Linux內核的一個模塊,它把Linux內核變成了一個Hypervisor(管理程序)
KVM是徹底開源的,RedHat基於KVM的虛擬化解決方案叫作RHEV(收費)
KVM在Linux操做系統裏面以進程的形式出現,由標準的Linux調度程序進行調度,這使得KVM可以使用Linux內核的已有功能
只有一個KVM內核模塊還不能實現虛擬化的所有功能,就比如操做系統只有內核還不能成爲一個完整的操做系統同樣
QEMU是一個開源的虛擬化軟件,純軟件,能夠虛擬化全部的硬件,性能不強
KVM基於QEMU開發了一個可以運行在用戶空間的工具QEMU-KVM;操做系統分爲內核空間和用戶空間,兩個空間是相互隔離的
磁盤、網絡設備等都是經過QEMU-KVM這個工具模擬出來的
KVM和QEMU-KVM通訊是經過/dev/kvm實現的
libvirt是用來管理KVM虛擬機的API,其命令爲virsh
KVM能夠動態調整內存和cpu,不須要重啓,配置文件須要事先定義好最大的內存和cpu數量

KVM架構圖、從下往上看架構

5、Centos7上安裝KVMdom

前提是CPU支持虛擬化
虛擬機設置內存2G,增長一個50G的虛擬磁盤,處理器2核,處理器中的虛擬化引擎兩個虛擬化相關的選項打上對勾ssh

關閉iptables或者firewalld
    systemctl stop firewalld
    systemctl stop iptables
取消開機啓動:
    systemctl disable firewalld
    systemctl disable iptables
關閉selinux   , 查看狀態:    getenforce     
    setenforce 0

檢查cpu參數是否支持虛擬化:工具

grep -Ei 'vmx|svm' /proc/cpuinfo   vmx是英特爾的cpu,svm是AMD的cpu,出現關鍵字表明支持虛擬化

把新增的硬盤格式化並掛載,掛載到/kvm_data:

mkfs.ext4 /dev/sdb  掛載成ext4格式
mkdir /kvm_data
mount /dev/sdb /kvm_data/

vim /etc/fstab 編輯配置文件,開機時直接掛載硬盤

安裝kvm:

yum install -y virt-* libvirt bridge-utils qemu-img

6、配置網卡

建立橋接網卡:
配置網卡,增長橋接網卡,使用橋接模式的話,須要虛擬一個橋接網卡出來,用來提供虛擬機和物理機之間鏈接的

設置一個br0網卡,TYPE爲Bridge,IP地址設置爲ens33的ip

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0

ens33配置文件裏把IP地址去掉,增長BRIDGE=br0(橋接到br0)

vim ifcfg-ens33

重啓網卡 :  /etc/init.d/network restart

檢查KVM模塊是否加載

lsmod | grep kvm

啓動libvirtd服務:

systemctl start libvirtd

brctl show

brctl show能夠看到兩個網卡br0(橋接網卡)和virbr0(libvirtd服務啓動起來的橋接網卡),決定網卡所屬類型,取決於目標橋接網卡是哪個,若是是br0就是橋接模式,virbr0就是NAT模式

7、建立虛擬機安裝CentOS7

iso文件能夠先在本地下載完成,使用xftp上傳到服務器

使用命令行安裝centos7:

virt-install --name=tobe02 --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1810.iso --disk path=/kvm_data/tobe02.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial  --extra-args="console=tty0 console=ttyS0"
name 虛擬機名字
memory內存大小
maxmemory最大內存,能夠在線調整,不須要關機也能夠調整
vcpus 數量
maxvcpus 最大cup數量2
os-type  操做系統類型
os-variant   具體版本rhel7,即centos7
location 指定iso鏡像文件所在路徑,注意鏡像名字
disk path  虛擬硬盤所在路徑,名字,大小
bridge  橋接網卡名字
graphics  是否開啓圖形
console和extra-args  定義終端相關屬性

開始安裝,選擇頁面

一、設置語言
二、時區
三、安裝源
四、軟件選擇
五、目的地
六、Kdump能夠不用設置
七、網絡配置,不用設置
八、root密碼,須要設置
九、建立用戶

輸入要進行設置的序號->回車

按回車後,輸入語言前面的序號,在回車進行選擇,下面選中文簡體,設置完成後,對應的序號前面變成'x'

選擇第5個Installation Destination

安裝提示選擇磁盤,選擇完成按c繼續

下面選擇使用全部空間

而後輸入1選擇標準模板,按c繼續

都設置完成後,選擇b,會進行下面的安裝和分區

安裝完虛擬機須要重啓,要退出虛擬機使用快捷鍵ctrl ]

/kvm_data/tobe02.img  tobe02.img就是第一個虛擬機的虛擬磁盤

8、虛擬機管理

要退出虛擬機使用快捷鍵ctrl ]

ps aux |grep kvm //查看kvm進程
virsh list //查看虛擬機列表,只能看到運行的虛擬機
virsh list --all //查看虛擬機列表,包括未運行的虛擬機

virsh shutdown tobe02 //關閉虛擬機

virsh start tobe02 //開啓虛擬機

virsh console tobe02//進入指定虛擬機

出現紅框中的提示,按回車,纔會出現用戶名輸入提示

此時還沒法鏈接外網
使用dhclient eth0 自動獲取ip地址,能夠鏈接外網,ip地址是和物理機同一個網段的

此時這個ip是自動獲取的,開機啓動,固定這個ip須要設置靜態ip

查看內存、cpu、硬盤的信息:

free -m
cat /proc/cpuinfo
df -h

virsh undefine tobe02//完全銷燬虛擬機,會刪除虛擬機配置文件,但不會刪除虛擬磁盤文件,virsh list --all就看不到了
ls /etc/libvirt/qemu/  //能夠查看虛擬機配置文件,xml格式的

virsh destroy tobe02//相似stop,這個是強制中止、關機,有可能丟失數據
virsh autostart tobe02//宿主機開機該虛擬機也開機
virsh autostart --disable tobe02//解除開機啓動
virsh suspend tobe02//掛起
virsh resume tobe02//恢復

9、克隆虛擬機

virsh shutdown tobe02  克隆前先關機
virt-clone --original tobe02 --name tobe03 --file /kvm_data/tobe03.img   克隆出來的機器叫tobe003
--original指定克隆源虛擬機
--name指定克隆後的虛擬機名字
--file指定目標虛擬機的虛擬磁盤文件

若是tobe02虛擬機開機狀態,則提示先關閉或者暫停虛擬機

ls /etc/libvirt/qemu  tobe03的磁盤文件

克隆完成使用 dhclient eth0   獲取ip

虛擬機運行的狀態下,使用快捷鍵ctrl ]退出,在宿主機使用ssh鏈接便可

10、快照管理

宿主機上操做

raw格式的虛擬磁盤不支持作快照,qcow2(虛擬磁盤的格式)支持

建立快照 :

virsh snapshot-create tobe02

qemu-img info /kvm_data/tobe02.img     //tobe02.img信息,同時會查看到快照列表

啓動狀態的虛擬機屬主屬組爲qemu

virsh snapshot-list tobe02 //列出tobe02的全部快照

virsh snapshot-current tobe02//查看當前快照版本

ls /var/lib/libvirt/qemu/snapshot/tobe02//查看全部快照配置文件,每個快照有一個配置文件
virsh snapshot-revert tobe02 1566551393//恢復指定快照,使用虛擬機名字和快照TAG
virsh snapshot-delete tobe02 1566551393//刪除指定的快照

11、磁盤格式

默認使用qcow2
虛擬磁盤經常使用格式raw、qcow2

qemu-img info /kvm_data/tobe02.img//查看虛擬磁盤格式
qemu-img create -f raw /kvm_data/tobe02_2.img 2G        //建立2G的raw格式磁盤,-f指定格式

把raw格式的磁盤轉換爲qcow2格式:

qemu-img convert -O qcow2 /kvm_data/tobe02_2.img /kvm_data/tobe02_2.qcow2          #-O指定目標格式是什麼,左邊是源文件,右邊是目標文件,轉換完成後,源文件不變,會生成一個新的qcow2格式的文件

轉換後用ls -lh查看磁盤文件的大小,能夠看到qcow2文件比較小,raw文件大小和咱們指定空間大小同樣是2G

raw格式的磁盤性能比qcow2要好,可是raw格式的磁盤沒法作快照

給tobe02轉換爲raw格式的磁盤:

qemu-img convert -O raw /kvm_data/tobe02.img /kvm_data/tobe02_3.raw

轉換完成後,修改配置文件

先關機:    virsh shutdown tobe02

virsh edit tobe02    //更改配置文件,建議使用此方法修改,會檢查語法,更改格式和文件路徑,改成轉換後的磁盤格式
         <driver name='qemu' type='raw'/>
         <source file='/kvm_data/tobe02_3.raw'/>

virsh start tobe02     開啓虛擬機,此時啓動tobe02使用的已是tobe02_3.raw磁盤文件,已經切換成功

12、磁盤擴容 – raw格式

qemu-img resize /kvm_data/tobe02_3.raw +2G            給對應的磁盤加2G
qemu-img info /kvm_data/tobe02_3.raw       查看磁盤信息

此時的容量尚未生效,須要在宿主機上重啓虛擬機才能夠:

virsh destroy tobe02
virsh start tobe02
virsh console tobe02
fdisk -l 查看磁盤狀況,並分新的分區

如何充分利用這2G空間:

fdisk /dev/vda    從新分區->創建新的分區(有2個G的空餘空間)

/dev/vda4   這個新分區的空間是2G

除了對已有磁盤擴容外,還能夠額外增長磁盤:

qemu-img create -f raw /kvm_data/tobe02_2.raw 5G    建立5G的raw格式磁盤

virsh edit tobe02     //增長<disk>…</disk>,注意更改source、target、slot(要保證和上面的還有下面的不重複)

編輯完成後:    
virsh destroy tobe02  或者     virsh shutdown tobe02

virsh start tobe02

virsh console tobe02        進入tobe02後

fdisk -l  能夠看到新增長的5G的磁盤,能夠在進行分區,格式化和掛載,能夠實現擴容

十3、磁盤擴容 – qcow2格式

qemu-img resize /kvm_data/tobe02.img +2G        若是存在快照,在增長磁盤空間時會報錯,須要刪除快照

給tobe03增長空間:

qemu-img resize /kvm_data/tobe03.img +2G
qemu-img info /kvm_data/tobe03.img



virsh destroy tobe03
virsh start tobe03
virsh console tobe03
fdisk -l 查看磁盤狀況,並分新的分區

除了對已有磁盤擴容外,還能夠額外增長磁盤: 方法和raw格式相同

qemu-img create -f qcow2 /kvm_data/tobe03_2.img 5G
virsh edit tobe03 //增長<disk>…</disk>,注意更改source、target、slot
virsh destroy tobe03
virsh start tobe03

十4、調整cpu、內存、網卡

virsh dominfo tobe02     //查看配置

virsh edit tobe02    //更改以下部份內容,更改內存和cpu

<memory unit='KiB'>1048576</memory>
 <currentMemory unit='KiB'>624288</currentMemory>
 <vcpu placement='static' current='2'>2</vcpu>


virsh shutdown tobe02
virsh start tobe02

 virsh dominfo tobe02   此時cpu變爲2,可是使用內存實際是沒有用這麼多的,須要進入虛擬機查看

更改前的內存大小:

virsh console tobe02  進入虛擬機

更改後的內存大小,存在必定偏差:

KVM能夠動態調整內存和cpu,不須要重啓,配置文件須要事先定義好最大的內存和cpu數量

virsh setmem tobe02 800m    //動態調整內存,內存能夠減少

virsh setvcpus tobe02 2 //動態調整cpu數量,只能增長cpu數量,沒法減少

動態調整後,配置文件中是不會更改的,重啓後還會加載配置文件中的配置

須要把配置寫入到配置文件裏,重定向過去

virsh dumpxml tobe02 > /etc/libvirt/qemu/tobe02.xml   

virsh edit tobe02 使用此命令查看仍是維持在以前的狀態,由於它存儲在內存裏,在內存裏調用配置文件,此時須要重啓libvirtd服務,會從新加載/etc/libvirt/qemu/tobe02.xml配置文件,最簡單的方法就是直接把配置文件更改便可

systemctl restart libvirtd   重啓後變動

virsh domiflist tobe02    //查看網卡

virsh attach-interface tobe02 --type bridge --source virbr0//增長一塊新的網卡,並設置爲nat網絡模式(virbr0相似vmware的vmnet8),這裏若是寫--source br0,則網絡模式爲橋接,source指定橋接到哪塊網卡上

配置生效:

virsh dumpxml tobe02 > /etc/libvirt/qemu/tobe02.xml    //須要把配置寫入到配置文件裏,須要重啓libvirtd服務,從新加載配置文件

virsh console tobe02  進入虛擬機

此處的nat網段和宿主機的virbr0是一個網段的

 

十5、遷移虛擬機

從一臺機器,遷移到另外一臺機器,須要都按照KVM

該方式要確保虛擬機是關機狀態

virsh shutdown tobe02

virsh dumpxml tobe02 > /etc/libvirt/qemu/tobe01.xml     //若是是遠程機器,須要把該配置文件拷貝到遠程機器上,此處在本機操做

查看虛擬機磁盤所在目錄:

virsh domblklist tobe02

rsync -av /kvm_data/tobe02.img  /kvm_data/tobe01.img      //若是是遷移到遠程,則須要把該磁盤文件拷貝到遠程機器上,這裏是遷移到本機
vim /etc/libvirt/qemu/tobe01.xml      //由於是遷移到本機,配置文件用的是tobe02子機的配置,不改會有衝突,因此須要修改該文件,若是是遠程機器不用修改
    修更名稱:   <name>tobe01</name>
    修改 uuid(隨便改一下數字,位數不要變)
    修改磁盤路徑
virsh define /etc/libvirt/qemu/tobe01.xml     //定義新虛擬機,虛擬機由配置文件所定義
virsh list --all       //會發現新遷移的tobe01子機,進入新的虛擬機後,須要配置網絡及其餘設置

相關文章
相關標籤/搜索