热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Linux虚拟化的危险、陷阱和规划

文章标题:Linux虚拟化的危险、陷阱和规划。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  原文:linuxuniversity.net/articles/33812.shtml" target=_blank>Today's Guide to Linux Virtualization   作者:Joe 'Zonker' Brockmeier

  Linux虚拟化并不是什么新鲜事物,至今大约已经有10个年头了,单从技术上讲,它确实取得了显着的进步,但这并不意味着它就变简单了(51CTO相关文章:Linux虚拟化:我爱你的十大诱人理由)。恰恰相反,现在到处都充斥着令人眼花缭乱的虚拟化解决方案,都声称可以管好工作负载和存储,减少复杂性,降低成本和能源消耗,但都没有回答是否应该部署虚拟化的问题,今天,我们面临的真正问题是什么样的虚拟化解决方案适合虚拟化什么样的工作负载。

  另外,虚拟化也不是万能的,有些工作负载只有直接在物理服务器上运行才能获得最佳效果。不过话说回来,服务器虚拟化确实有相当多的优点。我们将用4篇文章对Linux虚拟化进行详细阐述,本文先概述一下Linux虚拟化解决方案,未来几周内,你将看到有关标准虚拟化战略,虚拟设备,云计算等更多细节信息。

  虚拟化为我们带来了什么?

  首先,我要告诉你的是虚拟化解决方案现在的销售情况还不错,通过虚拟化提高了服务器利用率,降低了能源成本,通过最大化每个服务器承担的工作负载,提高了资源的利用率。以前,运行在商用x86服务器上的Linux往往只使用了一小部分服务器计算能力,大量的计算能力都处于闲置状态。通过使用虚拟化,你可以确保硬件承载的工作量适当,既不超负荷,又不空转,同时通过将多个物理服务器上的应用整合到一个服务器还可以节省电力成本。(请参考51CTO相关文章:虚拟化技术在高性能计算机系统中的应用研究)

  如果你选择了合适的工具,并制定好管理方案,虚拟化还可以减少复杂性,提供更方便的系统管理。优秀的虚拟化管理工具可以从一个GUI控制台管理数十甚至数百个虚拟机,其复杂性不会超过管理一台物理服务器。例如,使用ParallelsVirtuozzo容器,只需要点击几下鼠标,配置和部署一个标准操作系统模板就可以让虚拟机上线了,使用SUSEStudio,你可以在几分钟内快速搭建起一个VMware或Xen虚拟化服务器,开源虚拟机Xen 4.0发布,增强了容错性和可伸缩性。

  虚拟化也带来了更大的灵活性,例如,当工作负载超出其资源承受极限时,通过虚拟化可以将更多的资源分配给同一台服务器,也可以将虚拟机(VM)移动到容量更大的服务器。如果你在使用基于云的解决方案,天空就是工作负载灵活性的限制。

  注意,我们要谈的是服务器虚拟化,不会过多涉及桌面级虚拟化解决方案,因此包括VirtualBox,VMwareWorkstation和ParallelsDesktop等在内的桌面级虚拟化工具,还请大家自行研究,但我们强烈建议不要在关键业务上使用这些桌面级虚拟化解决方案。(51CTO相关文章:如何面对服务器虚拟化——中小企业篇)

  Linux服务器虚拟化解决方案为各种规模的组织提供了大量的选择,无论你是想整合服务器,还是想给Web 2.0初创公司提供一个解决方案,Linux应该是虚拟化规划的核心,但问题是它适合哪些项目,应该选择哪个厂商的解决方案。

  虚拟化的前景

  虚拟化涉及的技术领域广泛,最初,谈及Linux虚拟化时,往往指的是完全虚拟化,即主机操作系统运行了多个客户机操作系统,好像它们都运行在自己的硬件上一样,也许是Linux,也许是其它操作系统。现在,人们谈论虚拟化时可能指的是操作系统虚拟化,存储虚拟化或虚拟设备。

  对于操作系统虚拟化,你会发现有很多成熟的Linux虚拟化解决方案,首先你要决定是使用完全虚拟化还是基于容器的虚拟化,抑或是想要基于云的计算。这里所说的完全虚拟化,我指的是在一个系统管理程序(Hypervisor)上运行一或多个操作系统的解决方案,如Xen,Parallels的Bare Metal,VMware ESXi和Linux自带的KVM(Kernel-based VirtualMachine,基于内核的虚拟机)。

  完全虚拟化在今天被广泛使用,但基于容器的虚拟化对某些工作负载来说也是一个很好的解决方案,基于容器的虚拟化一般不会运行多个操作系统,它是在它自己的用户空间中容纳客户机操作系统,而不是运行在一个单独的操作系统内核上,基于容器的虚拟化更坚固,因为不需要处理硬件仿真,它需要的系统开销更少。基于容器的虚拟化的缺点是不允许在同一个硬件平台上运行多个操作系统,想在一台服务器上使用基于容器的虚拟化解决方案运行6个Linux实例?没问题,但如果想和Microsoft Server一起运行几个Linux客户机?使用基于容器的虚拟化解决方案就不行了。

  对于基于容器的虚拟化解决方案,你可以研究一下Parallels Virtuozzo容器,或是开源但功能更少的OpenVZ,如果你使用的是FreeBSD,你可以尝试一下jails,如果你使用的是Solaris/OpenSolaris,那么可以试试Zones。

  完全虚拟化和基于容器的虚拟化之间有什么实质性区别呢?使用完全虚拟化解决方案,你可以使用大部分操作系统,也可以混合使用,例如,一个小型组织可能在一台服务器上使用完全虚拟化工具,如Xen、Parallels、KVM、VMware,或微软的Hyper-V,同时运行WindowsServer 2008和SUSE Linux Enterprise Server 10以整合它们的工作负载。

  但在托管环境中,你需要在一台物理服务器上运行几十个Linux虚拟专用服务器,类似OpenVZ或Virtuozzo可能是最好的选择。

  虽然KVM已经非常成熟,但它仍然不被认为是与Xen,VMware或Parallels解决方案在同一个层次上,KVM状态页列出了已经完成的工作和正在进行的工作,从长远来看,KVM完全可以达到专业解决方案同等水平,值得一提的是KVM现在已经进入到Linux内核主干,引起了内核社区的极大关注。

  危险,陷阱和规划

  虚拟化不是解决你所有计算问题的万能方案,事实上,如果你选择了错误的或不当的虚拟化解决方案,让你头疼的问题可能更多。为了避免增加你的工作量,对方案进行评估很重要,因为至少未来5年你都得与它们打交道。

  首先,确保你的组织准备好迎接虚拟化带来的挑战,例如,当两个部门共享物理硬件运行虚拟机时,谁承担多少虚拟化成本,谁可以控制底层硬件,需要调整虚拟机资源分配时该谁负责,如何协调部门间的资源争夺,这些问题都需要好好思考和规划,否则只会出现混乱的局面。

  如果部门自己有IT人员,那么谁有权部署和管理虚拟机?他的管理范围有多大?这些都不属于技术问题,但这些问题必须在内存不够用,存储不够用等问题出现之前先得到解决和明确。

  你还需要防止虚拟机滥用,在未好好规划之前,不应该一时冲动就部署虚拟机,管理虚拟机应该象管理物理服务器一样,应当有计划地规划和部署。

  另一个需要考虑的是虚拟化工作负载的类型,底层硬件以及虚拟化解决方案的限制,虽然许多工作负载都适合虚拟化,但不是所有的都适合,例如,你要确保为资源密集型应用提供强大的硬件支撑,如果不行,不如让它们直接运行在物理硬件平台之上。

  还有一个经常被忽略的问题也很重要,那就是培训,虽然现在的虚拟化工具对系统管理员来说不是很大的挑战,但也不是每个人都已经熟练掌握,如果你的组织计划用新的工具集实施虚拟化,培训应该是实施过程和预算的一部分。

  通过本文我们只看到了虚拟化很片面的一部分内容,接下来几篇文章我们51CTO将介绍虚拟化在企业中的最佳战略实践,并会对完全虚拟化和基于容器的虚拟化之间的区别进行深入讨论,还会就云计算对你的组织有何意义进行讨论,请继续关注。


推荐阅读
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
手机用户2602914827
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有