大型网站技术学习-1. 虚拟化技术概述

news/2024/5/21 1:02:27/文章来源:https://blog.csdn.net/weixin_33962923/article/details/93349708

牛人就不要看了~    

1.1        引言


先举个例子,一台物理主机有16G内存,用户A的程序只需要2G内存,用户B的程序只需要4G内存,如果没有用虚拟化技术,他们的解决方案如下:

  1. 两用户程序放到同一台物理机器上,各自配置运行环境。资源都能满足了。问题是,程序的运行环境一个是Linux,一个是windows呢?如何防止用户A的程序不会窃取用户B数据呢?
  2. 再买一台2G的物理主机,这样就解决了上面两个问题,呵呵。问题是,好浪费啊!如果再有个需要1G内存的用户来了,就买个1G的物理主机?如果老板有的是钱,没问题~

有个更加省钱的方法:采用虚拟化的技术,在那台物理主机上生成两个操作系统出来,一个4G内存,一个2G内存,操作系统的类型任选,虚拟化能够提供资源隔离的功能。这样就完美解决了上述的问题。对普通人来讲,可能VMware虚拟计算机是最了解的吧。

1.2   虚拟化是什么?

虚拟化是云计算技术的基础。

百度百科上说:是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

 

维基百科上说:In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, operating systems, storage devices, and computer network resources.

因为虚拟化本质不是对硬件的改变,而是用软件的方法抽象,虚拟出的IT资源与底层硬件相隔离,所以虚拟化技术能够实现IT资源的自动化分配、调度、共享、迁移、监控。这种特性对于大型网站运维来说非常有用,谁不想啥事都是自动化的?人总是比较容易马虎出错。另外,有些业务是IO密集型,有些业务是计算密集型,需求各有不同,虚拟化可以让IT资源按需分配。虚拟IT资源与硬件无关,所以当需要更多的资源的时候,只需要增加一些物理计算机即可,小型机与普通机器可以混合使用。

服务器虚拟化主要有以下四方面的功能:

  lip_image001[4]

1.3     虚拟化的好处



lip_image002[4]

效率:将原本一台服务器的资源分配给了数台虚拟化的服务器,有效的利用了闲置资源,确保企业应用程序发挥出最高的可用性和性能。

隔离:虽然虚拟机可以共享一台计算机的物理资源,但它们彼此之间仍然是完全隔离的,就像它们是不同的物理计算机一样。因此,在可用性和安全性方面,虚拟环境中运行的应用程序之所以远优于在传统的非虚拟化系统中运行的应用程序,隔离就是一个重要的原因。

可靠:虚拟服务器是独立于硬件进行工作的,通过改进灾难恢复解决方案提高了业务连续性,当一台服务器出现故障时可在最短时间内恢复且不影响整个集群的运作,在整个数据中心实现高可用性。

成本:降低了部署成本,只需要更少的服务器就可以实现需要更多服务器才能做到的事情,也间接降低了安全等其他方面的成本。

兼容:所有的虚拟服务器都与正常的x86系统相兼容,他改进了桌面管理的方式,可部署多套不同的系统,将因兼容性造成问题的可能性降至最低。

便于管理:,提高了服务器/管理员比率,一个管理员可以轻松的管理比以前更多的服务器而不会造成更大的负担。

通过实现 IT 基础架构的虚拟化,可以降低 IT 成本,同时提高现有资产的效率、利用率和灵活性。在全世界,各种规模的公司都享受着服务器的虚拟化带来的好处。数千家组织都在采用服务器虚拟化解决方案。

1.4   虚拟化程度分类


网上盗个图

lip_image003[4]

1.4.1        全虚拟化(Full Virtulization


简介:全虚拟化中,VMM以纯软件的形式翻译执行虚拟机执行的指令,该过程不需要Guest OS感知,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有VirtualBoxKVMVMware WorkstationVMware ESX(它在其4.0版,被改名为VMware vSphere),Xen(也支持全虚拟化)

优点:Guest OS无需修改,速度和功能都非常不错,使用非常简单。

缺点:基于Hosted模式的全虚拟产品性能方面不是特别优异,特别是I/O方面。

1.4.2        半虚拟化或者叫准虚拟化(Para-virtualization


它与完全虚拟化有一些类似,它也利用Hypervisor来实现对底层硬件的共享访问,但是由于在Hypervisor 上面运行的Guest OS已经集成与半虚拟化有关的代码,使得Guest OS能够非常好地配合Hypervisor来实现虚拟化。通过这种方法将无需重新编译或捕获特权指令,其最经典的产品就是Xen,而且因为微软的Hyper-V所采用技术和Xen类似,所以也可以把Hyper-V归属于半虚拟化。

这种虚拟技术以Xen为代表,其特点是修改操作系统的内核,加入一个Xen Hypervisor层。它允许安装在同一硬件设备上的多个系统可以同时启动,由Xen Hypervisor来进行资源调配。在这种虚拟环境下,依然需要模拟硬件设备,安装Guest操作系统,并且还需要修改操作系统的内核。Xen相对于传统的Virtual MachineMonitor,性能稍有提高,但并不十分显著。为了进一步提高性能,IntelAMD分别开发了VTPacifica虚拟技术,将虚拟指令加入到了 CPU中。使用了CPU支持的硬件虚拟技术,将不再需要修改操作系统内核,而是由CPU指令集进行相应的转换操作。

优点:这种模式和全虚拟化相比,架构更精简,而且在整体速度上有一定的优势。

缺点:需要对Guest OS进行修改,所以在用户体验方面比较麻烦。

在完全虚拟化模式中,hypervisor必须模拟设备硬件,它是在会话的最低级别进行模拟的(例如:网络驱动程序,磁盘,显卡等等).尽管在该抽象中模拟很干净,但它同时也是最低效,最复杂的.在半虚拟化中,来宾操作系统和hypervisor能够共同合作,让模拟更加高效.缺点是操作系统知道它被虚拟化,并且需要修改才能工作.

1.4.3        硬件辅助虚拟化(Hardware Assisted Virtualization

Intel/AMD等硬件厂商通过对部分全虚拟化和半虚拟化使用到的软件技术进行硬件化(具体将在下文详述)来提高性能。硬件辅助虚拟化技术常用于优化全虚拟化和半虚拟化产品,而不是独创一派,最出名的例子莫过于VMware Workstation,它虽然属于全虚拟化,但是在它的6.0版本中引入了硬件辅助虚拟化技术,比如IntelVT-xAMDAMD-V。现在市面上的主流全虚拟化和半虚拟化产品都支持硬件辅助虚拟化,包括VirtualBoxKVMVMware ESXXen

优点:通过引入硬件技术,将使虚拟化技术更接近物理机的速度。

1.4.4        操作系统级虚拟化(Operating System Level Virtualization

这种技术通过对服务器操作系统进行简单地隔离来实现虚拟化,主要用于VPS,以SWsoftVirtuozzo/OpenVZSun基于Solaris平台的Container技术为代表,其中Virtuozzo是商业解决方案,而OpenVZ是以Virtuozzo为基础的开源项目。他们的特点是一个单一的节点运行着唯一的操作系统实例。通过在这个系统上加装虚拟化平台,可以将系统划分成多个独立隔离的容器,每个容器是一个虚拟的操作系统,被称为虚拟环境(即VEVirtualEnvironment),也被称为虚拟专用服务器(即VPSVirtual Private Server)。如下图所示:

 

ip_image004[3]

 

在操作系统虚拟化技术中,每个节点上只有唯一的系统内核,不虚拟任何硬件设备。此外,多个虚拟环境以模板的方式共享一个文件系统,性能得以大幅度提升。在生产环境中,一台服务器可根据环境需要,运行一个VE/VPS,或者运行上百个VE/VPS。所以,操作系统虚拟化技术是面向生产环境、商业运行环境的技术。

优点:因为它是对操作系统进行直接的修改,所以实现成本低而且性能不错。

缺点:在资源隔离方面表现不佳,而且对Guest OS的型号和版本有限定。

1.4.5        硬件分区技术

硬件分区技术如下图所示:硬件资源被划分成数个分区,每个分区享有独立的CPU、内存,并安装独立的操作系统。在一台服务器上,存在有多个系统实例,同时启动了多个操作系统。这种分区方法的主要缺点是缺乏很好的灵活性,不能对资源做出有效调配。随着技术的进步,现在对于资源划分的颗粒已经远远提升,例如在 IBM AIX系统上,对CPU资源的划分颗粒可以达到0.1CPU。这种分区方式,在目前的金融领域,比如在银行信息中心得到了广泛采用。

但是这种方式对互联网来说,成本高,不易统一管理。

 

ip_image005[3]

1.4.6        容器虚拟化Docker

Docker技术主要利用了Linux下的LXC技术来实现的,LXC主要是利用Linux的内核特性:命名空间和cgroups子系统。LXC在资源管理方面依赖与Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。LXC在隔离控制方面依赖于Linux内核的namespace特性,namespace感觉像C++的namespace,就是在内核中可以拥有不同namespace的相同的进程id,联想下C++,C++里面不同namespace下的名字可以一样。Docker相比与上面的那些虚拟化的主要区别在于Docker提供的是运行环境,上面的那些提供的是操作系统,所以Docker适用于Paas而上面的适合Iaas。效率上,Docker比操作系统虚拟化要快。部署上,Docker可以快速部署。

1.5   Hypervisor位置

Hypervisor安装在宿主操作系统上,Hypervisor安装在宿主操作系统上,通过宿主操作系统使用硬件,如VirtualBoxVMWare Workstation等。在Host系统上,加装了Virtual MachineMonitor,虚拟层作为应用级别的软件而存在,不涉及操作系统内核。虚拟层会给每个虚拟机模拟一套独立的硬件设备,包含CPU、内存、主板、显卡、网卡等硬件资源,在其上安装所谓的Guest操作系统。最终用户的应用程序,运行在Guest操作系统中。如下图所示。

 

ip_image006[3]

这种虚拟机运行的方式有一定的优点,比如能在一个节点上安装多个不同类型的操作系统;但缺点也非常明显,虚拟硬件设备要消耗资源,大量代码需要被翻译执行,造成了性能的损耗,使其更合适用于实验室等特殊环境。

 

安装在硬件层上:由Hypervisor直接管理硬件,如VMWare ESX、微软、KVMXEN

lip_image007[4]

安装在内核上:Hypervisor安装在宿主操作系统内核上,客户操作系统调用宿主操作系统内核。

lip_image008[4]

 

1.6   虚拟机架构

目前分为两种,寄居架构(Hosted Architecture裸金属架构 (“Bare Metal” Architecture),如图所示。

寄居架构就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理;

裸金属架构就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。


 

优点

缺点

举例

寄居架构

简单,便于实现

安装和运行应用程序依赖于主机操作系统对设备的支持,性能有损耗。

GSX Server, VMware Server, Workstation,KVM(linux内核)

裸金属架构

虚拟机不依赖于操作系统,可以支持多种操作系统,多种应用,更加灵活

虚拟层内核开发难度较大

VMWare ESX Server,Xen,KVM

 

ip_image009[3]

                                    裸金属架构

ip_image010[3]

                                     寄居架构

 

 

1.7   KVM

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

虚拟化性能在很多方面可以达到非虚拟化原声环境的95%以上的性能。RHEL 6.X系统中的一个KVM支持160个虚拟核心和2T的内存,宿主机可以支持4096个CPU核心和多大64T内存。

KVM主要有两个组成部分:KVM模块和QEMU。

Kvm仅仅是一个linux内核的模块,当在linux中安装了kvm后,linux会变成了hypervisor,即VMM,进行CPU和内存的虚拟管理,主要功能是初始化CPU硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持,为了软件的简介和性能,KVM仅支持硬件虚拟化。

 

而运行在用户空间的QEMU工具,实现虚拟机的创建管理,monitor管理各个IO设备。QEMu本身并不是KVM的一部分,自身就是一个著名的虚拟机软件,与KVM不同,QEMU是纯软件的实现,性能低下,QEMU的代码中有整套的虚拟机实现,包括处理器虚拟化、内存虚拟化、设备虚拟化,KVM对QEMU进行了修改,QEMU会通过KVM系统调用进入内核,由KVM模块负责将虚拟机置于处理器的特殊模式运行。从QEMU的角度看,QEMU使用了KVM模块的虚拟化功能,为自己提供硬件虚拟化的加速,极大的提高了虚拟机的性能。除此之外,一系列虚拟机的技术都是由QEMU自己实现的。

lip_image012[4]

1.8   XEN

XEN是一个开放的源代码虚拟机软件,有剑桥大学研发。Xen主要支持半虚拟化(Para-virtualization)和全虚拟化(Full-virtualization)。半虚拟化主要是透过修改 Linux 核心来达成的虚拟技术.

Xen 的半虚拟化技术主要是用在相同版本的 Linux 上面,也就是说,如果你想要使用半虚拟化的方式启动多个虚拟机器, 那么那些虚拟机器全部都必须是相同的系统,甚至要求相同版本与相同核心的 Linux distribution 。

如果你想要安装不同版本的 Linux 或者是其他的 OS (例如 Windows XP) 时,就得要使用全虚拟化技术了。 但是全虚拟化技术是有其限制的,当硬体满足下列需求之一时,全虚拟化技术才能够动作:

    你的硬体支援 Intel 的 VT 技术 (Virtualization Technology, Intel-VT);

    你的硬体支援 AMD 的 SVM 技术 (Secure Virtual Machine, AMD-SVM or, AMD-V)。


既然我有多个虚拟机器,每个虚拟机器都有自己的任务队列, 也就是有多个任务队列同时存在。如果所有的作业系统都能够完整的控制硬体的话, 那麽硬体到底该接受谁的指令来运作?那个系统的指令会先被执行?这是很重要的问题, 因为如果这边搞不定,那么只能呵呵呵了。

为了解决这个问题,Xen用了以下架构。

ip_image014[3]

Xen架构分为两层,底层为Xen Hypervisor,又称虚拟机监控程序(Virtual Machien Monitor简称VMM),VMM工作原有linux系统内核位置,替代了linux系统内核,用于虚拟CPUMemeory等;高层为Xen虚拟机,Xen的虚拟机称为Domain,为了辅助Xen管理Domain, Xen存在一个特权Domain叫Dom0(Domain 0,Xend是其中的一个重要进程).他拥有真实的设备驱动,能够直接访问物理硬件,可以通过一些管理工具管理Xen的虚拟机们,他还能为其他Domain提供一些虚拟资源服务,特别是其他Domain对I/O的访问。普通Domain叫做DomU(Domain U). 半虚拟化中Domain的内核都经过了修改。

XEN虚拟化分类

(1)完全虚拟化:DomU中的各个硬件都是由VMMDom0虚拟和模拟实现;
(2)半虚拟化: DomU中的CPUMemoryVMM模拟实现,IO等设备分为前端(Front)和后端(Back),前端工作在DomU中,而后端工作在Dom0
中;
ip_image013[3]
DomU
中的网卡eth0Dom0中的viif#中的设备对应,不再由Dom0模拟,这大大提升了IO性能

 

持续更新~

转载注明出处:http://www.cnblogs.com/stonehat/p/5117217.html

 

转载于:https://www.cnblogs.com/stonehat/p/5117217.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_752991.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nodejs学习笔记(六)--- Node.js + Express 构建网站预备知识

目录 前言新建express项目并自定义路由规则如何提取页面中的公共部分?如何提交表单并接收参数? GET 方式POST 方式如何字符串加密?如何使用session?如何使用cookies?如何清除session和cookies?写在之后前言 前面经过五篇Node.js的学习,基本可以开始动手构建一…

在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况...

自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化;自从SharePoint 2010开始有了Client Side Object Model ,我们就可以不用在服务器上开发SharePoint解决方…

万网免费主机wordpress快速建站教程-域名申请

在上一篇文章中,小伙伴们已经申请好了万网的免费主机,接下来教大家如何申请域名。 由于万网免费主机要绑定在阿里备案的域名,现在以万网的域名注册为例子。 首先进入万网域名注册页面(http://www.net.cn/domain)&#…

网站统计中的数据收集原理及实现_埋点统计

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascript的。本文将简要分析这种数据收集的原理&#xf…

一个普通网站发展成大型网站的架构演变历程

2019独角兽企业重金招聘Python工程师标准>>> 1、物理分离webserver和数据库 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程&#xff0…

IT招聘网站

2019独角兽企业重金招聘Python工程师标准>>> http://www.ithelloworld.com/ 转载于:https://my.oschina.net/lilugirl2005/blog/359953

20款覆盖全面的响应式网站设计工具

2019独角兽企业重金招聘Python工程师标准>>> 灵活的栅格和布局,响应式的图片和智能的CSS媒体查询,构成了响应式网页的主要特征。当用户扔下沉重的笔记本电脑拿起平板,响应式的网站能够自然而然地随之适配,掏出手机也毫…

微软正式发布Azure Storage上的静态网站

微软正式宣布了Azure Storage上的静态网站,提供了从托管在Azure Storage上的HTML、CSS和JavaScript文件提供内容的能力。静态网站包含内容固定的Web页面,同时仍然允许利用JavaScript等客户端代码来创建丰富的用户体验。 有了这个新功能,继用于…

flac转mp3_免费的音视频格式转换网站-ncm, qmc, mflac, mgg转mp3

1、.mov转换为.mp4.mov是QuickTime影片格式,是Apple公司开发的一种音频、视频文件格式。我们只需要iMovie打开相关文件,然后重新导出即可,iMovie默认导出的视频格式就是.mp42、.mp4转换为.gifMP4轉GIF轉換器。在线自由 - Convertio​converti…

对某网站被挂黑广告源头分析

公粽号:黒掌 一个专注于分享网络安全、黑客圈热点、黑客工具技术区博主! 背景 目标站点是国内一家有影响力的综合技术网站。通过网管人员及技术人员多次排查均告失败或者未能解决问题。 网站不断被人疑似挂马,在其所有网站上发现挂有图片的…

Wordpress 网站搭建及性能监控方法详解!

前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统。并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站、企业网站、电影网站,甚至是商城系…

程序员资源网站

2019独角兽企业重金招聘Python工程师标准>>> soho接单 程序员客栈 http://www.proginn.com/ 极客邦soho http://www.looip.cn/ 好用的markup博客 droplets http://dropplets.com/ 招聘网站 电猴 (针对电商) http://www.dianhou.com/…

宠物合成网站源码_如何阅读大型前端开源项目的源码,授人以鱼不如授人以渔...

目前网上有很多「XX源码分析」这样的文章,不过这些文章分析源码的范围有限,有时候讲的内容不是读者最关心的。同时我也注意到,源码是在不断更新的,文章里写的源码往往已经过时了。因为这些问题,很多同学都喜欢自己看源…

网站技术架构与性能优化,附高性能思维导图

一).大型软件系统的特点1.高并发2.高可用3.海量数据4.用户分布广泛,网络情况复杂5.安全环境恶劣6.需求快速变更,发布频繁二).大型网站架构发展历程1.应用服务和数据服务分离2.大量使用缓存改善网站性能(CDN加速、反向代理)3.使用服…

杂志类网站参考

2019独角兽企业重金招聘Python工程师标准>>> 爱范儿 http://www.ifanr.com/ Ghost http://marketplace.ghost.org/Medium https://medium.com/ 转载于:https://my.oschina.net/lilugirl2005/blog/593673

php 新浪微博登陆,PHP使用新浪微博登入第三方网站实例代码

之前我写过一个使用php使用QQ一键登入第三方网站的教程,今天我再给大家分享PHP使用新浪微博API一键登入第三方的网站,好吧,不说废话,下面开始。注册登入新浪微博以后,可以点在新浪微博底部的开放平台链接进入&#xff…

这些优化 Drupal 网站速度的超简单办法,你忽略了多少?

“怎么样能让我的 Drupal 网站更快一些?”是我们最常遇到的一个问题。站点速度确实非常重要,因为它会影响你的 SEO排名效果、访客是否停留以及你自己管理网站所需要的时间。今天我们就来看看那些通过 Drupal 自带界面便能够实现的提速操作。启用缓存通过…

发布网站的程序池应用程序_大程序? 经常发布

发布网站的程序池应用程序我正在研究“ 敏捷和精益计划管理:整个组织的协作”的发行计划一章。 有许多计划发布的方法。 但是关键呢? 经常释放。 多常? 我建议每月一次。 是的,每月一次真正,诚实到善的发布。 我敢打…

【网站搭建】用阿里云服务器搭建个人网站

文章目录搭建过程如下:1 准备工具:2 详细过程(1)进入控制台(2)进入轻量应用服务器管理台(3)远程连接(4)下载宝塔面板(5)添加网站&…

【网站搭建】完整部署django+uwsgi+nginx

上次记录了云服务器上运行django的过程,成功打开HelloWorld界面,但是这样每次运行都需要使用python3 manage.py runserver命令,不能在后台运行,而且加载页面速度较慢。因此本次记录新增两个服务的部署,即nginx uwsgi。…