KVM虛擬化(KVM的部署及使用)
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的部署及使用)