KVM虛擬化(KVM的部署及使用)

1.虛擬化linux


1.1概念windows

  將計算機的各類實體資源(CPU、內存、磁盤空間、網絡適配器等),予以抽象 、轉換後呈現出來並可供分區、組合爲一個或多個電腦配置環境。centos


1.2應用數據化的緣由服務器

  1)同一臺物理機運行多個不一樣版本應用軟件網絡

  2)硬件依賴性較低架構

  3)便於數據遷移ssh


1.3虛擬化的優點ide

  1)提升應用兼容性工具

  2)下降運營成本oop

  3)加速應用部署

  4)提升服務器可用性

  5)提升資源利用率

  6)動態調度資源

  7)下降能源消耗


2.KVM


2.1KVM

  1)KVM是開源軟件

  2)是x86架構且硬件支持虛擬化技術(如intel VT或AMD-V)的Linux全虛擬化解決方案

  3)包含爲處理器提供底層虛擬化可加載的核心模塊kvm.ko(kvm-intel.ko或kvm-AMD.ko)

  4)須要通過修改的QEMU軟件(qemu-kvm),做爲虛擬機上層控制和界面

  5)能在不改變linux或windows鏡像的狀況下同時運行多個虛擬機,(它的意思是多個虛擬機使用同一鏡像)併爲每個虛擬機配置個性化硬件環境(網卡、磁盤、圖形適配器……)同時KVM還可以使用ksm技術幫助宿主服務器節約內存。


2.2Virtual Machine Manager

  1)虛擬機管理員,可讓用戶管理多個虛擬機

  2)建立、編輯、引導或中止虛擬機

  3)查看並控制每一個虛擬機的控制檯

  4)查看每部虛擬機的性能及使用率

  5)查看每部正在運行中的虛擬機以及主控端的即時性及使用率信息

  6)不管在本機或遠程,皆可以使用KVM、Xen、QEMU


3.KVM的部署


3.1環境準備

[root@KVM ~]# cat /etc/redhat-release 

CentOS Linux release 7.4.1708 (Core) 

[root@KVM ~]# uname -r

3.10.0-693.el7.x86_64

[root@KVM ~]# ifconfig

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.0.0.101  netmask 255.255.255.0  broadcast 10.0.0.255

        inet6 fe80::af24:1fe3:9292:9747  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:2c:94:03  txqueuelen 1000  (Ethernet)

        RX packets 714  bytes 132837 (129.7 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 247  bytes 35367 (34.5 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        ether 00:0c:29:2c:94:0d  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10<host>

        loop  txqueuelen 1  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@KVM ~]# getenforce 

Disabled

[root@KVM ~]# systemctl status firewalld.service 

● firewalld.service - firewalld - dynamic firewall daemon

   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

     Docs: man:firewalld(1)


3.2安裝相關軟件包

[root@KVM ~]#  yum install qemu-kvm libvirt virt-install virt-manager bridge-utils


說明:qemu-kvm    ----模擬計算機的工具,爲KVM虛擬機提供IO設備

           libvirt    ----管理虛擬機

           virt-install    ----命令行的虛擬機建立安裝工具

           bridge-utils   ----網橋工具


3.4啓動

[root@KVM ~]# systemctl start libvirtd


方法一:使用命令行安裝部署


3.4建立網橋

[root@KVM ~]# nmcli c add type bridge autoconnect yes con-name br0 ifname br0

Connection 'br0' (f8cd2a6d-1683-4174-825a-76d79b8cefcd) successfully added.

[root@KVM ~]# nmcli c modify br0 ipv4.addresses 10.0.0.101/24 ipv4.method manual

[root@KVM ~]# nmcli c modify br0 ipv4.gateway 10.0.0.254

[root@KVM ~]# nmcli c delete eth0

[root@KVM ~]# nmcli c add type bridge-slave autoconnect yes con-name eth0 ifname eth0 master br0


3.5重啓

[root@KVM ~]# reboot


3.6建立安裝磁盤

[root@KVM ~]# mkdir -p /var/linux/images

[root@KVM ~]# qemu-img create -f qcow2 /var/linux/images/centos74.img 20G

Formatting '/var/linux/images/centos71.img', fmt=qcow2 size=21474836480 encryption=off cluster_size=65536 lazy_refcounts=off 


3.7安裝虛擬機

[root@KVM ~]# virt-install --name centos71 --ram 512 --vcpus 2 --disk path=/var/linux43/images/centos71.img,size=10 --os-type linux --os-variant rhel7 --graphics none --console pty,target_type=serial --location=/var/CentOS-7-x86_64-DVD-1708.iso --extra-args 'console=ttyS0,115200n8 serial'


方法二:VNC


3.4下載VNC(官網:http://www.tightvnc.com


3.5建立安裝磁盤

[root@KVM ~]# qemu-img create -f qcow2 /var/linux/images/centos742.img 20G


3.6安裝虛擬機(NAT模式)

virt-install --virt-type=kvm --name=c72 --vcpus=1 -r 1024 -c /var/CentOS-7-x86_64-DVD-1503-01.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=rhel7 --disk path=/var/linux/images/centos742.img,size=20,format=qcow2


3.7Windows下VNC鏈接

image.png


4.KVM的相關命令


4.1退出虛擬機

ctrl + ]

 

4.2進入虛擬機

virsh console centos74


4.3查看虛擬機的及狀態

virsh list

virsh list --all


4.4啓動虛擬機

virsh start centos74


4.5關閉虛擬機

virsh shutdown centos74


4.6強制關閉虛擬機

virsh destroy centos74


4.7刪除虛擬機

virsh shutdown centos74

virsh undefine centos74


5.磁盤管理


5.1查看當前虛擬機硬盤信息

[root@KVM ~]# qemu-img info /var/linux/images/centos74.img 

image: /var/linux/images/centos74.img

file format: qcow2

virtual size: 20G (21474836480 bytes)

disk size: 1.2G

cluster_size: 65536

Format specific information:

    compat: 1.1

    lazy refcounts: false

    refcount bits: 16

    corrupt: false


5.2轉換磁盤格式(qcow2轉換爲raw)

[root@KVM ~]# qemu-img convert -f qcow2 -O raw /var/linux/images/centos74.img /var/linux/images/centos74.img 


5.3KVM虛擬機添加硬盤


5.3.1建立一塊新的硬盤

[root@KVM ~]# qemu-img create -f qcow2 /var/linux/images/centos74-add.qcow2 2G


5.3.2查看建立的硬盤信息

[root@KVM ~]# qemu-img info /var/linux/images/centos74-add.qcow2 

image: /var/linux/images/centos74-add.qcow2

file format: qcow2

virtual size: 2.0G (2147483648 bytes)

disk size: 196K

cluster_size: 65536

Format specific information:

    compat: 1.1

    lazy refcounts: false

    refcount bits: 16

    corrupt: false


5.3.3爲虛擬機添加硬盤

[root@KVM ~]# virsh attach-disk centos74 /var/linux/images/centos74-add.qcow2 vdb --live --cache=none --subdriver=qcow2

Disk attached successfully

  

說明:vdb    第二塊硬盤

          --live    熱添加

          --sudbriver    驅動類型

          detach-disk    分離磁盤設備

          attach-disk     附加磁盤設備


5.4格式化磁盤(在KVM虛擬機中操做)

[root@centos74 ~]# mkfs.xfs /dev/vdb


6.快照管理


6.1建立快照

[root@KVM ~]# virsh snapshot-create cnetos74


6.2查看主機快照列表

[root@KVM ~]#  virsh snapshot-list centos74


6.3查看快照信息

[root@KVM ~]# virsh snapshot-info centos74 --spanshotname 1516607756


6.4還原快照

[root@KVM ~]# virsh snapshot-revert centos74 --spanshotname 1516607756


6.5刪除快照

[root@KVM ~]# virsh snapshot-delete centos74 --spanshotname 1516607756


7.KVM虛擬機克隆

[root@KVM ~]# virsh-clone --auto-clone -o centos74


8.KVM虛擬機冷遷移


8.1在KVM02中安裝kvm組件

[root@KVM02 ~]# yum install -y libvirt* virt-* qemu-kvm*


8.2配置橋接網絡

[root@KVM 02~]# virsh iface-bridge eth0 br0


8.3KVM主機將虛擬機關閉,導出配置文件

[root@KVM ~]# virsh shutdown centos74

[root@KVM ~]# virsh dumpxml centos74 > centos74.xml


8.4將虛擬文件傳輸到KVM02上

[root@KVM ~]# scp -rp centos74.xml 10.0.0.102:/data


8.5KVM02主機導入文件

[root@KVM02 ~]# virsh define centos74.xml


8.6啓動虛擬機

[root@KVM02 ~]# virsh start centos74


9.KVM虛擬機熱遷移


9.1KVM虛擬機熱遷移的核心

   共享存儲。這裏使用NFS共享存儲(詳情參考:https://blog.51cto.com/13520761/2087720)


9.1安裝virt-manager所需桌面及vnc-server

[root@KVM ~]# yum groupinstall "GNOME Desktop" -y

[root@KVM ~]# yum install -y tigervnc-server 

[root@KVM ~]#  yum install -y opnssh-askpass


9.2複製vnc配置文件

[root@KVM ~]# cp /usr/lib/systemd/system/vncserver@.server  /usr/lib/systemd/system/vncserver@\:1.server


9.3修改配置文件

[root@KVM ~]# 

egrep -v "^#|^$" /usr/lib/systemd/system/vncserver@\:1.service

[Unit]

Description=Remote desktop service (VNC)

After=syslog.target network.target

[Service]

Type=forking

User=root

ExecStartPre=-/usr/bin/vncserver -kill %i

ExecStart=/usr/bin/vncserver %i

PIDFile=/root/.vnc/%H%i.pid

ExecStop=-/usr/bin/vncserver -kill %i

[Install]

WantedBy=multi-user.target


9.4設置vnc鏈接時的密碼

[root@KVM ~]# vncpasswd


9.5啓動vnc服務

[root@KVM ~]# systemctl start vncserver@\:1.services


9.6在KVM主機上部署NFS服務


9.7在KVM02主機上掛載目錄

[root@KVM02 ~]# mount -t nfs 172.16.1.101:/var/linux/images /var/linux/images


9.8vnc鏈接KVM宿主機


9.9添加KVM02宿主機

image.png


9.10主機熱遷移

image.png


9.11在KVM02上查看虛擬主機

[root@KVM02 ~]# virsh list --all

相關文章
相關標籤/搜索