OpenStack云计算与虚拟化—KVM篇

作者: K-Joker 分类: 云计算与虚拟化 发布时间: 2018-11-06 16:56

  什么是虚拟化

首先,我们需要明白一点云计算并不等于虚拟化,云计算只是使用到了虚拟化的技术,而虚拟化的技术分为很多种,如软件虚拟化、网络虚拟化、服务器虚拟化等等,而KVM虚拟化是服务器虚拟化的一种,指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

  什么是KVM

KVM是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。

  KVM架构优势

  • 利用Linux的功能 – 不用重复发明轮子
  • 构建在信任的,稳定的企业级平台之上
  • 调度、内存管理、广泛的硬件支持等
  • 高级特性
  • 继承可扩展性,NUMA支持,电源管理,热拔插等
  • SELinux安全,实时调度,RAS支持等
  • 独特的hybrid-mode操作,提供了最大的灵活性
  • Linux的应用程序和虚拟机同时并存在同一台服务器上,有效的利用系统硬件资源,高效平滑的将虚拟化整合到企业数据中心的核心
  • 高性能,基于内核优秀的调度技术,利用硬件虚拟化特性

  KVM工具

■qemu-kvma   ■libvirt   ■virt-install

#查看VMX虚拟化是否开启
[root@kvm ~]# grep -E '(vmx|svm)' /proc/cpuinfo
#安装KVM管理工具
[root@kvm ~]# yum -y install qemu-kvm libvirt virt-install
#设置libvirtd开机自启动
[root@kvm ~]# systemctl enable libvirtd
#启动libvirtd
[root@kvm ~]# systemctl start libvirtd

  KVM创建虚拟主机

#创建一块10G的虚拟硬盘
[root@kvm ~]# qemu-img create -f raw /opt/RedHat-Demo.raw 10G
#创建虚拟机
[root@kvm ~]# virt-install --virt-type kvm --name RedHat-Demo --ram 1024 --cdrom=/opt/RedHat-Server-6.3.iso --disk path=/opt/RedHat-Demo.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

#列出虚拟机
[root@kvm ~]# virsh list --all
#关闭虚拟机
[root@kvm ~]# virsh shutdown RedHat-Demo
#启动虚拟机
[root@kvm ~]# virsh start RedHat-Demo

  libvirt管理工具

后台进程、API接口、virsh组件

  CPU、内存配置

[root@kvm ~]# virsh edit RedHat-Demo
#修改xml文件使其支持热添加CPU个数,最大4个,当前1个
<vcpu placement='auto' current='1'>4</vcpu>
#执行cpu添加命令
[root@kvm ~]# virsh setvcpus  RedHat-Demo 2 --live
        
#查看虚拟机当前的内存大小
[root@kvm ~]# virsh qemu-monitor-command RedHat-Demo --hmp --cmd info balloon
#修改虚拟机内存大小(热修改)
[root@kvm ~]# virsh qemu-monitor-command RedHat-Demo --hmp --cmd balloon 512

  网络配置

#创建桥接虚拟网卡
[root@kvm ~]# brctl addbr br0
#将真实网卡与桥接虚拟网卡互换
[root@kvm ~]# brctl addif br0 eth0
#删除真实网卡的IP地址
[root@kvm ~]# ip addr del dev eth0 192.168.137.52/24
#设置桥接虚拟网卡的IP地址,并启动
[root@kvm ~]# ifconfig br0 192.168.137.52/24 up
#设置网关路由
[root@kvm ~]# route add default gw 192.168.56.1

*注:以上将网络修改为桥接网络会使网络中断,所以建议使用脚本进行
[root@kvm ~]# virsh edit RedHat-Demo
    <interface type='bridge'>
        <mac address='52:54:00:0b:ab:e9'/>
        <source bridge='br0'/>
        <model type='virtio'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

哟,老板,有空常来呀~

发表评论

电子邮件地址不会被公开。