制作网页链接,蜗牛精灵seo,付网站建设服务费记账,住房和城乡建设部建造师网站目录 一、虚拟化技术概述二、主流虚拟化介绍1、虚拟化技术主要分类2、平台虚拟化技术分类 三、KVM虚拟化技术简介1、KVM架构及解析 四、KVM软件安装1、环境准备2、查看CPU是否支持VT技术3、清理环境#xff0c;卸载原有KVM4、安装软件5、启动服务6、查看kvm模块加载 五、Guest… 目录 一、虚拟化技术概述二、主流虚拟化介绍1、虚拟化技术主要分类2、平台虚拟化技术分类 三、KVM虚拟化技术简介1、KVM架构及解析 四、KVM软件安装1、环境准备2、查看CPU是否支持VT技术3、清理环境卸载原有KVM4、安装软件5、启动服务6、查看kvm模块加载 五、Guest OS安装1、图形模式安装Guest OS2、完全文本方式安装3、命令行模式安装1.需要有磁盘镜像文件2.需要有配置⽂件3.配置⽂件需要修改必要的内容4.创建虚拟机5.重启libvitd6.宿主机开启路由转发 一、虚拟化技术概述 虚拟化[Virtualization]技术最早出现在 20 世纪 60 年代的 IBM ⼤型机系统在70年代的 System370 系列中逐渐流⾏起来这些机器通过⼀种叫虚拟机监控器[Virtual Machine MonitorVMM]的程序在物理硬件之上⽣成许多可以运⾏独⽴操作系统软件的虚拟机[Virtual Machine]实例。随着近年多核系统、集群、⽹格甚⾄云计算的⼴泛部署虚拟化技术在商业应⽤上的优势⽇益体现不仅降低了 IT 成本⽽且还增强了系统安全性和可靠性虚拟化的概念也逐渐深⼊到⼈们⽇常的⼯作与⽣活中。 虚拟化是⼀个⼴义的术语对于不同的⼈来说可能意味着不同的东⻄这要取决他们所处的环境。在计算机科学领域中虚拟化代表着对计算资源的抽象⽽不仅仅局限于虚拟机的概念。例如对物理内存的抽象产⽣了虚拟内存技术使得应⽤程序认为其⾃身拥有连续可⽤的地址空间[Address Space]⽽实际上应⽤程序的代码和数据可能是被分隔成多个碎⽚⻚或段甚⾄被交换到磁盘、闪存等外部存储器上即使物理内存不⾜应⽤程序也能顺利执⾏。
二、主流虚拟化介绍
1、虚拟化技术主要分类
平台虚拟化Platform Virtualization针对计算机和操作系统的虚拟化。资源虚拟化Resource Virtualization针对特定的系统资源的虚拟化⽐如内存、存储、⽹络资源等。应⽤程序虚拟化Application Virtualization包括仿真、模拟、解释技术等。
2、平台虚拟化技术分类 我们通常所说的虚拟化主要是指平台虚拟化技术通过使⽤控制程序Control Program也被称为Virtual Machine Monitor 或Hypervisor隐藏特定计算平台的实际物理特性为⽤户提供抽象的、统⼀的、模拟的计算环境称为虚拟机。虚拟机中运⾏的操作系统被称为客户机操作系统Guest OS运⾏虚拟机监控器的操作系统被称为主机操作系统Host OS当然某些虚拟机监控器可以脱离操作系统直接运⾏在硬件之上如 VMWARE 的 ESX 产品。运⾏虚拟机的真实系统我们称之为主机系统。 操作系统级虚拟化Operating System Level Virtualization 在传统操作系统中所有⽤户的进程本质上是在同⼀个操作系统的实例中运⾏因此内核或应⽤程序的缺陷可能影响到其它进程。操作系统级虚拟化是⼀种在服务器操作系统中使⽤的轻量级的虚拟化技术内核通过创建多个虚拟的操作系统实例内核和库来隔离不同的进程不同实例中的进程完全不了解对⽅的存在。 ⽐较著名的有 Solaris ContainerFreeBSD Jail 和 OpenVZ 等。部分虚拟化Partial Virtualization VMM 只模拟部分底层硬件因此客户机操作系统不做修改是⽆法在虚拟机中运⾏的其它程序可能也需要进⾏修改。在历史上部分虚拟化是通往全虚拟化道路上的重要⾥程碑,最早出现在第⼀代的分时系统 CTSS 和 IBM M44/44X 实验性的分⻚系统中。全虚拟化Full Virtualization 全虚拟化是指虚拟机模拟了完整的底层硬件包括处理器、物理内存、时钟、外设等使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运⾏。 操作系统与真实硬件之间的交互可以看成是通过⼀个预先规定的硬件接⼝进⾏的。全虚拟化 VMM 以完整模拟硬件的⽅式提供全部接⼝同时还必须模拟特权指令的执⾏过程。举例⽽⾔x86 体系结构中对于操作系统切换进程⻚表的操作真实硬件通过提供⼀个特权CR3 寄存器来实现该接⼝操作系统只需执⾏ mov pgtable,%%cr3汇编指令即可。 全虚拟化 VMM 必须完整地模拟该接⼝执⾏的全过程。如果硬件不提供虚拟化的特殊⽀持那么这个模拟过程将会⼗分复杂⼀般⽽⾔VMM 必须运⾏在最⾼优先级来完全控制主机系统⽽ Guest OS 需要降级运⾏从⽽不能执⾏特权操作。当 Guest OS 执⾏前⾯的特权汇编指令时主机系统产⽣异常General Protection Exception执⾏控制权重新从 Guest OS转到 VMM ⼿中。VMM 事先分配⼀个变量作为影⼦ CR3 寄存器给 Guest OS将 pgtable 代表的客户机物理地址Guest Physical Address填⼊影⼦ CR3 寄存器然后 VMM 还需要pgtable 翻译成主机物理地址Host Physical Address并填⼊物理 CR3 寄存器最后返回到 Guest OS中。随后 VMM 还将处理复杂的 Guest OS 缺⻚异常Page Fault。 ⽐较著名的全虚拟化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun VirtualBox、Parallels Desktop for Mac 和QEMU超虚拟化Paravirtualization 这是⼀种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在超虚拟化虚拟机中部分硬件接⼝以软件的形式提供给客户机操作系统这可以通过 HypercallVMM提供给 Guest OS 的直接调⽤与系统调⽤类似的⽅式来提供。例如Guest OS 把切换⻚表的代码修改为调⽤ Hypercall 来直接完成修改影⼦ CR3 寄存器和翻译地址的⼯作。由于不需要产⽣额外的异常和模拟部分硬件执⾏流程超虚拟化可以⼤幅度提⾼性能⽐较著名的VMM 有 Denali、Xen。硬件辅助虚拟化Hardware-Assisted Virtualization 硬件辅助虚拟化是指借助硬件主要是主机处理器的⽀持来实现⾼效的全虚拟化。例如有了Intel-VT 技术的⽀持Guest OS 和 VMM 的执⾏环境⾃动地完全隔离开来Guest OS 有⾃⼰的“套寄存器”可以直接运⾏在最⾼级别。因此在上⾯的例⼦中Guest OS 能够执⾏修改⻚表的汇编指令。Intel-VT 和 AMD-V 是⽬前 x86 体系结构上可⽤的两种硬件辅助虚拟化技术。 这种分类并不是绝对的⼀个优秀的虚拟化软件往往融合了多项技术。例如 VMware Workstation是⼀个著名的全虚拟化的 VMM但是它使⽤了⼀种被称为动态⼆进制翻译的技术把对特权状态的访问转换成对影⼦状态的操作从⽽避免了低效的 Trap-And-Emulate 的处理⽅式这与超虚拟化相似只不过超虚拟化是静态地修改程序代码。对于超虚拟化⽽⾔如果能利⽤硬件特性那么虚拟机的管理将会⼤⼤简化同时还能保持较⾼的性能。
三、KVM虚拟化技术简介
1、KVM架构及解析 解析 从rhel6开始使⽤红帽公司直接把KVM的模块做成了内核的⼀部分。 xen⽤在rhel6之前的企业版中默认内核不⽀持需要重新安装带xen功能的内核 KVM 针对运⾏在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第⼀个成为原⽣ Linux 内核2.6.20的⼀部分的hypervisor它是由 Avi Kivity 开发和维护的现在归 Red Hat 所有。 这个 hypervisor 提供 x86 虚拟化同时拥有到 PowerPC® 和 IA64 的通道。另外KVM 最近还添加了对对称多处理SMP主机和来宾的⽀持并且⽀持企业级特性⽐如活动迁移允许来宾操作系统在物理服务器之间迁移。 KVM 是作为内核模块实现的因此 Linux 只要加载该模块就会成为⼀个hypervisor。KVM 为⽀持hypervisor 指令的硬件平台提供完整的虚拟化⽐如 Intel Virtualization Technology [Intel VT] 或AMD Virtualization [AMD-V] 产品。KVM 还⽀持准虚拟化来宾操作系统包括 Linux 和 Windows。 这种技术由两个组件实现。第⼀个是可加载的 KVM 模块当在 Linux 内核安装该模块之后它就可以管理虚拟化硬件并通过 /proc ⽂件系统公开其功能。第⼆个组件⽤于 PC 平台模拟它是由修改版QEMU 提供的。QEMU 作为⽤户空间进程执⾏并且在来宾操作系统请求⽅⾯与内核协调。 当新的操作系统在 KVM 上启动时通过⼀个称为 KVM 的实⽤程序它就成为宿主操作系统的⼀个进程因此就可以像其他进程⼀样调度它。但与传统的 Linux 进程不⼀样来宾操作系统被 hypervisor标识为处于 “来宾” 模式独⽴于内核和⽤户模式。 每个来宾操作系统都是通过 /dev/KVM 设备映射的它们拥有⾃⼰的虚拟地址空间该空间映射到主机内核的物理地址空间。如前所述KVM 使⽤底层硬件的虚拟化⽀持来提供完整的原⽣虚拟化。I/O请求通过主机内核映射到在主机上hypervisor执⾏的 QEMU 进程。 KVM 在 Linux 环境中以主机的⽅式运⾏不过只要底层硬件虚拟化⽀持它就能够⽀持⼤量的来宾操作系统。
四、KVM软件安装
1、环境准备
安装一台图形界面的虚拟机 内存大于等于8G主机电脑内存为8G给于虚拟机内存在它自身以下所以使用可能会卡 开启虚拟化引擎一般支持勾线第一选项虚拟化Intel VT-x或AMD-V/RVI如果在检查CPU是否支持时报错在勾选第二选项和第三选项 准备好环境之后启动虚拟机。
2、查看CPU是否支持VT技术
[rootlocalhost ~]# cat /proc/cpuinfo | grep -E vmx|svm
#vmx是指当前cpu支持的是Intel的虚拟化。svm指支持的AMD的虚拟化。3、清理环境卸载原有KVM
#将原有的kvm卸载
[rootlocalhost ~]# yum remove rpm -qa | egrep qemu|virt|KVM -y
#删除原kvm的磁盘镜像存储的目录和配置文件目录
[rootlocalhost ~]# rm -rf /var/lib/libvirt /etc/libvirt/4、安装软件
在centos7安装
#查看版本
[rootlocalhost run]# uname -r
3.10.0-1160.81.1.el7.x86_64
#安装软件及依赖
[rootlocalhost run]# yum install *qemu* *virt* librbd1-devel -y注qemu-KVM主包 libvirtAPI接⼝ virt-manager图形管理程序 在kvm技术中应用到的其实就是qemukvm 5、启动服务
#启动服务
[rootlocalhost run]# systemctl start libvirtd
#查看服务状态
[rootlocalhost run]# systemctl status libvirtd
#设置为开机自启
[rootlocalhost run]# systemctl enable libvirtd6、查看kvm模块加载
[rootlocalhost ~]# lsmod | grep kvm
kvm_intel 188793 0
kvm 653928 1 kvm_intel
irqbypass 13503 1 kvm五、Guest OS安装 安装方式 图形方式相对简单重点文本模式需要现场配置虚拟机规格命令⾏模式重中之重 最常⽤ 模板镜像配置⽂件 ⽅式配置规格通过⻜机驾驶舱相当于web界面的应用安装和管理虚拟机。 飞机驾驶舱安装 #下载
[rootlocalhost ~]# yum install -y cockpit
#启动服务
[rootlocalhost ~]# systemctl start cockpit注cockpit默认服务端口为9090访问主机ip:9090
1、图形模式安装Guest OS 安装前需要注意 安装前把飞机驾驶舱服务关掉 systemctl stop cockpit.socket 在开始前需上传一个镜像 [rootlocalhost ~]# ll
总用量 4415488
-rw-r--r-- 1 root root 4521459712 2月 1 18:36 CentOS-7-x86_64-DVD-1708.iso打开虚拟机图形界面安装若没有相关命令可以使用yum下载
[rootlocalhost ~]# virt-manager 也可以使用任务栏上的菜单打开 打开弹出程序窗口 然后新建虚拟机根据窗口提示步骤一步步安装这里实验选择的是“本地安装介质”选择镜像文件设置内存和CPU核数设置存储大小注意存储大小至少大于2G命名虚拟机名称并选择网络方式实验选择的默认方式NAT设置完成等待进入虚拟机进行安装配置到这里就跟安装VMware一样了。 注我这里安装过程在点击完成时弹窗提示了一个这样的错“无法完成安装:不支持的配置:CPUmode ‘custom’ for x86_64 kvm domain onx86_64 host is not supported by hypervisor” 我的解决方法是直接重启系统然后重新来就行了. 2、完全文本方式安装
极端情况服务器没有图形 客户端也没有图形 #virt-install --connect qemu:///system -n vm6 -r 512 --disk path/virhost/vmware/vm6.img,size7 --os-typelinux --os-variantrhel6 --vcpus1 --network bridgebr0 --locationhttp://127.0.0.1/rhel6u4 -x consolettyS0 --nographics #virt-install --connect qemu:///system -n vm9 -r 2048 --disk path/var/lib/libvirt/images/vm9.img,size7 --os-typelinux --os-variantcentos7.0 --vcpus1 --locationftp://192.168.100.230/centos7u3 -x consolettyS0 --nographics 注释–coonect 表示连接qemu:///system你的系统 -n 表示给安装的虚拟机取名 vm9 -r 表示以兆为单位给于内存2048 –disk path 表示镜像文件存放的路径 size 表示磁盘大小 --os-type表示系统类型–os-variant表示系统版本 --vcpus表示指定CPU核数 --location表示指定安装服务器及路径目录 -x console表示分配的终端 --nographics表示安装模式这个参数是指没有图形界面的。 注意⽤这种⽅式安装的操作系统⼤⼩写会胡乱变化不影响远程操作 内存必须2G以上。 查看KVM⽀持的OS版本
[rootlocalhost ~]# man virt-install
#查看参数词条
[rootlocalhost ~]# osinfo-query os | grep centos
#查看支持版本排错: 安装过程中 ⼿动配置IP地址 到url位置找不到路径要返回去⼿动选择url重新配置url为ftp://192.168.100.230/rhel6u4,这⾥的ip不要写127.0.0.1⽽是br0的ip 给虚拟机指定的内存必须⼤于2048M不然报错如下 dracut-initqueue[552]: /sbin/dmsquash-live-root: line 273: printf: write error: No space left on device 逃脱符 Escape character is ^] 3、命令行模式安装 虚拟机组成部分 1.虚拟机配置文件 [rootlocalhost ~]# ls /etc/libvirt/qemu
networks vm1.xml2.储存虚拟机的介质 [rootlocalhost ~]# ll /var/lib/libvirt/images/
总用量 5243908
-rw------- 1 qemu qemu 5369757696 2月 2 15:10 vm1.qcow2根据配置文件创建虚拟机
1.需要有磁盘镜像文件
[rootlocalhost ~]# cd /etc/libvirt/qemu/
[rootlocalhost qemu]# cp vm1.xml vm2.xml 2.需要有配置⽂件
[rootlocalhost qemu]# cd /var/lib/libvirt/images/
[rootlocalhost images]# cp vm1.qcow2 vm2.img3.配置⽂件需要修改必要的内容
[rootlocalhost ~]# vim /etc/libvirt/qemu/vm2.xml
domain typeKVM
namevm2/name #修改虚拟机名称
uuid72535aa9-08b5-49ec-9ef9-0d48a2b2ff4d/uuid #修改设备唯一标识编号
memory unitKiB1024000/memory
currentMemory unitKiB1024000/currentMemory #内存可选更改
vcpu placementstatic2/vcpu #CPU核数可选更改
ostype archx86_64 machinepc-i440fx-rhel7.0.0hvm/typeboot devhd//osfeaturesacpi/apic//featurescpu modecustom matchexact checkpartialmodel fallbackallowBroadwell-noTSX-IBRS/modelfeature policyrequire namemd-clear/feature policyrequire namespec-ctrl/feature policyrequire namessbd//cpuclock offsetutctimer namertc tickpolicycatchup/timer namepit tickpolicydelay/timer namehpet presentno//clockon_poweroffdestroy/on_poweroffon_rebootrestart/on_rebooton_crashdestroy/on_crashpmsuspend-to-mem enabledno/suspend-to-disk enabledno/
/pm
devicesemulator/usr/libexec/qemu-KVM/emulatordisk typefile devicediskdriver nameqemu typeqcow2/source file/var/lib/libvirt/images/vm2.img/ #修改磁盘镜像文件名target devvda busvirtio/address typepci domain0x0000 bus0x00 slot0x06
function0x0//diskdisk typefile devicediskdriver nameqemu typeqcow2/source file/var/lib/libvirt/images/vm2-1.img/target devvda busvirtio/address typepci domain0x0000 bus0x00 slot0x16
function0x0//diskcontroller typeusb index0 modelich9-ehci1address typepci domain0x0000 bus0x00 slot0x04
function0x7//controllercontroller typeusb index0 modelich9-uhci1master startport0/address typepci domain0x0000 bus0x00 slot0x04
function0x0 multifunctionon//controllercontroller typeusb index0 modelich9-uhci2master startport2/address typepci domain0x0000 bus0x00 slot0x04
function0x1//controllercontroller typeusb index0 modelich9-uhci3master startport4/address typepci domain0x0000 bus0x00 slot0x04
function0x2//controllercontroller typepci index0 modelpci-root/controller typevirtio-serial index0address typepci domain0x0000 bus0x00 slot0x05
function0x0//controllerinterface typenetworkmac address52:54:00:c9:19:9b/ #修改Mac地址不要地址冲突注意只能修改后三段source networkdefault/model typevirtio/address typepci domain0x0000 bus0x00 slot0x03
function0x0//interfaceserial typeptytarget typeisa-serial port0model nameisa-serial//target/serialconsole typeptytarget typeserial port0//consolechannel typeunixtarget typevirtio nameorg.qemu.guest_agent.0/address typevirtio-serial controller0 bus0 port1/input typemouse busps2/input typekeyboard busps2/memballoon modelvirtioaddress typepci domain0x0000 bus0x00 slot0x07
function0x0//memballoon
/devices
/domain 4.创建虚拟机
[rootlocalhost ~]# virsh define /etc/libvirt/qemu/vm2.xml5.重启libvitd
[rootlocalhost images]# systemctl restart libvirtd.service 6.宿主机开启路由转发
#编辑conf文件在末行添加net.ipv4.ip_forward 1
[rootlocalhost images]# vim /etc/sysctl.conf
#输入命令使其生效
[rootlocalhost images]# sysctl -p
net.ipv4.ip_forward 1最后我们再使用virt-manager打开管理窗口查看vm2启动看安装是否成功。
学习视频 https://www.bilibili.com/video/BV11p4y1U7Na?p1vd_source92ffd157bfd8ef398f23be5c7aba4d65