在 Windows 系统下部署虚拟化可以采用 Hyper-V,vSphere 虚拟化技术, 那么在 Linux 系统下就需要使用到 --KVM.
KVM 依托 CPU 虚拟化指令集, 实现高性能的虚拟化支持. 由于与 Linux 内核高度整合, 因此在性能, 安全性, 兼容性, 稳定性上都有很好的表现.
在 KVM 环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程. 因此它可以很方便地与 Linux 系统中的安全模块进行整合, 可以灵活地实现资源的分配及管理. 如图:
在 Linux 系统下部署 KVM 虚拟化, 必须开启 CPU 虚拟化支持.
一, 安装 KVM 及相应的管理工具
(1)安装 KVM 及所需软件
- [[email protected] ~]# yum groupinstall -y "GNOME Desktop"
- // 安装 GNOME 桌面环境
- [[email protected] ~]# yum -y install qemu-kvm
- // 安装 KVM 模块
- [[email protected] ~]# yum -y install qemu-kvm-tools
- // 安装 KVM 调试工具(可以不安装)
- [[email protected] ~]# yum -y install virt-install
- // 安装构建虚拟机的命令行工具
- [[email protected] ~]# yum -y install qemu-img
- // 安装 qemu 组件, 创建磁盘, 启动虚拟机等
- [[email protected] ~]# yum -y install bridge-utils
- // 安装网络支持工具
- [[email protected] ~]# yum -y install libvirt
- // 安装虚拟机管理工具
- [[email protected] ~]# yum -y install virt-manager
- // 安装图形界面管理虚拟机
(2)验证 CPU 是否支持虚拟化
- [[email protected] ~]# cat /proc/cpuinfo | grep vmx
- //Intel 服务器使用这条命令进行验证(有输出就表示支持虚拟化)
- [[email protected] ~]# cat /proc/cpuinfo | grep smv
- //AMD 服务器使用这条命令进行验证
(3)检查 KVM 模块是否安装
- [[email protected] ~]# lsmod | grep kvm
- // 表示已经安装
- kvm_intel 170181 0
- kvm 554609 1 kvm_intel
- irqbypass 13503 1 kvm
(4)启动 libvirtd 服务, 开启相应的支持
- [[email protected] ~]# systemctl start libvirtd
- [[email protected] ~]# systemctl enable libvirtd
二, 设置 KVM 网络
宿主服务器安装完成 KVM, 首先要设定网络, 在 libvirt 中运行 KVM 网络有两种方法: NAT 和 Bridge.(默认是 NAT)
关于两种模式的说明:
1. 用户模式: 及 NAT 方式, 这种方式时默认网络, 数据包由 NAT 方式通过主机的接口进行转送, 可以访问外网, 但是无法从外部访问虚拟机网络;
2. 桥接模式: 这种模式允许虚拟机可以像一台主机一样拥有网络, 外部网络可以直接访问到虚拟机内部, 但需要网卡支持, 一般有线网卡都支持.
以 Bridge(桥接模式)为例:
- [[email protected] ~]# cd /etc/sysconfig/network-scripts/
- [[email protected] network-scripts]# cp ifcfg-ens33 ifcfg-br0
- // 将网卡的配置文件复制一份, 命名为 br0
- [[email protected] network-scripts]# VIM ifcfg-ens33
- TYPE=Ethernet
- BOOTPROTO=none // 不获取 IP 地址
- DEFROUTE=yes
- PEERDNS=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_PEERDNS=yes
- IPV6_PEERROUTES=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=ens33
- UUID=431fe077-8089-4503-95a5-6eb6236a8c00
- DEVICE=ens33
- ONBOOT=yes
- BRIDGE=br0 // 桥接到 br0 网卡上
- [[email protected] network-scripts]# VIM ifcfg-br0
- TYPE=Bridge // 类型改为桥接模式
- BOOTPROTO=static // 静态获取 IP 地址
- DEFROUTE=yes
- PEERDNS=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_PEERDNS=yes
- IPV6_PEERROUTES=yes
- IPV6_FAILURE_FATAL=no
- IPV6_ADDR_GEN_MODE=stable-privacy
- NAME=br0
- DEVICE=br0 // 修改网卡名称及设备名称,(UUID 一行必须删除)
- ONBOOT=yes
- IPADDR=192.168.1.1
- [[email protected] ~]# systemctl restart network
- // 重新启动网卡服务
- [[email protected] ~]# ifconfig
- // 确认网卡信息
- br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- .NET 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255
- inet6 fe80::5a86:eff9:cdb9:c746 prefixlen 64 scopeid 0x20<link>
- ether 00:0c:29:00:11:89 txqueuelen 1000 (Ethernet)
- RX packets 4 bytes 808 (808.0 B)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 25 bytes 3727 (3.6 KiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- ether 00:0c:29:00:11:89 txqueuelen 1000 (Ethernet)
- RX packets 15 bytes 3627 (3.5 KiB)
- RX errors 0 dropped 0 overruns 0 frame 0
- TX packets 25 bytes 3751 (3.6 KiB)
- TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
三, KVM 管理
- [[email protected] ~]# mkdir -p /data_kvm/store
- // 创建一个用于虚拟机存储池的目录
- [[email protected] ~]# mkdir -p /data_kvm/iso
- // 创建一个用于镜像存储池的目录
- [[email protected] ~]# virt-manager
- // 使用图形界面管理 KVM
(1)创建存储池
以同样的方式再次创建一个用于存放镜像的存储池!
(2)创建存储卷
(3)上传系统镜像, 创建虚拟机
[[email protected] ~]# cp /dev/cdrom /data_kvm/iso/centos7.iso
接下来就跟证常安装操作系统一样, 安装完成系统之后, 可以设置 IP 地址, 自行测试, 与外部网络是否能够通信!
至此, KVM 已经已经部署完成!
管理 KVM 虚拟机两种方式:
1. 图形化管理;
2. 使用命令进行管理
关于图形化管理, 简单易懂, 这里就不多做介绍了.
主要讲解一下管理 KVM 虚拟机的常用命令:
- [[email protected] ~]# virsh -h
- // 查看命令帮助
- [[email protected] ~]# ls /etc/libvirt/qemu
- // 查看 KVM 的配置文件存放目录
networks test01.xml
- (test01.xml 是虚拟机系统实例的配置文件)
- [[email protected] ~]# virsh list --all #查看虚拟机状态
Id 名称 状态
- ----------------------------------------------------
- 2 test01 running
- [[email protected] ~]# virsh shutdown test01
- // 关闭虚拟机
- [[email protected] ~]# virsh start test01
- // 开启虚拟机
- [[email protected] ~]# virsh destroy test01
- // 强制关机
- [[email protected] ~]# virsh create /etc/libvirt/qemu/test01.xml
- // 通过配置文件启动虚拟机
- [[email protected] ~]# virsh suspend test01
- // 挂起虚拟机
- [[email protected] ~]# virsh resume test01
- // 从挂起状态恢复运行虚拟机
- [[email protected] ~]# virsh autostart test01
- // 设置虚拟机伴随宿主机自动启动
虚拟机的删除与添加:
- [[email protected] ~]# virsh dumpxml test01> /etc/libvirt/qemu/test02.xml
- // 导出虚拟机配置
- [[email protected] ~]# virsh shutdown test01
- [[email protected] ~]# virsh undefine test01
- // 删除虚拟机
- [[email protected] ~]# virsh list --all
- // 查看虚拟机是否被删除
Id 名称 状态
- ----------------------------------------------------
- // 通过备份的配置文件重新定义虚拟机:
- [[email protected] ~]# cd /etc/libvirt/qemu/
- [[email protected] qemu]# mv test02.xml test01.xml
- [[email protected] qemu]# virsh define test01.xml
- [[email protected] qemu]# VIM /etc/libvirt/qemu/test01.xml
- // 修改虚拟机配置 (内存大小等) 信息:
- [[email protected] qemu]# virt-df -h test01
- // 在宿主机上查看虚拟机磁盘信息
克隆虚拟机:
- [[email protected] qemu]# virt-clone -o test01 -n test02 -f /kvm/store/test02.qcow2
- # 将 test01 克隆为 test02
- [[email protected] qemu]# virsh list --all #查看现有虚拟机
Id 名称 状态
----------------------------------------------------
- test01 关闭
- test02 关闭
虚拟机创建快照:
- (KVM 虚拟机要使用快照功能, 磁盘格式必须为 qcow2)
- [[email protected] qemu]# virsh snapshot-create test01
- // 对虚拟机 test01 创建快照
- [[email protected] qemu]# virsh snapshot-list test01
- // 查看快照信息
名称 生成时间 状态
- ------------------------------------------------------------
- 1560191837 2019-06-11 02:37:17 +0800 shutoff
- [[email protected] qemu]# virsh snapshot-revert test01 1560191837
- // 恢复虚拟机状态至 1560191837
- [[email protected] qemu]# virsh snapshot-delete test01 1560191837
- // 删除快照
来源: http://www.bubuko.com/infodetail-3165611.html