KVM虚拟化平台部署及管理

KVM虚拟化平台部署及管理

前言
利用linux内核的一个模块kvm,并使用一些辅助工具来搭建虚拟机,完成和esxi类似的操作,实现linux虚拟化。KVM直接整合到了linux内核,因此在性能、安全性、兼容性、稳定性上都有好的表现。我们都知道,使用虚拟化技术可以为公司节约成本,可以在一台物理机上运行多个系统,充分利用物理机的资源。

环境准备(仔细阅读):
OS:Centos7.2
LINUX系统一台内核、cpu、内存均是越大最后效果越优,然后在下载一个系统镜像放到服务器中也可以自己上传,用于之后安装kvm虚拟机系统。
KVM虚拟化平台部署及管理
备注:如果是使用vmware搭建可以先准备虚拟化的前提条件,选中标注位置选项即可
KVM虚拟化平台部署及管理

一、部署KVM

1、 解决依赖包关系
1.1 在安装操作系统的时候,选择桌面安装,并选择“现在自定义”,下一步之后选择“虚拟化”,并勾选右侧的所有功能;
1.2 如果安装系统的时候没有选择也没关系,可以使用yum安装

yum -y install python-virtinst.noarch qemu-* bridge-utils.x86_64 libvirt virt-manager 

1.3 验证CPU是否支持虚拟化,如果有输出代表没问题

cat /proc/cpuinfo  | grep vmx

KVM虚拟化平台部署及管理
1.4 检查kvm模块是否安装成功

lsmod  | grep kvm

KVM虚拟化平台部署及管理
2、桥接网络
在libvirt中运行kvm网络有两种方法:nat和bridge,默认是nat(用户模式),用户模式可以访问外网,但是无法从外部访问虚拟机网络,所以用的不是很多,我们一般做的服务器都需要外网的访问,所有我们多数情况采用桥接模式(bridge),这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机,下面以桥接模式为例:
2.1 修改本地网卡配置
添加如下两行:

NM_CONTROLLED="no"
BRIDGE="br0"

KVM虚拟化平台部署及管理
2.2 添加桥接网卡
BRIDGE定义桥接网卡名称,新增名为"br0"的网卡,内容如下:

DEVICE="br0"
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
TYPE=Bridge

KVM虚拟化平台部署及管理
2.3 重启网卡地址,验证是否获取成功

ip addr | grep br0

KVM虚拟化平台部署及管理
3、KVM虚拟机部署
3.1 使用管理软件libvir,创建虚拟机
3.1.1 打开管理软件

virt-manager

KVM虚拟化平台部署及管理
双击下图图中箭头所指"QEMU/KVM"的位置,打开新的界面
KVM虚拟化平台部署及管理
3.1.2 选择“存储”,单击“+”新建存储池,输入/data/store,这个位置用于存储之后创建的虚拟机
KVM虚拟化平台部署及管理
KVM虚拟化平台部署及管理
点击完成,即可创建存储池

3.1.3 按照上面的做法,再创建一个镜像存储池,用于存储系统镜像,方便之后选择系统安装
KVM虚拟化平台部署及管理
KVM虚拟化平台部署及管理

3.1.4 创建存储卷
虚拟磁盘有raw和qcow2两种格式,默认使用的是raw,raw性能好,速度快,缺点是不支持一些功能,例如:制作快照、压缩、加密等。但是qcow2格式用的比较多,功能多。为了避免后续转换格式我在这里直接选择的qcow2的格式
KVM虚拟化平台部署及管理
添加后效果如下:
KVM虚拟化平台部署及管理

3.1.5 新建虚拟机,右击"QEMU/KVM"新建虚拟机
KVM虚拟化平台部署及管理KVM虚拟化平台部署及管理
选择提前准备好的镜像
KVM虚拟化平台部署及管理
选择规格和存储卷
KVM虚拟化平台部署及管理
安装前可以根据需要修改一些配置,勾上自定义配置选项即可
KVM虚拟化平台部署及管理
自定界面勾选需要的配置,点击左上角的 开始安装 即可进入虚拟机安装界面
KVM虚拟化平台部署及管理
安装系统的步骤略过,安装好了后我们进行实例管理例如:快照、克隆、备份、挂起等操作。
KVM虚拟化平台部署及管理

二、使用kvm命令管理虚拟机

1、查看虚拟机状态

virsh list --all
start启动、stop停止、reboot重启此处略过

KVM虚拟化平台部署及管理
1.1 查看虚拟机信息

virsh  dominfo 虚拟机名称(centos7.0)

KVM虚拟化平台部署及管理
1.2 修改虚拟机信息

virsh edit 虚拟机名称(centos7.0)

1.3 配置虚拟机伴随主机自动启动

virsh autostart 虚拟机名称(centos7.0)    
virsh autostart --disable虚拟机名称(centos7.0)     # 取消随主机自动启动

2、恢复和挂起虚拟机
2.1 挂起虚拟机

virsh suspend 虚拟机名称(centos7.0)

KVM虚拟化平台部署及管理
2.2 恢复挂起虚拟机
KVM虚拟化平台部署及管理
3、格式转换
转换raw格式到qcow2格式介绍(由于我之前选择了qcow2格式,此处只是演示转换方法)
3.1 查看当前格式

qemu-img info /date/store/centos7_1.qcow2
如果是raw则继续下面的步骤进行转换,不是则忽略

KVM虚拟化平台部署及管理
3.2 关机实例

virsh shutdown 虚拟机名称(centos7.0)

KVM虚拟化平台部署及管理
备注:KVM 虚拟机默认是无法用virsh shutdown 进行关机的,如果要想使用该命令关机,则必须在kvm 虚拟机上安装acpid acpid-sysvinit 两个包,启动acpid 服务,并且加入随机启动,也可以强制断电,如下

virsh destroy 虚拟机名称(centos7.0)    # 强制断电

KVM虚拟化平台部署及管理
3.3 转换raw格式到qcow2格式

qemu-img convert -f raw -O qcow2 /date/store/kvm_xxx.img /date/store/kvm_xxx.qcow2 

KVM虚拟化平台部署及管理
3.4 修改kvm的xml配置文件

virsh edit 虚拟机名称(centos7.0)
把raw改成qcow2,一共两个地方,然后保存退出,完成转换

KVM虚拟化平台部署及管理
4、克隆虚拟机及快照
4.1 克隆虚拟机
需要关闭虚拟机,如果克隆命令无法使用提前安装好 virt-clone

yum -y install virt-clone

克隆

virt-clone -o 虚拟机名称(centos7.0)  -n  新的虚拟机名称(centos7.0_1) -f /date/store/centos7.0_1.qcow2(新的存储名称) 

KVM虚拟化平台部署及管理
4.2 虚拟机快照
为虚拟机创建快照,并查看快照信息

virsh snapshot-create 虚拟机名称(centos7.0_1)
virsh snapshot-list 虚拟机名称(centos7.0_1) 

KVM虚拟化平台部署及管理
恢复快照

virsh snapshot-revert 虚拟机名称(centos7.0_1)  快照名称(1527228860)

KVM虚拟化平台部署及管理

删除快照

virsh snapshot-delete 虚拟机名称(centos7.0_1)  快照名称(1527228860)

KVM虚拟化平台部署及管理

三、KVM虚拟网络管理命令(virtual network):

virsh命令参数 功能 用法举例
net-autostart 配置一个虚拟网络开机自启(--disable可以关闭) virsh net-autostart br0
net-create 通过一个xml文件创建一个虚拟网络 virsh net-create ./virbr1.xml
net-define 通过xml文件定义一个虚拟网络,仅定义不实例化 virsh net-define ./virbr1.xml
net-destory 停止由其名称(uuid)指定的虚拟网络,立即生效 virsh net-destroy br0
net-dumpxml 以xml文件的形式输出一个虚拟网络的配置信息 virsh net-dumpxml br0
net-edit 编辑一个虚拟网络的配置文件(修改虚拟网络配置) virsh net-edit br0
net-info 返回要查看的虚拟网络的基本信息 virsh net-info default
net-list 查看当前的虚拟网络信息(可以带参数) virsh net-list --all
net-name
net-start 开始一个不活跃的虚拟网络 virsh net-start br0
net-undefine 将一个不活跃的虚拟网络取消定义 virsh net-undefine br0
net-uuid
net-update
创建并启用一个网络:net-define -> net-start
virsh net-define br0.xml
virsh net-list --all (有br0网络,但处于不活跃状态)
virsh net-start br0
virsh net-list --all (br0网络已处于活跃状态)

停用并删除一个网络(以br0为例):net-destroy -> net-undefine
virsh net-destroy br0
virsh net-list --all (br0网络变为不活跃状态)
virsh
net-undefine br0
virsh net-list --all (br0网络已被删除)

猜你喜欢

转载自blog.51cto.com/13266497/2149602
今日推荐