1. 程式人生 > >KVM虛擬化(KVM的部署及使用)

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

楓雨

1.虛擬化


1.1概念

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


1.2應用數據化的原因

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

2)硬件依賴性較低

3)便於數據遷移


1.3虛擬化的優勢

1)提高應用兼容性

2)降低運營成本

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連接

技術分享圖片


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共享存儲(詳情參考:http://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/[email protected] /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宿主機

技術分享圖片


9.10主機熱遷移

技術分享圖片


9.11在KVM02上查看虛擬主機

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

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