什么是虚拟化
首先,我们需要明白一点云计算并不等于虚拟化,云计算只是使用到了虚拟化的技术,而虚拟化的技术分为很多种,如软件虚拟化、网络虚拟化、服务器虚拟化等等,而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>
转载于:https://blog.51cto.com/13444271/2313536