什么是虚拟化
虚拟化其实就是一种资源管理技术,将计算机的各种实体资源(CPU,内存,磁盘等),转换成可供分区的电脑配置环境,是云计算的基础。
虚拟化管理程序—hypervisor
hypervisor是一个运行在虚拟机和物理机之间的中间软件层,即虚拟机监视器。
虚拟化的种类
- 全虚拟化:hypervisor与os(物理机操作系统)分离,hyperviosr捕捉虚拟机上的特权指令(申请资源等)转化成二进制信息交给os处理,os将处理完的结果返回给hypervisor,hypervisor在转换信息交给虚拟机。
VirtualBox,KVM,VMware Workstation等 - 半虚拟化:hypervisor与os融合在一起,hypervisor可以直接自行处理虚拟机的指令。
Xen等 - 硬件辅助虚拟化:多增加一个cpu指令环 ring-1 来转化 ring0 的特软指令,特权指令直接由cpu虚拟给出,不需要软件参与转化。
VirtualBox,KVM,VMware ESX和Xen - 操作系统虚拟化 :虚拟机不需要安装操作系统,应用即虚拟机。
虚拟化技术的优势
- 降低运营成本:摆脱了繁重昂贵的物理服务器。
- 提供了应用的兼容性:虚拟化由很好的应用隔离性,在平台上运行的应用互不干扰。
- 加速应用部署:缩短了部署时间。
- 提高服务可用性:虚拟机便于备份,迁移,恢复。
- 提高了资源利用率:提高了CPU,内存,磁盘的利用率。
- 动态资源调度:可以根据虚拟机使用资源的情况给他分配资源。
- 降低能源消耗:由于资源利用率提高了,所以减少了不必要的物理服务器,从而减小了能源的消耗。
- 便于管理:由于虚拟化将多台服务器部署在一台物理设备上,一个管理员就可以管理多台虚拟设备。
VMM(virtual machine manager)
VMM是虚拟机管理员,可以让用户管理多个虚拟机。
KVM简介
KVM是基于LINUX内核的虚拟化基础设施,可以将linux内核转化为hypervisor。
KVM 目前由 Red Hat 等厂商开发,对 CentOS/Fedora/RHEL 等 Red Hat 系发行版支持极佳。
KVM的部署
hostname -I #查看有多少个ip地址(网卡)
- 查看cpu支持
[root@yiki ~]# cat /proc/cpuinfo |grep 'vmx'
由内容显示,则说明有cpu支持
- 安装工具qemu-kvm
[root@yiki ~]# yum -y install libvirt* virt-* qemu-kvm*
安装软件说明:
libvirt # 虚拟机管理
virt # 虚拟机安装克隆
qemu-kvm # 管理虚拟机磁盘
- 启动服务
[root@yiki ~]# systemctl start libvirtd.server
[root@yiki ~]# systemctl enable libvirtd.server
[root@yiki ~]# systemctl status libvirtd.server
- 安装并启动vnc,用来安装虚拟机
[root@yiki ~]# yum -y install tightvnc
- 配置安装kvm虚拟机
[root@yiki ~]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/eden.raw,format=raw,size=10 --cdrom /data/CentOS-7-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900
--noautoconsole开始安装......
正在分配 'test2.raw' | 2.0 GB 00:00
域安装仍在进行。您可以重新连接
到控制台以便完成安装进程。
到这一步就配置完成了,然后打开vnc连接kvm机器的ip(本机ip)进行安装,安装完后,打开KMM的控制台操作即可。
创建每一台虚拟机时,prot不能重复,否则无法创建
便于复制:
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /data/eden.raw,format=raw,size=10 --cdrom /data/CentOS-7-x86_64-DVD-1511.iso --network network=default --graphics vnc,listen=0.0.0.0,port=5900
参数解释:
–name:创建的虚拟机的名字
–disk:虚拟机的域,存储虚拟机相关的东西
–cdrom:镜像的存储路径
–network:网络方式选择默认default
KVM常用命令
virsh console centos7(虚拟机名) #连接到虚拟机
virsh dumpxml centos7 > centos7.xml #关机时备份
virsh list --all #查看虚拟机列表
virsh undefine centos7 #删除虚拟机
virsh define centos7-off.xml #导入虚拟机
virsh domrename 【oldname】 【newname】 #虚拟机重命名
virsh suspend 【虚拟机名】 #挂起虚拟机
virsh resume 【虚拟机名】 #恢复虚拟机
virsh vncdisplay 【虚拟机名】 #查看虚拟机的端口