kvm虛擬化

1:什麼是虛擬化?

虛擬化,經過模擬計算機的硬件,來實如今同一臺計算機上同時運行多個不一樣的操做系統的技術。php

2:爲何要用虛擬化?

阿里雲   kvm開源
azure
vmware ESXI商業軟件

沒有虛擬化以前:
計算機的硬件配置愈來愈高

512G 內存,4路 8核16線程 ,12* PCI-E 1T的SSD;
ntp服務,安裝多個mysql,安裝多個tomcat,安裝.... 

linux開源的,不少軟件都有依賴包openssl  nginx

充分利用資源,軟件運行環境的隔離,只有虛擬化才行實現。
場景1:同一臺物理機運行多個php版本 php5.3(openssl,gd)  php5.5  php7.2

場景2:機房的遷移,解決了硬件和系統的依賴

場景3:openstack環境,軟件發佈方式

場景4:開發環境和測試環境,使用虛擬化
只靠一臺物理服務器,30臺虛擬機

產品  -- 開發 -- 運維 -- 測試
so結尾,linux 庫文件

場景5:業務的快速部署  
從頭安裝系統,安裝服務,配置
克隆虛擬機,改ip,

虛擬化:提升了資源的利用率,各個服務的安全性隔離,解決了系統和硬件之間的依賴

3:kvm虛擬化管理軟件的安裝

yum install libvirt virt-install qemu-kvm -y

KVM:Kernel-based Virtual Machine  

libvirt  做用:虛擬機的管理軟件
libvirt: kvm,xen,qemu,lxc....

virt   virt-install virt-clone   做用:虛擬機的安裝工具和克隆工具
qemu-kvm  qemu-img (qcow2,raw)做用:管理虛擬機的虛擬磁盤

虛擬化軟件:
qemu      軟件純模擬全虛擬化軟件,特別慢!AIX,兼容性好!
xen(半)   性能特別好,須要使用專門修改以後的內核,兼容性差!  redhat 5.5  xen
KVM(linux)    全虛擬機,它有硬件支持cpu,基於內核,並且不須要使用專門的內核   centos6 kvm
性能較好,兼容較好

4:安裝一臺kvm虛擬機

分發軟件TightVNC或者VNC Viewer 4.exe
宿主機node

vnc:遠程的桌面管理工具
向日葵mysql

systemctl start libvirtd.service
systemctl status libvirtd.service

10.0.0.11 宿主機linux

建議虛擬機內存不要低於1024M,不然安裝系統特別慢!nginx

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

VNC出現鏈接失敗執行下面:web

virsh list --all
virsh destroy centos7
virsh undefine centos7
rm -fr /opt/centos2.raw 
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole


vnc-service:5900

vnc:10.0.0.11:5900

--virt-type kvm    虛擬化的類型(qemu)
--os-type=linux    系統類型
--os-variant rhel7 系統版本
--name centos7     虛擬機的名字 
--memory 1024      虛擬機的內存
--vcpus 1          虛擬cpu的核數
--disk /opt/centos2.raw,format=raw,size=10
--cdrom /opt/CentOS-7-x86_64-DVD-1708.iso 
--network network=default   使用默認NAT的網絡
--graphics vnc,listen=0.0.0.0 
--noautoconsole

磁盤格式:
raw:10G 不支持作快照,性能好
qcow2: 支持快照sql

5:kvm虛擬機的virsh平常管理和配置

列表                list(--all)
開機                start
關機                shutdown
拔電源關機     destroy

導出配置dumpxml      例子:virsh dumpxml centos7 >centos7-off.xml
刪除undefine              推薦:先destroy,在undefine
導入配置                    define   
修改配置                    edit(自帶語法檢查)
 
重命名                        domrename (低版本不支持)
掛起                            suspend
恢復                            resume
查詢vnc端口號            vncdisplay
/usr/libexec/qemu-kvm

6:kvm虛擬機開機啓動和console 控制檯 登陸

kvm運行業務程序數據庫

開機啓動autostart,前提:systemctl enable libvirtd;
取消開機啓動autostart --disablewindows

centos7的kvm虛擬機:
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"centos

reboot

做業1:實現centos6的kvm虛擬機,console命令行登陸?
安裝一臺centos6的kvm虛擬機
console命令行登陸

做業2:centos6實現沒有swap分區,啓動進系統

7:kvm虛擬機虛擬磁盤格式轉換和快照管理

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/oldboy.qcow2,format=qcow2,size=10 --cdrom /data/CentOS-7.2-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

raw:  裸格式,佔用空間比較大,不支持快照功能,性能較好,不方便傳輸           總50G 佔用2G
qcow2:cow  (copy on write)佔用空間小,支持快照,性能比raw差一點,方便傳輸  總50G 佔用2G
qcow


qemu-img info  test.qcow2
建立一塊qcow2格式的虛擬硬盤:qemu-img create -f qcow2 test.qcow2 2G

raw轉qcow2:qemu-img convert -f raw     -O qcow2           oldboy.raw   oldboy.qcow2
                     convert [-f fmt]   [-O output_fmt]    filename     output_filename

virsh edit web01:                    
<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/opt/centos.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>

virsh destroy web01
virsh start web01                    

                     
建立快照virsh snapshot-create centos7
查看快照virsh snapshot-list centos7

還原快照virsh snapshot-revert centos7 --snapshotname 1516574134
刪除快照virsh snapshot-delete centos7 --snapshotname 1516636570

raw不支持作快照,qcow2支持快照,而且快照就保存在qcow2的磁盤文件中

8:kvm虛擬機克隆

virt-clone --auto-clone -o web01 -n web02 (完整克隆)  


a:生成虛擬機磁盤文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

b:生成虛擬機的配置文件
  <name>49-web03</name>
  <uuid>8e505e25-5175-46ab-a9f6-feaa096daaa4</uuid>
  <source file='/opt/49-web03.qcow2'/>
  <mac address='52:54:00:4e:5b:89'/>
c:導入虛擬機並進行啓動測試

kvm連接克隆
a.基於源磁盤文件,建立連接磁盤文件
qemu-img create -f qcow2 -b 49-web03.qcow2 49-web04.qcow2

後置備

b:生成虛擬機的配置文件
c:導入虛擬機並進行啓動測試
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

9:kvm虛擬機的橋接網絡

默認的虛擬機網絡是NAT模式,網段192.168.122.0/24

默認NAT模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
橋接模式
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

1:建立橋接網卡
virsh iface-bridge eth0 br0

取消橋接網卡
virsh iface-unbridge br0

2:virsh edit centos7

    <interface type='bridge'>
      <mac address='52:54:00:55:aa:fa'/>
      <source bridge='br0'/>
在宿主機上,重啓虛擬機生效

3:測試虛擬機網絡

10:熱添加技術

kvm虛擬機在線熱添加硬盤
臨時生效
virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 
永久生效
virsh  attach-disk web04 /opt/oldboy.qcow2 vdb --subdriver qcow2 --config



kvm虛擬機在線熱添加網卡
kvm虛擬機在線熱添加內存
kvm虛擬機在線熱添加cpu

qemu-img create -f qcow2 add01.qcow2 5G
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb  --subdriver=qcow2
virsh detach-disk centos7 vdb

虛擬機磁盤擴容:
在kvm虛擬機,卸載
virsh detach-disk centos7 vdb
qemu-img resize /data/centos7-add01.qcow2 +5G
virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

在xfs文件系統虛擬機中:xfs_growfs /dev/vdb
在ext2-4文件系統虛擬機中:resize2fs /dev/vdb

做業3:擴容kvm虛擬機的根分區

根分區擴容:
1)在宿主機上關閉虛擬機並調整虛擬機磁盤大小
qemu-img resize oldboy.qcow2 +10G

2)虛擬機中fdisk從新分區
fdisk /dev/vda
刪除原來的/dev/vda1
從新將全部空間給/dev/vda1
reboot重啓

3)重啓以後,執行xfs_growfs /dev/vda1,
若是虛擬機磁盤文件系統是ext4:resize2fs /dev/vda1

kvm虛擬機在線熱添加網卡

virsh attach-interface web04 --type bridge --source br0 --model virtio
detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

kvm虛擬機在線熱添加內存

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

臨時熱添加內存
setmem web04 1024M --live
永久增大內存
setmem web04 1024M --config

kvm虛擬機在線熱添加cpu

virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
熱添加cpu核數
setvcpus web04 4 --live
永久添加cpu核數
setvcpus web04 4 --config

11:virt-manager和kvm虛擬機熱遷移(共享的網絡文件系統)

冷遷移kvm虛擬機:配置文件,磁盤文件
熱遷移kvm虛擬機:配置文件,nfs共享

1):
yum groupinstall "GNOME Desktop" -y
yum install openssh-askpass -y

yum install tigervnc-server -y

vncpasswd
vncserver :1
vncserver -kill :1


2):kvm虛擬機熱遷移
1:兩邊的環境(橋接網卡)
2:實現共享存儲(nfs)
3:虛擬機橋接網絡
4:在線熱遷移

做業3:擴容kvm虛擬機的根分區

做業4:擴展研究EXSI虛擬化和EXSI iso到kvm的虛擬機遷移

http://blog.51cto.com/liqingbiao/1742724

virt-v2v -i ova centos-dev-test01-v2v.ova -o local -os /opt/test  -of qcow2

做業5:p2v遷移(物理機到kvm虛擬機的遷移

http://blog.csdn.net/tantexian/article/details/42869179

老古董:發熱量大,配置低 2G ddr 400MHZ 750w
老古董:發熱量大,配置低 2G ddr 400MHZ 750w

一臺新集羣 64G ddr4 2400MHZ 550w

iso鏡像,U盤 啓動盤 win PE
打包全部根目錄的文件,上傳到kvm服務器,輸出一個qcow2格式,替換驅動,

kvm宿主機 2000臺
查看每個宿主機有多少臺虛擬機?
查看每個宿主機還剩多少資源?
查看每一臺宿主機,每個虛擬機的ip地址?
kvm管理平臺,數據庫工具
信息:宿主機,總配置,剩餘的總配置
虛擬機的信息,配置信息,ip地址,操做系統

帶計費功能的kvm管理平臺,openstack ceilometer計費
自動化管理kvm宿主機,雲主機定製化操做

12.部署openstack

克隆一臺openstack模板機:4G內存,開啓虛擬化,掛載centos7.4的光盤
上傳腳本openstack-mitaka-autoinstall.sh到/root目錄
上傳鏡像:cirros-0.3.4-x86_64-disk.img到/root目錄
上傳配置文件:local_settings到/root目錄
上傳openstack_rpm.tar.gz到/opt下,並解壓
sh /root/openstack-mitaka-autoinstall.sh
大概10-30分鐘左右
訪問http://10.0.0.11/dashboard
域:default
用戶名:admin
密碼:ADMIN_PASS

注意: 在windows系統上修改host解析(10.0.0.11 controller)

添加node節點:
修改ip地址
hostnamectl set-hostname compute1
從新登陸讓新主機名生效
cd /opt/
rsync -avz 10.0.0.11:/opt/repo .
上傳腳本 openstack_node_autoinstall.sh
sh openstack_node_autoinstall.sh

openstack controller主控制節點,node節點, kvm宿主機 node節點, kvm宿主機 node節點, kvm宿主機 node節點, kvm宿主機 node節點, kvm宿主機

相關文章
相關標籤/搜索