一、虚拟化应用

目前常用的虚拟机应用主要有KVM、xen、vmware。
KVM、Xen、VMWare的对比如下:
image.png

二、KVM安装

2.1查看CPU是否支持KVM

egrep 'vmx|svm' /proc/cpuinfo --color=auto

可以看到grep出来的内容,就说明支持kvm
image.png

2.2安装kvm

yum install -y qemu-kvm libvirt virt-install virt-manager virt-viewer 

2.3启动并设置开机自启

systemctl start libvirtd
systemctl enable libvirtd

2.4创建ISO系统镜像存放目录

mkdir /iso

2.5上传镜像到/iso目录下

image.png

2.6创建虚拟机

--name 指定虚拟机的名称
--memory 指定分配给虚拟机的内存资源大小
maxmemory 指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源
--vcpus 指定分配给虚拟机的CPU核心数量
maxvcpus 指定可调节的最大CPU核心数量
--os-type 指定虚拟机安装的操作系统类型
--os-variant 指定系统的发行版本
--location 指定IS0镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL
--disk path 指定虚拟硬盘所存放的路径及名称,size 则是指定该硬盘的可用大小,单位是G
--bridge 指定使用哪一个桥接网卡,也就是说使用桥接的网络模式
--graphics 指定是否开启图形
--console 定义终端的属性,target type 则是定义终端的类型
--extra-args 定义终端额外的参数

我这里是创建4c16g磁盘空间为100G的虚拟机

virt-install --name=app1 --memory=16384 --vcpus=4,maxvcpus=4 --os-type=linux --os-variant=rhel7 --location=/iso/CentOS-7-x86_64-DVD-2009.iso --disk path=/data2/kvm_data/app1.img,size=100 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"

进入设置界面
image.png
其中[x]表示已经配置,但可以修改,[!]表示未配置,需要配置
输入1进行语言设置
image.png
输入回车后输入68选择chinese
image.png
输入1选择简体中文
image.png
输入2进行时区设置
image.png
输入1设置时区
image.png
输入2选择亚洲
image.png
输入65选择上海
image.png
输入5选择磁盘安装
image.png
输入1选择100G磁盘
默认选择use all space 输入c继续
image.png
输入1选择标准分盘
image.png
输入c继续
image.png
输入8设置root用户密码
image.png
输入b开始安装
image.png
配置KVM虚拟机网络
image.png
可以看到拥有一个网卡eth0,目前是访问不了宿主机和外网的,要让该虚拟机可以访问网络,采用桥接模式,将该KVM虚拟机与原宿主机网卡进行桥接,我们知道宿主机的桥接网卡是br0,因此需要将eth0桥接到br0上,需要配置与br0相同的网络号,网卡,dns等。

vi /etc/sysconfig/network-scripts/ifcfg-eth0

image.png
配置好以后重启网卡
systemctl restart network
再次查看网络,重启网卡生效
image.png
但是现在还是无法跟宿主机联通,因为还没有桥接
桥接首先要创建网桥,然后把物理机和虚拟机的网卡分别接入到网桥上面,实现宿主机和虚拟机的联通

2.7宿主机创建网桥

在宿主机执行
brctl addbr br0
image.png
ifconfig发现已经多出一个网桥网卡,说明网桥创建成功了

2.8 将物理网卡绑定到网桥

brctl addif br0 eno1

2.9 将虚拟网卡绑定到网桥

brctl addif br0 vnet0

2.10查看绑定情况

image.png
说明已经绑定成功了

2.11配置网桥网卡

vi /etc/sysconfig/network-scripts/ifcfg-br0

image.png

vi /etc/sysconfig/network-scripts/ifcfg-eno1

image.png
重启网卡
systemctl restart network
image.png

2.12测试

虚拟机ping宿主机,ping得通说明网络已经联通了
image.png
虚拟机ping www.baidu.com,ping得通说明可以使用外网
image.png

三、虚拟机管理

3.1KVM常用命令

#查看所有的虚拟机
virsh list --all
#查看正在运行的虚拟机
virsh list
#启动虚拟机
virsh start <虚拟机名称>
#停止虚拟机
virsh shutdown <虚拟机名称>
#强制停止虚拟机,相当于切断虚拟机的电源
virsh destroy <虚拟机名称>
#通过XML配置文件定义(创建)虚拟机
virsh define XML文件路径
#删除虚拟机
virsh undefine <虚拟机名称>
#创建快照
virsh snapshot-create-as --domain <虚拟机名称> <快照名称> "快照描述"
#查看虚拟机快照
virsh snapshot-list <虚拟机名称>
#恢复到指定快照
virsh snapshot-revert --domain <虚拟机名称> <快照名称>
#连接虚拟机控制台
virsh console <虚拟机名称>
#修改虚拟机配置
virsh edit <虚拟机名称>
#查看虚拟机的详细配置信息
virsh dominfo <虚拟机名称>

3.2克隆虚拟机

#克隆前需要将要克隆的虚拟机关闭
#关闭虚拟机
#例如虚拟机名称为app1
virsh shutdown app1
#克隆虚拟机
参数说明:
-o :指定源虚拟机
-n :命名新克隆的虚拟机
-f :指定新克隆虚拟机的位置
virt-clone -o app -n app2 -f /data2/kvm_data/app2.img

image.png
3.3重命名虚拟机

#重命名前需要将要重命名的虚拟机关闭
#关闭虚拟机
#例如虚拟机名称为lcx
virsh shutdown lcx
#重命名虚拟机的原理是先重新定义一个新虚拟机的配置,再删除旧的配置
#首先导出原虚拟机的配置
virsh dumpxml lcx > newlcx.xml
#生成新的uuid
uuidgen
#编辑该xml文件的配置
#修改<name>标签中的值为新的虚拟机名称
#修改<uuid>标签中的值为刚刚生成的uuid
#使用命令从XML配置文件定义(创建)虚拟机
virsh define /data2/kvm_data/newlcx.xml
#启动虚拟机
virsh start newlcx

image.png
image.png
image.png
image.png
3.4 虚拟机快照

#创建快照
virsh snapshot-create-as --domain <虚拟机名称> <快照名称> "快照描述"
#查看快照
virsh snapshot-list <虚拟机名称>
#恢复到指定快照
virsh snapshot-revert --domain <虚拟机名称> <快照名称>

image.png
image.png
3.5 虚拟机资源配置管理
3.5.1cpu配置修改

#修改虚拟机 XML 配置文件
virsh edit <虚拟机名称>

原来是8核心
image.png
修改为4核心
image.png
重启虚拟机
image.png
再次查看虚拟机配置,已经修改成功
image.png
3.5.2内存配置修改

#在线修改,重启失效
#修改的配置不能超过最大内存
virsh setmem <虚拟机名称> <新内存大小_KB> --live

#永久修改,需要重启虚拟机
#修改虚拟机 XML 配置文件
virsh edit <虚拟机名称>

在线修改演示
image.png
永久修改演示
原来是16G内存
image.png
修改为8G内存
image.png
重启虚拟机后再次查看虚拟机配置,已经修改成功
image.png


苦逼的小运维
1 声望0 粉丝