0%

KVM虚拟化平台


KVM概述

什么是虚拟化

虚拟化就是把硬件资源从物理方式转变为逻辑方式, 打破原有物理结构, 使用户可以灵活管理这些资源, 并且允许1台物理机上同时运行多个操作系统, 以实现资源利用率最大化和灵活管理的一项技术.

虚拟化的优势

1.减少服务器数量, 降低硬件采购成本.
2.资源利用率最大化
3.降低机房空间、散热、用电消耗的成本
4.硬件资源可动态调整, 提高企业IT业务灵活性.
5.高可用性
6.在不中断服务的情况下进行物理硬件调整
7.降低管理成本
8.具备更高效的灾备能力

KVM虚拟化

KVM自Linux2.6.20版本后就直接整合到Linux内核中, 它依托CPU虚拟化指令集(如Inter-VT、AMD-V)实现高性能的虚拟化支持. 由于与Linux内核高度整合, 因此在性能、安全性、兼容性、稳定性上都有很好的表现.

搭建KVM虚拟化平台

KVM环境搭建

1.关闭虚拟机, 并在设置中开启虚拟化.

2.检测系统是否已经支持虚拟化, 有条目表示已支持.

1
cat /proc/cpuinfo | egrep 'vmx|svm' | wc -l

3.安装KVM环境后并重启加载KVM相关模块

1
2
3
yum -y install qemu-kvm qemu-kvm-tools
yum -y install libvirt python-virtinst libvirt-python virt-install virt-manager
shutdown -r now

qemu-kvm qemu-kvm-tools:虚拟操作系统模拟器加速模块(KVM核心)
libvirt:必须要装的核心工具
virt-manager:虚拟机图形管理工具
bridge-utils:虚拟机与外界通信的命令管理工具
virt-install:虚拟机安装工具
pyhon-virtinst::包含python模块和工具(virt-install,virt-clone和virt-image)

4.查看KVM模块是否被正确加载

1
lsmod | grep kvm
kvm_amd              2176426  0 
kvm                   578518  1 kvm_amd
irqbypass              13503  1 kvm

5.开启KVM服务, 并设置开机自启动.

1
2
systemctl start libvirtd
systemctl enable libvirtd

6.查看KVM服务状态

1
2
systemctl status libvirtd
systemctl is-enabled libvirtd

设置KVM网络

1.查看虚拟机网卡信息, 确定名称后复制文件.

1
2
3
ip addr
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0

2.修改ens33网卡配置

1
vim ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
#BOOTPROTO=none
#DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=eb242f93-3890-4f77-b15a-12589b9e7bad
DEVICE=ens33
ONBOOT=yes
#IPADDR=192.168.100.60
#PREFIX=24
#GATEWAY=192.168.100.2
#DNS1=192.168.100.2

BRIDGE=br0
NM_CONTROLLED=no

3.修改桥接网卡配置

1
2
vim ifcfg-br0
sed -i "/UUID/c UUID=`uuidgen`" ifcfg-br0
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
UUID=03983d4e-3d8d-4212-aa90-7043a259ff6b
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.127.60
PREFIX=24
GATEWAY=192.168.127.1
DNS1=192.168.127.1

4.重启网络服务

1
2
systemctl stop NetworkManager
systemctl restart network

5.查看网络配置信息

1
brctl show
ridge name    bridge id            STP enabled    interfaces
br0           8000.000c293a6592    no             ens33
virbr0        8000.525400c83c0d    yes            virbr0-nic

KVM创建管理

打开KVM图形化管理界面

1
virt-manager

1.创建镜像存储池

2.用WinSCP软件将镜像文件上传至指定目录下

3.创建存储池

注: 在创建该存储池时请保证磁盘容量足够大, 以便存储新建的虚拟机.

4.创建存储卷

5.创建虚拟机

可用cat /proc/scsi/scsi命令查看该主机是否为虚拟机

KVM功能管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 查看命令帮助
virsh -h

# 查看KVM的配置文件存放目录
ls /etc/libvirt/qemu/

# 查看虚拟机状态
virsh list --all

# 虚拟机关机与开机
virsh shutdown 虚拟机名
virsh start 虚拟机名

# 强制实例系统关闭电源
virsh destroy 虚拟机名

# 通过配置文件启动虚拟机系统实例
virsh create /etc/libvirt/qemu/虚拟机名.xml

# 虚拟机挂起与恢复
virsh suspend 虚拟机名
virsh resume 虚拟机名

# 导出虚拟机配置
virsh dumpxml 虚拟机名 > /etc/libvirt/qemu/配置文件名2.xml

# 配置虚拟机实例伴随宿主机自动启动
virsh autostart 虚拟机名

上述命令将创建/etc/libvirt/qemu/autostart/目录, 目录内容为开机自动启动的系统.

虚拟机的删除与添加

1
2
3
4
virsh shutdown test01
virsh undefine test01
ls /etc/libvirt/qemu/
virsh list --all

配置文件会被删除, 但是磁盘文件不会被删除.

1
2
3
4
cd /etc/libvirt/qemu
mv 虚拟机名.xml 虚拟机名.xml
virsh define 虚拟机名.xml
virsh list --all

KVM文件管理

磁盘格式转换

1.转换格式

1
2
3
4
qemu-img info /路径/虚拟机名.img
virsh shutdown 虚拟机名

qemu-img convert -f raw /路径/虚拟机名.img -O qcow2 /路径/虚拟机名.qcow2
image: /data/centos7/CentOS7_10_kvm.img
file format: raw
virtual size: 20G (21474836480 bytes)
disk size: 20G

2.编辑配置

1
virsh edit 虚拟机名
  <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/centos7/CentOS7_10_kvm.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
  </disk>

虚拟机克隆

1
2
3
virsh list --all
virt-clone -o 虚拟机名 -n 克隆虚拟机名 -f /data/Centos7/虚拟机名.qcow2
virsh start 虚拟机名

虚拟机快照

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建快照
virsh snapshot-create 虚拟机名

# 查看虚拟机快照版本信息
virsh snapshot-current 虚拟机名

# 查看快照信息
virsh snapshot-list 虚拟机名

# 恢复虚拟机状态至指定快照
virsh snapshot-revert 虚拟机名 快照名

# 删除快照
virsh snapshot-delete 虚拟机名 快照名
-------------------本文结束 感谢阅读-------------------