首页 > 代码库 > 云计算之KVM虚拟化最佳实践

云计算之KVM虚拟化最佳实践

一.云计算出现的背景

    在云计算出现之前,大部分企业的数据服务的数据中心一般是以IDC托管的形式,一般企业买设备放到IDC机房托管,然后安装系统,部署服务,购买域名绑定,到外网访问的一系列的流程过程。

    但是这些传统的做法对于初创的企业来说存在一些问题:

1.资源的利用率很低;

2.资源分配不合理;

3.自动化能力差;

4.初始成本高;

从传统数据中心到创业型企业的大量涌入,从解决问题以及中小企业的服务需求,逐渐演变出了云计算的概念和实践:

技术分享

二.云计算概念

    简单概括:

1.云计算是一种资源使用交付的模式;

2.云计算必须通过网络来使用;

3.弹性计算,按需付费,快速扩展;

对于底层网络和硬件等,不需要关心太多,都是由云计算提供商来服务提供的。

一般云计算分类如下图:

技术分享

公有云指的是一般云提供商提供的公网云服务,比如阿里云,腾讯云等

私有云指的是一般企业内部搭建的云服务,使用的软件有开源的openstack,cloudstack等。

混合云指的是公有云和私有云混合使用,一般的企业可能会混用。

云计算分层如下图:

技术分享

Saas:软件层;面向的是最终的用户

Paas:平台层;面向开发人员

Iaas:基础设施服务;面向运维人员


三.虚拟化

云计算并不等同于虚拟化,只是云计算中运用到了虚拟化技术。

在这里介绍虚拟化的一种技术KVM (Kernel-based Virtual Machine)

结构简单,包含两部分:

。设备驱动/dev/kvm

。针对模拟PC硬件的用户空间组件

KVM需要cpu虚拟化功能的支持,只可以在具有虚拟化支持的CPU上运行,即具有VT功能的intel CPU和具有AMD cpu.

技术分享

   在硬件虚拟化技术的支持下,内核的KVM模块和QEMU的设备模拟协同工作,就构成了一整套与物理计算机系统完全一致的虚拟化计算机软硬件系统:

技术分享


libvirt介绍

技术分享

libvirt是一套免费、开源的支持Linux下主流虚拟化工具的C函数库,起作用于包括Xen,kvm在内的各种虚拟化工具提供一套方便,可靠的编程接口,即实现Linux虚拟化功能的接口,支持各种虚拟机监控程序。


四.KVM实战

准备环境:CentOS7 VMware虚拟机上模拟  2G内存  50G硬盘  开启虚拟化功能  CentOS6的镜像文件

安装虚拟化软件:

yum install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install –y 

设置开机自启动以及启动服务

[root@linux-node1 /opt]# systemctl start libvirtd

[root@linux-node1 /opt]# systemctl enable libvirtd

上传镜像,创建虚拟硬盘空间10G

[root@linux-node1 /opt]# qemu-img create -f raw /opt/CentOS-6-x86_64.raw 10G

Formatting ‘/opt/CentOS-6-x86_64.raw‘, fmt=raw size=10737418240 

创建虚拟机

[root@linux-node1 /opt]# virt-install --virt-type kvm --name CentOS-6-x86_64 --ram 2048 --cdrom=/opt/CentOS-6-x86_64-Minimal-1511.iso --disk path=/opt/CentOS-6-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

- -virt-type:指定虚拟机类型(kvmqemuxen)

- -name:指定虚拟机的名称

- -ram:指定内存大小

- -cpu:指定cpu的核数(默认为1)

- -cdrom:指定镜像

- -disk:指定磁盘路径(即上文创建的虚拟磁盘)

- -network:指定网络类

安装客户端TightVNC连接虚拟机

技术分享

连接后需要手动安装系统

技术分享

kvm的管理

virt-install   #建立kvm虚拟机
virsh list   #查看正在运行的KVM虚拟机
virsh list --all    #查看所有KVM虚拟机
virsh start name    #启动KVM虚拟机
virsh shutdown name  #正常关闭KVM虚拟机
virsh destroy name   #强制关闭KVM虚拟机(类似于直接断电)
virsh suspend name   #挂起KVM虚拟机
virsh resume name   #恢复挂起的KVM虚拟机
virsh dumpxml name   #查看KVM虚拟机配置文件
virsh edit name   #编辑KVM虚拟机的xml配置文件
virsh undefine name   #彻底删除KVM虚拟机,不可逆,如果想找回来,需要备份/etc/libvirt/qemu的xml文件)

[root@linux-node1 /opt]# virsh list --all

 Id    Name                           State

----------------------------------------------------

 2     CentOS-6-x86_64                running

设置cpu核数

 virsh setvcpus CentOS-6-x86_64 2 --live

设置内存

[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-6-x86_64 --hmp --cmd balloon 1024
[root@linux-node1 ~]# virsh qemu-monitor-command CentOS-6-x86_64 --hmp --cmd info balloon
balloon: actual=1024

网络设置

brctl addbr br0
brctl addif br0 eth0
ip addr del dev eth0 192.168.56.11/24
ifconfig br0 192.168.56.11/24 up
route add default gw 192.168.56.2

[root@linux-node1 ~]# virsh edit CentOS-6-x86_64

Domain CentOS-6-x86_64 XML configuration edited.

 <interface type=‘bridge‘>

<source bridge=‘br0‘/>

本文图片来自于www.unixhot.com,理论知识来自赵班长讲解总结。

本文出自 “追梦IT男” 博客,请务必保留此出处http://runningyongboy.blog.51cto.com/8234857/1886525

云计算之KVM虚拟化最佳实践