代码语言:javascript复制
概念:
云计算自从提出,一直没有一个明确而统一的定义。维基百科对云计算做了如下的描述:云计算是一种通过因特网以服务的方式提供动态可伸缩的虚拟化的资源的计算模式。美国国家标准与技术研究院( NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络、服务器、存储、应用软件和服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。
云计算分类:
公有云:public Cloud,通常指第三方提供商为用户提供的能够通过互联网来使用的云主机,所有入驻的用户都称为租户,公有云本质使一种共享资源服务,最大的特点使成本低,扩展性好对于安全要求不高的中小型企业或个人站长是非常好的选择,缺点是对于云端的资源缺乏控制,保密数据的安全性,网络性能和匹配性问题。
私有云:Private Cloud,是为使用者单独而构建的,是企业的专有资源,对数据保密,数据安全,服务质量都能有效控制,特点是安全性与私有化,是定制化解决方案的根本,可保证企业的数据安全与稳定。
混合云:Hybird Cloud 是一种混合了私有云和公有云的新型解决方案,集公有云的方便便捷与私有云的安全稳定为一体,是近年云计算的主要模式和发展方向,企业出于安全考虑,会将敏感数据或是运行关键性的工作负载放在私有云上,同时又希望能使用公有云的免费资源,达到安全又省钱的目的。
云计算的分层:
1.软件设施即服务
SaaS提供商将应用软件统一部署在自己的服务器上,用户根据需求通过互联网向厂商订购应用软件服务,服务提供商根据客户所定软件的数量、时间的长短等因素收费,并且通过浏览器向客户提供软件的模式。这种服务模式的优势是,由服务提供商维护和管理软件,提供软件运行的硬件设施,用户只需拥有能够接入互联网的终端,即可随时随地使用软件。在这种模式下,客户不再像传统模式那样花费大量资金在硬件、软件、维护人员上,只需要支出一定的租赁服务费用,通过互联网就可以享受到相应的硬件、软件和维护服务,这是网络应用最具效益的营运模式。对于小型企业来说,SaaS是采用先进技术的最好途径。
目前,Salesforce.com是提供这类服务最著名的公司,Google Docs、Google Apps和Zoho Office也属于这类服务。
2.平台设施及服务
PaaS把开发环境作为一种服务来提供。这是一种分布式平台服务,厂商提供开发环境、服务器平台、硬件资源等服务给客户,用户在其平台基础上定制开发自己的应用程序并通过其服务器和互联网传递给其他客户。PaaS能够为企业或个人提供研发的中间件平台,提供应用程序开发、数据库、应用服务器、试验、托管及应用服务。
Google App Engine、Salesforce的 force.com平台、八百客的800APP是PaaS的代表产品。以Google App Engine为例,它是一个由python应用服务器群、BigTable数据库及GFS组成的平台,为开发者提供一体化主机服务器及可自动升级的在线应用服务。用户编写应用程序并在Google的基础架构上运行就可以为互联网用户提供服务,Google提供应用运行及维护所需要的平台资源。
3.基础设施及服务
整合成一个虚拟的资源池为整个业界提供所需要的存储资源和虚拟化服务器等服务。这是一种托管型硬件方式,用户付费使用厂商的硬件设施。例如Amazon Web服务(AWS )、Google的Google Compute Engine、IBM的BlueCloud等均将基础设施作为服务出租。
laaS的优点是用户只需低成本获得所需的硬件资源,按需租用相应计算能力、存储容量、网络带宽,而且省去了硬件运维方面的成本,大大降低了用户在硬件上的开销。
传统数据中心面临的问题:
1.服务器和网络设备资源利用率过低,无法共享,导致资源浪费。
2.据统计大部分数据中心的服务器和网络设备的利用率仅在20%~30之间。有的CPU利用率,硬盘利用率都在百分之10下。
3.资源分配后进行调整困难
4.资源分配不合理也是传统网络架构存在的问题,因为资源不能动态调配,分配出去的资源都是固定的,不能随意添加或者删除。
5.难以自动化
6.初始成本过高,服务器升级迁移比较繁琐,无法实现自动化。
7.成本较高,需要大量服务器主机,硬件投入和后期管理维护成本很大。
虚拟化和虚拟机
1.什么是虚拟化?
在计算机技术中,虚拟化(virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU,内存,磁盘空间,网络适配器等。)予以抽象,转换后呈现出来并可提供分割,组合为一个或多个计算机配置环境, 并重新分割,重新组合。以达到最大合理利用物理资源的目的。
2.虚拟化的优势
虚拟化可以提高IT敏捷性,灵活性和可扩性,同时大幅节约成本,更高的工作负载移动性,更高的性能和资源可用性,自动化运维这些都是虚拟化的优势,虚拟化技术可以使IT部门更轻松进行管理以及降低拥有成本和运维成本,其优势包括:
1.资源超分
2.降低资金成本和运维成本
3.最大限度减少或许消除停机
4.提高IT部门的工作效率
5.加快应用和资源的调配速度
6.提高业务连续性和灾难恢复能力
7.简化数据中心管理
8.真正的Soft-Defined Data Center的可用性
9.减少端口的冲突。
虚拟机
虚拟计算机被称为虚拟机,(VM,Virtual Machine)它是一种严密隔离且内含操作系统和应用的软件容器,每个虚拟机都是完全独立的,通过将多台虚拟机放置在一台物理计算机上,可仅在一台物理服务器或主机上运行多个操作系统和应用,名为hypervisor的精简软件层可将虚拟机与主机分开,并根据需要为每个虚拟机动态分配计算资源。
虚拟化类型:
1.服务器虚拟化
服务器的虚拟化支持将多个操作系统作为高校的虚拟机在单个服务器上运行,主要优势:
提升IT效率
降低运维成本
更快部署工作
提升应用性能
提高服务可用性
消除服务器数量剧增和情况复杂
2.网络虚拟化
通过软件定义网络,即网络的创建不再依赖物理设备,公有云厂商允许用户创建新的网络,在k8s,openstack中都会使用。
3.桌面虚拟化
将桌面部署为代管服务,使IT组织能更快响应不断变化的工作场所和新出现的机会,还可以将虚拟化桌面和应用快速交付给分支机构。
4.存储虚拟化
SAN(基于硬盘)/NAS(NFS,SAMBA)/GlusterFS/Ceph
5.容器技术
被称为下一代虚拟化技术,典型代表Docker。
云计算和虚拟化
云计算是一种服务模式,虚拟化是一种技术
虚拟化是云计算的重要支撑技术,云计算是基于互联网的相关服务的增加,使用和交付模式,通常涉及通过互联网来提高动态易扩展且经常是虚拟化的资源,通过虚拟化,可以将应用程序和数据在不同层次以不同的方式展现给客户,为云计算的使用者和开发者提高便利,云计算的虚拟化过程为组织带来了灵活性,从而改善IT运维和减少成本支出。
什么是KVM
KVM的全称是Kernel Virtual Machine,翻译成中文就是内核虚拟机。KVM虚拟机最初是由一个以色列的创业公司Qumranet开发的,作为他们的VDI产品的虚拟机。为了简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择了基于Linuxkernel,通过加载新的模块从而使Linux Kernel本身变成一个Hypervisor。2006年10月,在先后完成了基本功能、动态迁移以及主要的性能优化之后,Qumranet正式对外宣布了KVM的诞生。同年10月,KVM模块的源代码被正式接纳进入Linux Kernel,成为内核源代码的一部分。作为一个功能和成熟度都逊于Xen的项目,在这么快的时间内被内核社区接纳,主要原因在于:在虚拟化方兴未艾的当时,内核社区急于将虚拟化的支持包含在内,但是Xen取代内核由自身管理系统资源的架构引起了内核开发人员的不满和抵触。
在2008年9月4日,同内核社区保持着很深渊源的著名Linux发行版提供商——Redhat公司出人意料地出资1亿700百万美金,收购了Qumranet,从而成为了KVM开源项目的新东家。由于此次收购,Redhat公司有了自己的虚拟机解决方案,于是开始在自己的产品中用KVM替换Xen。2010年11月,Redhat公司推出了新的企业版Linux———RHEL 6,在这个发行版中集成了最新的KVM虚拟机,而去掉了在RHEL 5.x系列中集成的Xen。
KVM架构
从虚拟机的基本架构上来区分,虚拟机一般分为两种,我们称之为类型一和类型二。其中,“类型一”虚拟机是在系统上电之后首先加载运行虚拟机监控程序,而传统的操作系统则是运行在其创建的虚拟机中。类型一的虚拟机监控程序,从某种意义上说,可以视为一个特别为虚拟机而优化裁剪的操作系统内核。因为,虚拟机监控程序作为运行在底层的软件层,必须实现诸如系统的初始化、物理资源的管理等操作系统的职能﹔它对虚拟机的创建、调度和管理,与操作系统对进程的创建、调度和管理有共通之处。这一类型的虚拟机监控程序一般会提供一个具有一定特权的特殊虚拟机,由这个特殊虚拟机来运行需要提供给用户日常操作和管理使用的操作系统环境。著名的开源虚拟化软件 Xen、商业软件VMwareESX/ESXi和微软的Hyper-V就是“类型一”虚拟机的代表。
与“类型一”虚拟机的方式不同,“类型二”虚拟机监控程序,在系统上电之后仍然运行一般意义上的操作系统(也就是俗称的宿主机操作系统),虚拟机监控程序作为特殊的应用程序,可以视作操作系统功能的扩展。对于“类型二”的虚拟机来说,其最大的优势在于可以充分利用现有的操作系统。因为虚拟机监控程序通常不必自己实现物理资源的管理和调度算法,所以实现起来比较简洁。但是,正所谓“成也萧何,败也萧何”,这一类型的虚拟机监控程序既然依赖操作系统来实现管理和调度,就同样也会受到宿主操作系统的一些限制。例如,通常无法仅仅为了虚拟机的优化,而对操作系统作出修改。本书的主角KVM就是属于“类型二”虚拟机,另外,VMware Workstation、VirtualBox也是属于“类型二”虚拟机。
代码语言:javascript复制KVM的组件:
KVM:运行在内核空间,提供CPU和内存的虚拟化,以及客户机的I/O拦截,Guest的部分I/O被KVM拦截后,交给QEMU处理。
两类组件:
kvm.ko /dev/kvm:工作为hypervisor,在用户空间可通过系统调用ioctl()与内核中的kvm交互,从而完成虚拟机的创建,启动,停止,删除等各种管理功能,可虚拟CPU和内存
qemu-kvm工作于用户空间用于实现IO设备模拟,也用于实现一个虚拟机实例
代码语言:javascript复制QEMU是什么?
QEMU本身并不是KVM的一部分,其自身就是一个著名的开源虚拟机软件。与KVM不同,QEMU虚拟机是一个纯软件的实现,所以性能低下。但是,其优点是在支持QEMU本身编译运行的平台上就可以实现虚拟机的功能,甚至虚拟机可以与宿主机并不是同一个架构。作为一个存在已久的虚拟机,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化,以及KVM使用到的虚拟设备模拟(比如网卡、显卡、存储控制器和硬盘等)。
为了简化开发和代码重用,KVM 在 QEMU的基础上进行了修改。虚拟机运行期间,QEMU会通过KVM模块提供的系统调用进人内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM模块会从上次的系统调用出口处返回QEMU,由QEMU来负责解析和模拟这些设备。
从QEMU角度来看,也可以说QEMU使用了KVM模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大地提高了虚拟机的性能。除此之外,虚拟机的配置和创建,虚拟机运行依赖的虚拟设备,虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(诸如动态迁移),都是由QEMU自己实现的。
代码语言:javascript复制1.安装KVM环境
1.KVM需要宿主机CPU必须支持虚拟化功能,因此如果在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟化功能。
2.验证服务器是否支持虚拟化
# grep -Em1 "vmx|svm" /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc extd_apicid pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw topoext ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero arat npt svm_lock nrip_save vmcb_clean flushbyasid decodeassists rdpid overflow_recov succor
3.安装KVM相关的安装包
建议安装 yum install qemu-kvm libvirt virt-manager virt-install
4.安装成功,启动KVM