精华内容
下载资源
问答
  • 云原生被喻为未来架构,在CNCF (云原生计算基金会)的推动下,以Kubernetes 为代表容器工具得到了迅速的发展,很多人都相信容器才是云计算的未来。那曾经奠基云计算平台的虚拟化技术是否就真的会成为过去时?  ...

      近日CNCF 会在华首秀,吸引国内无数的云原生技术粉的会聚一堂。云原生被喻为未来架构,在CNCF (云原生计算基金会)的推动下,以Kubernetes 为代表容器工具得到了迅速的发展,很多人都相信容器才是云计算的未来。那曾经奠基云计算平台的虚拟化技术是否就真的会成为过去时?

      容器与虚拟机谁会是未来云计算的方向?在分析这个问题之前我们可以先从思想层面上来重解什么是云原生;有人坚信云原生(Cloud Native)是一种文化,更是一种潮流,它是云计算的一个必然导向,是让云成为云化战略成功的基石。

      原生的对立面当然是非原生(虚拟化),即使是在CPU 和操作系统内核支持的情况下虚拟机上的操作系统及业务系统所使用硬件资源仍然不直接寻址的。一个基于虚拟机运行的业务系统与原生操作系统中间隔着一个虚拟系统,有如人与人之间隔阂,不仅会损失硬件性能还会让多可以直接寻址的接口操作都需要驱动级的映射才能完成,兼容性的问题有时也困扰运维人员。而容器技术越发成熟之后各个沙盒间的相互独立互不影响,却能直接使用原生系统的资源。硬件资源的利用率更高。而且容器的创建与维护比虚拟机更简单,一个业务系统在虚拟机上交付,需要有足够的资源来创建虚拟机,然后为虚拟机安装操作系统、部署业务系统所需的各种支持环境。如果多个业务系统所需要支持环境依赖库间有冲突互斥你则需要新建更多的虚拟机。反之对于容器而言只需要再开一个镜像即可。

      云原生更节省物理服务器的硬件资源;更易于业务系统的快速交付。是微服务架构、无服务器架构的时代这项技术更为云平台服务提供了基础支撑,在虚拟化时代一个开发人员为了发布自己的应用,需要去租用一个云主机或VPS ,自由的按需配置管理云主机的操作系统与支持环境配置及参数,然后发布自己业务和WEB应用。在采用无服务架构在模式下,你可能根本不需要一台服务器,更不用去关于如何去配置服务器,需要只是服务本身,云端的容器中的WEB 服务或数据库服务会提供接口给开发者,开发者只用关心程序的实现,不用折腾服务器与环境的配置。

      上述说了这么多云原生,那虚拟机真的就无用了吗?当然不是虚拟机至今仍然有着不可取代的独立性。目前公有云Docker 仓库中的应用毕竟是有限的,特别是我们是租客身份时版本、参数、配置的可选择性也只能在可选的套餐之中。但是云主机(虚拟机)则不同, 你得到是一台无异于真机的计算机,你可以对系统做任意的配置设置、安装自己所需要应用软件配置自己源,不用束缚于仓库。在虚拟机算力允许的情况下,你可以在租用云主机上安装Kubernetes 来编排容器,最大化的发挥虚拟机的价值,而只需要支付这一台云主机的租金。

      因此,在未来很多时间内虚拟机仍然会是云计算交付方式不可缺少的基础,或者说容器与虚拟机从来也不矛盾。毕竟虚拟机之上难以再开虚拟机,但是虚拟机运行容器却是一种非常低成本高效率的混合交付模式。

    展开全文
  • 第一章主要介绍了java技术体系过去、现在和未来的一些发展趋势,并介绍了如何独立地编译OpenJDK 7. 1.2 Java 技术体系 Sun官方所定义java技术体系包括以下几个组成部分:  Java程序设计语言  各种硬件平台...

      第一章主要介绍了java技术体系的过去、现在和未来的一些发展趋势,并介绍了如何独立地编译OpenJDK 7.

    1.2 Java 技术体系

    Sun官方所定义的java技术体系包括以下几个组成部分:

            Java程序设计语言

            各种硬件平台上的java虚拟机

            Class文件格式

            Java API类库

            来自商业机构和开源社区的第三方Java类库

    Java程序设计语言、Java虚拟机、Java API类库三部分统称为 JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。

    Java API 类库中的Java SE API 子集和Java虚拟机这两部分统称为JRE(Java Runtime Environment),JRE是支持Java程序运行的标准环境。

    按照Java技术关注的重点业务领域来划分,Java技术体系可以分为4个平台,分别为:

            Java Card:支持一些Java小程序(Applets)运行在小内存设备(如智能卡)上的平台。

            Java ME(Micro Edition):支持Java程序运行在移动终端(手机、PDA)上的平台,对Java API有所精简,并加入了针对移动终端的支持,这个版本以前称为J2ME。

             Java SE(Standard Edition): 支持面向桌面级应用(如Windows下的应用程序)的Java平台,提供了完整的Java核心API,这个版本以前称为J2SE。

              Java EE(Enterprise Edition): 支持使用多层架构的企业应用(如ERP、CRM应用)的Java平台,除了提供Java SE API外,还对其做了大量的扩充并提供了相关的部署支持,这个版本以前称为J2EE。


    Java的发展历史,为什么叫咖啡

      Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目。SUN公司的一个叫做帕特里克·诺顿的工程师被自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用。帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会。
      “Stealth 计划”后来改名为“Green计划”,JGosling(詹姆斯·高斯林)和麦克·舍林丹也加入了帕特里克的工作小组。他们和其他几个工程师一起在加利福尼亚州门罗帕克市沙丘路的一个小工作室里面研究开发新技术,瞄准下一代智能家电(如微波炉)的程序设计,SUN公司预料未来科技将在家用电器领域大显身手。团队最初考虑使用C 语言,但是很多成员包括SUN的首席科学家比尔·乔伊,发现C 和可用的API在某些方面存在很大问题。
      工作小组使用的是内嵌类型平台,可以用的资源极其有限。很多成员发现C 太复杂以至很多开发者经常错误使用。他们发现C 缺少垃圾回收系统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想要一种易于移植到各种设备上的平台。
      根据可用的资金,比尔·乔伊决定开发一种集C语言和Mesa语言搭成的新语言,在一份报告上,乔伊把它叫做“未来”,他提议SUN公司的工程师应该在C 的基础上,开发一种面向对象的环境。最初,高斯林试图修改和扩展C 的功能,他自己称这种新语言为C –,但是后来他放弃了。他将要创造出一种全新的语言,被他命名为“Oak”(橡树),以他的办公室外的树而命名。
    就像很多开发新技术的秘密的工程一样,工作小组没日没夜地工作到了1992年的夏天,他们能够演示新平台的一部分了,包括Green操作系统,Oak的程序设计语言,类库,和其硬件。最初的尝试是面向一种类PDA设备,被命名为Star7,这种设备有鲜艳的图形界面和被称为“Duke”的智能代理来帮助用户。1992年12月3日,这台设备进行了展示。
      同年11月,Green计划被转化成了“FirstPerson有限公司”,一个SUN公司的全资子公司,团队也被重新安排到了帕洛阿尔托。FirstPerson团队对建造一种高度互动的设备感兴趣,当时代华纳发布了一个关于电视机顶盒的征求提议书时(Request for proposal),FirstPerson改变了他们的目标,作为对征求意见书的响应,提出了一个机顶盒平台的提议。但是有线电视业界觉得FirstPerson的平台给予用户过多地控制权,因此FirstPerson的投标败给了SGI。与3DO公司的另外一笔关于机顶盒的交易也没有成功,由于他们的平台不能在电视工业产生任何效益,公司再并回SUN公司。
      JAVA应用1994年6、7月间,在经历了一场历时三天的头脑风暴的讨论之后,约翰·盖吉、詹姆斯·高斯林、比尔·乔伊、帕特里克·诺顿、韦恩·罗斯因和埃里克·斯库米,团队决定再一次改变了努力的目标,这次他们决定将该技术应用于万维网。他们认为随着Mosaic浏览器的到来,因特网正在向同样的高度互动的远景演变,而这一远景正是他们在有线电视网中看到的。作为原型,帕特里克·诺顿写了一个小型万维网浏览器,WebRunner,后来改名为HotJava。同年,Oak改名为Java。商标搜索显示,Oak已被一家显卡制造商注册,因此团队找到了一个新名字。这个名字是在很多成员常去的本地咖啡馆中杜撰出来的。名字是不是首字母缩写还不清楚,很大程度上来说不是。虽然有人声称是开发人员名字的组合:James Gosling(詹姆斯·高斯林)Arthur Van Hoff(阿瑟·凡·霍夫)Andy Bechtolsheim(安迪·贝克托克姆),或“Just Another Vague Acronym”(只是另外一个含糊的缩写)。还有一种比较可信的说法是这个名字是出于对咖啡的喜爱,所以以Java咖啡来命名。类文件的前四个字节如果用十六进制阅读的话,分别为CA FE BA BE,就会拼出两个单词“CAFE BABE”(咖啡宝贝)。
      1994年10月,HotJava和Java平台为公司高层进行演示。1994年,Java 1.0a版本已经可以提供下载,但是Java和HotJava浏览器的第一次公开发布却是在1995年5月23日SunWorld大会上进行的。SUN公司的科学指导约翰·盖吉宣告Java技术。这个发布是与网景公司的执行副总裁马克·安德森的惊人发布一起进行的,宣布网景将在其浏览器中包含对Java的支持。1996年1月,升阳公司成立了Java业务集团,专门开发Java技术。


    Java的发展历史

    历史上JAVA发生了什么事件?经历了些什么?

      Java:由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由当时任职太阳微系统的詹姆斯·高斯林(James Gosling)等人于1990年代初开发,它最初被命名为Oak。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

      Java从第一个版本诞生到现在已经有十九年的时间了。时间若白驹过隙,转瞬即逝。弹指间19年过去了,在下图所展示的时间线中,我们看到JDK已经发展到了1.8版。在这19年里还诞生了无数和Java相关的产品、技术和标准。现在让我们走入时间隧道,从孕育Java语言的时代开始,回顾一下Java的发展轨迹和历史变迁。  

         1991年4月,由James Gosling博士领导的绿色计划(Green Project)开始启动,此计划的目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个计划的产品就是Java语言的前身:Oak(橡树)。Oak当时在消费品市场上并不算成功,但随着1995年互联网潮流的兴起,Oak迅速找到了最适合自己发展的市场定位并蜕变成为Java语言。  1992年3月,由于Oak已被用作另一种已存在的编程语言名称,因此必须选一个新的名字——它就是Java,灵感来源于咖啡。  1993年2月,电视机顶盒,FirstPerson试图从时代华纳获得一个电视机顶盒交互系统的一揽子订单。在那时,由于绿色计划不是很成功,随即失去了时代华纳的订单。于是开发的重心从家庭消费电子产品转到了电视盒机顶盒的相关平台上。         1995年5月23日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本。Java语言第一次提出了“Write Once,Run Anywhere”的口号。  

         1996年1月23日,JDK 1.0发布,Java语言有了第一个正式版本的运行环境。JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM)。JDK 1.0版本的代表技术包括:Java虚拟机、Applet、AWT等。

         1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入Java技术。同年9月,已有大约8.3万个网页应用了Java技术来制作。在1996年5月底,Sun公司于美国旧金山举行了首届JavaOne大会,从此JavaOne成为全世界数百万Java语言开发者每年一度的技术盛会。

        1997年2月19日,Sun公司发布了JDK 1.1,Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的,JDK 1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。  

         直到1999年4月8日,JDK 1.1一共发布了1.1.0~1.1.8九个版本。从1.1.4之后,每个JDK版本都有一个自己的名字(工程代号),分别为:JDK 1.1.4 - Sparkler(宝石)、JDK 1.1.5 - Pumpkin(南瓜)、JDK 1.1.6 - Abigail(阿比盖尔,女子名)、JDK 1.1.7 - Brutus(布鲁图,古罗马政治家和将军)和JDK 1.1.8 – Chelsea(切尔西,城市名)。

         1998年12月4日,JDK迎来了一个里程碑式的版本JDK 1.2,工程代号为Playground(竞技场),Sun在这个版本中把Java技术体系拆分为3个方向,分别是面向桌面应用开发的J2SE(Java 2 Platform, Standard Edition)、面向企业级开发的J2EE(Java 2 Platform, Enterprise Edition)和面向手机等移动终端开发的J2ME(Java 2 Platform, Micro Edition)。在这个版本中出现的代表性技术非常多,如EJB、Java Plug-in、Java IDL、Swing等,并且这个版本中Java虚拟机第一次内置了JIT(Just In Time)编译器(JDK 1.2中曾并存过3个虚拟机,Classic VM、HotSpot VM和Exact VM,其中Exact VM只在Solaris平台出现过;后面两个虚拟机都是内置JIT编译器的,而之前版本所带的Classic VM只能以外挂的形式使用JIT编译器)。在语言和API级别上,Java添加了strictfp关键字与现在Java编码之中极为常用的一系列Collections集合类。

         在1999年3月和7月,分别有JDK 1.2.1和JDK 1.2.2两个小版本发布。

        1999年4月27日,HotSpot虚拟机发布,HotSpot最初由一家名为“Longview Technologies”的小公司开发,因为HotSpot的优异表现,这家公司在1997年被Sun公司收购了。HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK 1.3及之后所有版本的Sun JDK的默认虚拟机。

         2000年5月8日,工程代号为Kestrel(美洲红隼)的JDK 1.3发布,JDK 1.3相对于JDK 1.2的改进主要表现在一些类库上(如数学运算和新的Timer API等),JNDI服务从JDK 1.3开始被作为一项平台级服务提供(以前JNDI仅仅是一项扩展),使用CORBA IIOP来实现RMI的通信协议,等等。这个版本还对Java 2D做了很多改进,提供了大量新的Java 2D API,并且新添加了JavaSound类库。JDK 1.3有1个修正版本JDK 1.3.1,工程代号为Ladybird(瓢虫),于2001年5月17日发布。

         自从JDK 1.3开始,Sun维持了一个习惯:大约每隔两年发布一个JDK的主版本,以动物命名,期间发布的各个修正版本则以昆虫作为工程名称。

         2002年2月13日,JDK 1.4发布,工程代号为Merlin(灰背隼)。JDK 1.4是Java真正走向成熟的一个版本,Compaq、Fujitsu、SAS、Symbian、IBM等著名公司都有参与甚至实现自己独立的JDK 1.4。哪怕是在十多年后的今天,仍然有许多主流应用(Spring、Hibernate、Struts等)能直接运行在JDK 1.4之上,或者继续发布能运行在JDK 1.4上的版本。JDK 1.4同样发布了很多新的技术特性,如正则表达式、异常链、NIO、日志类、XML解析器和XSLT转换器等。

         JDK 1.4有两个后续修正版:

           2002年9月16日发布的工程代号为Grasshopper(蚱蜢)的JDK 1.4.1  

             2003年6月26日发布的工程代号为Mantis(螳螂)的JDK 1.4.2。

          2002年前后还发生了一件与Java没有直接关系,但事实上对Java的发展进程影响很大的事件,那就是微软公司的.NET Framework发布了。这个无论是技术实现上还是目标用户上都与Java有很多相近之处的技术平台给Java带来了很多讨论、比较和竞争,.NET平台和Java平台之间声势浩大的孰优孰劣的论战到目前为止都在继续。

          2004年9月30日,JDK 1.5发布,工程代号Tiger(老虎)。从JDK 1.2以来,Java在语法层面上的变换一直很小,而JDK 1.5在Java语法易用性上做出了非常大的改进。例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环(foreach循环)等语法特性都是在JDK 1.5中加入的。在虚拟机和API层面上,这个版本改进了Java的内存模型(Java Memory Model,JMM)、提供了java.util.concurrent并发包等。另外,JDK 1.5是官方声明可以支持Windows 9x平台的最后一个JDK版本。

         2006年12月11日,JDK 1.6发布,工程代号Mustang(野马)。在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EE、J2SE、J2ME的命名方式,启用Java SE 6、Java EE 6、Java ME 6的命名方式。JDK 1.6的改进包括:提供动态语言支持(通过内置Mozilla Java Rhino引擎实现)、提供编译API和微型HTTP服务器API等。同时,这个版本对Java虚拟机内部做了大量改进,包括锁与同步、垃圾收集、类加载等方面的算法都有相当多的改动。

        在2006年11月13日的JavaOne大会上,Sun公司宣布最终会将Java开源,并在随后的一年多时间内,陆续将JDK的各个部分在GPL v2(GNU General Public License v2)协议下公开了源码,并建立了OpenJDK组织对这些源码进行独立管理。除了极少量的产权代码(Encumbered Code,这部分代码大多是Sun本身也无权限进行开源处理的)外,OpenJDK几乎包括了Sun JDK的全部代码,OpenJDK的质量主管曾经表示,在JDK 1.7中,Sun JDK和OpenJDK除了代码文件头的版权注释之外,代码基本上完全一样,所以OpenJDK 7与Sun JDK 1.7本质上就是同一套代码库开发的产品。

         JDK 1.6发布以后,由于代码复杂性的增加、JDK开源、开发JavaFX、经济危机及Sun收购案等原因,Sun在JDK发展以外的事情上耗费了很多资源,JDK的更新没有再维持两年发布一个主版本的发展速度。JDK 1.6到目前为止一共发布了37个Update版本,最新的版本为Java SE 6 Update 37,于2012年10月16日发布。

         2009年2月19日,工程代号为Dolphin(海豚)的JDK 1.7完成了其第一个里程碑版本。根据JDK 1.7的功能规划,一共设置了10个里程碑。最后一个里程碑版本原计划于2010年9月9日结束,但由于各种原因,JDK 1.7最终无法按计划完成。

        从JDK 1.7最开始的功能规划来看,它本应是一个包含许多重要改进的JDK版本,其中的Lambda项目(Lambda表达式、函数式编程)、Jigsaw项目(虚拟机模块化支持)、动态语言支持、GarbageFirst收集器和Coin项目(语言细节进化)等子项目对于Java业界都会产生深远的影响。在JDK 1.7开发期间,Sun公司由于相继在技术竞争和商业竞争中都陷入泥潭,公司的股票市值跌至仅有高峰时期的3%,已无力推动JDK 1.7的研发工作按正常计划进行。为了尽快结束JDK 1.7长期“跳票”的问题,Oracle公司收购Sun公司后不久便宣布将实行“B计划”,大幅裁剪了JDK 1.7预定目标,以便保证JDK 1.7的正式版能够于2011年7月28日准时发布。“B计划”把不能按时完成的Lambda项目、Jigsaw项目和Coin项目的部分改进延迟到JDK 1.8之中。最终,JDK 1.7的主要改进包括:提供新的G1收集器(G1在发布时依然处于Experimental状态,直至2012年4月的Update 4中才正式“转正”)、加强对非Java语言的调用支持(JSR-292,这项特性到目前为止依然没有完全实现定型)、升级类加载架构等。

        到目前为止,JDK 1.7已经发布了9个Update版本,最新的Java SE 7 Update 9于2012年10月16日发布。从Java SE 7 Update 4起,Oracle开始支持Mac OS X操作系统,并在Update 6中达到完全支持的程度,同时,在Update 6中还对ARM指令集架构提供了支持。至此,官方提供的JDK可以运行于Windows(不含Windows 9x)、Linux、Solaris和Mac OS平台上,支持ARM、x86、x64和Sparc指令集架构类型。

         2009年4月20日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有(Java语言本身并不属于哪间公司所有,它由JCP组织进行管理,尽管JCP主要是由Sun公司或者说Oracle公司所领导的)。由于此前Oracle公司已经收购了另外一家大型的中间件企业BEA公司,在完成对Sun公司的收购之后,Oracle公司分别从BEA和Sun中取得了目前三大商业虚拟机的其中两个:JRockit和HotSpot,Oracle公司宣布在未来1~2年的时间内,将把这两个优秀的虚拟机互相取长补短,最终合二为一。可以预见在不久的将来,Java虚拟机技术将会产生相当巨大的变化。  

          2011年7月28日,Oracle公司发布Java SE 1.7  

         2014年3月18日,Oracle公司发表Java SE 1.8  

           Java语言有下面一些特点 :简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。

    最后来个表单:

     

    展开全文
  • 从各家磁盘阵列厂商对Virtual Volumes支持,我们可以看到VMware SPBM所涵盖规则要比VSAN5个规则丰富得多,随着VSAN在数据服务(Data Services,也即存储功能)不断发展未来会支持更多规则。在新VSAN...

    VSAN的虚拟机存储策略
    VSAN的虚拟机存储策略有5种功能,或者说5种规则(Rule)。从各家磁盘阵列厂商对Virtual Volumes的支持,我们可以看到VMware SPBM所涵盖的规则要比VSAN的5个规则丰富得多,随着VSAN在数据服务(Data Services,也即存储功能)的不断发展,未来会支持更多的规则。在新的VSAN版本里,去重、纠删码、QoS(IOPS Limit),也放到了存储策略里。

    在VSAN里,每个定义好的策略其实就是5种规则的组合,也即规则集(Rule-Set)。下图我们可以看到这5种规则,后面会按照图中下拉列表的从上至下的顺序详细介绍各个规则的含义。

    VSAN的虚拟机存储策略的5种规则

    1)每个对象的磁盘带数(SW)

    Number of disk stripes per object :每个对象的磁盘带数(Stripe Width,简写为SW)是指,虚拟机对象的每个副本所横跨的持久化层的盘的数量,也即每个副本的条带宽度。值如果大于 1,则可能产生较好的性能,但也会导致使用较多的系统资源。

    虚拟机存储策略之条带宽度

    在混合配置中,条带分散在磁盘中。在全闪存配置中,可能会在构成持久化层的SSD中进行条带化。

    需要强调的是,VSAN目前主要是靠缓存层的SSD,来确保性能。所有的写操作都会先写入缓存层的SSD,因此增大条带宽度,不一定就带来性能的提升。只有混合配置下的两种情况,能确保增加条带宽度可以增加性能:一是写操作时,如果存在大量的数据从SSD缓存层Destage(刷)到HDD;二是读操作时,如果存在大量的数据在SSD缓存层中没有命中。因为,多块HDD的并发能在这两种情况下提升性能。

    默认值为 1。最大值为 12。VMware不建议更改默认的条带宽度。

    2)闪存读取缓存预留

    Flash read cache reservation (%) :闪存读取缓存预留是指作为虚拟机对象的读取缓存预留的闪存容量,数值为该虚拟机磁盘(VMDK) 逻辑大小的百分比,这个百分比的数值最多可以精确到小数点后4位,例如2 TB的VMDK,如果预留百分比为0.1%,则缓存预留的闪存容量是2.048 GB。预留的闪存容量无法供其他对象使用。未预留的闪存在所有对象之间公平共享。此选项应仅用于解决特定性能问题。

    全闪存配置不支持此规则,因此在定义虚拟机存储策略时,您不应更改其默认值。VSAN仅支持将此属性用于混合配置。 无需设置预留即可获取缓存。默认情况下,VSAN将按需为存储对象动态分配读取缓存。这是最灵活、最优化的资源利用。因此,通常无需更改此参数的默认值 0。

    如果在解决性能问题时要增加该值,请小心谨慎。如果在多个虚拟机之间过度分配缓存预留空间,则需小心是否可能导致SSD空间因超额预留而出现浪费,且在给定时间无法用于需要一定空间的工作负载。这可能会影响一些性能。默认值为 0%。最大值为 100%。

    3)允许的故障数(FTT)

    Number of failures to tolerate :允许的故障数(以后简称为FTT)定义了虚拟机对象允许的主机和设备故障的数量。如果FTT为 n,则创建的虚拟机对象副本数为 n+1,见证对象的个数为n,这样所需的用于存储的主机数为副本数+见证数 = n+1 + n = 2n+1。

    前面多次提到的副本数为2,表示的就是最多允许一台主机出故障,也即FTT值为1,此时主机数最少为3。截止VSAN 6.1版,FTT的最大值为 3,也即最多4份副本。

    为虚拟机分配存储资源时,如果未选择存储策略,则VSAN将使用默认的虚拟机存储策略,默认策略规定了FTT为1。

    虚拟机存储策略之允许的故障数

    如果已配置故障域,则需要 2n+1 个故障域,且这些故障域中具有可提供容量的主机。不属于任何故障域的主机会被视为其自己的单个主机故障域。

    如果不希望VSAN保护虚拟机对象的单个镜像副本,则可以将FTT指定为 0。但是,主机在进入维护模式时,可能会出现异常延迟。发生延迟的原因是VSAN必须将该对象从主机中逐出才能成功完成维护操作。将FTT设置为 0 意味着您的数据不受保护,并且当VSAN群集遇到设备故障时,您可能会丢失数据。

    VSAN的FTT默认值为 1。最大值为 3。

    4)强制置备

    Force provisioning :如果强制置备设置为是(yes),则即使现有存储资源不满足存储策略,也会置备该对象。这样,在虚拟机Summary页和相关的虚拟机存储策略视图中,这台虚拟机会显示成不合规(Not Compliant)。

    虚拟机存储策略之强制置备,呈现出来的不合规(Not Compliant)

    强制置备允许VSAN在虚拟机初始部署期间违反 FTT、条带宽度和闪存读取缓存预留的策略要求。VSAN将尝试找到符合所有要求的位置。如果找不到,它将尝试找一个更加简单的位置,即将要求降低到FTT=0、条带宽度=1、闪存读取缓存预留=0。这意味着VSAN将尝试创建仅具有一份副本的对象。不过,对象依然遵守对象空间预留(下面会详细介绍)的策略要求。

    VSAN 在为对象查找位置时,不会仅仅降低无法满足的要求。例如,如果对象要求FTT=2,但该要求得不到满足,那么VSAN不会尝试 FTT=1,而是直接尝试 FTT=0。同样,如果要求是FTT=1、条带宽度=10,但VSAN没有足够的持久化盘容纳条带宽度=10,那么它将退回到 FTT=0、条带宽度=1,即便策略FTT=1、条带宽度=1 也许能成功。

    使用强制置备虚拟机的管理员需要注意,一旦附加资源在群集中变得可用,如添加新主机或新磁盘,或者处于故障或维护模式的主机恢复正常,VSAN可能会立即占用这些资源,以尝试满足虚拟机的策略设置,也即朝着合规的方向努力。

    默认值为否(no),这对于大多数生产环境都是可接受的。当不满足策略要求时,VSAN可以成功创建用户定义的存储策略,但无法置备虚拟机,如下图的警告信息表示,需要3台主机提供存储,而目前在集群里只发现两台。虚拟机存储策略之强制置备,存储容量不够无法创建虚拟机。

    5)对象空间预留

    Object space reservation (%):对象空间预留是指部署虚拟机时应预留或厚置备的虚拟机磁盘(VMDK)对象的逻辑大小百分比。默认值0意味着部署在VSAN上的所有对象都是精简置备的,一开始不占任何空间,只有当数据写入后,才会按存储策略动态占据vsanDatastore的空间。

    默认值为 0%。最大值为 100%。当对象空间预留设置为100%时,虚拟机存储对空间的要求会被设为厚置备延迟置零(LZT,Lazy Zeroed Thick)格式。

    存储策略的使用

    1)系统默认的存储策略

    下图我们可以看到VSAN的5个规则在默认情况下表示的含义,分别是:

    FTT=1,也即副本数为2,这样写满100GB的VMDK,实际要消耗200GB的存储空间;

    条带宽度为1,也即每个副本只横跨一块持久化盘;

    强制配置为否;

    对象空间预留为0%(也即精简配置);

    闪存读取缓存预留为0.0000%(也即不预留)。

    VSAN虚拟机存储策略的默认值

    2) 分配虚机时选择存储策略

    VMware的基于存储策略的管理,使得管理员可以更多地关注业务应用,围绕着业务应用/虚机为中心,而不是围绕着存储为中心,从上至下的自动化地分配存储资源。存储管理员可以从以往重复繁琐枯燥的卷管理、LUN映射、VMFS格式化、建Datastore的工作中解脱出来,专注在更高级的工作中,也即根据不同的工作负载对存储性能、可用性、容量的要求,创建存储策略。存储策略创建好后,能够适用于同类工作负载的不同虚机。

    如下图,创建的存储策略有,Print Server,Tier 2 Apps,VDI-Desktops。当vSphere管理员需要创建虚机,或者给已有虚机创建新的VMDK时,就可以根据存储管理员事先创建好的存储策略,或者系统默认的存储策略,进行选择了。这样,就极大地减少了各个管理员交互的时间和工作量,使得存储资源的部署非常便捷。

    3) 变更存储策略非常简单

    我们知道,用户的业务应用种类很多,有些业务应用可能在某一个特定时间段需要通过变更存储资源,去应对高峰时刻或关键时刻所需的高性能、高可用性。传统存储需要好几个步骤,甚至需要停顿业务,才能变更存储策略。而VSAN非常简单,只需创建新存储策略,并施加到(Apply)虚机,即可。
    ---------------------
    作者:weixin_33716557
    来源:CSDN
    原文:https://blog.csdn.net/weixin_33716557/article/details/85025489
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 从各家磁盘阵列厂商对Virtual Volumes支持,我们可以看到VMware SPBM所涵盖规则要比VSAN5个规则丰富得多,随着VSAN在数据服务(Data Services,也即存储功能)不断发展未来会支持更多规则。在新VSAN...

    VSAN的虚拟机存储策略
    VSAN的虚拟机存储策略有5种功能,或者说5种规则(Rule)。从各家磁盘阵列厂商对Virtual Volumes的支持,我们可以看到VMware SPBM所涵盖的规则要比VSAN的5个规则丰富得多,随着VSAN在数据服务(Data Services,也即存储功能)的不断发展,未来会支持更多的规则。在新的VSAN版本里,去重、纠删码、QoS(IOPS Limit),也放到了存储策略里。

    在VSAN里,每个定义好的策略其实就是5种规则的组合,也即规则集(Rule-Set)。下图我们可以看到这5种规则,后面会按照图中下拉列表的从上至下的顺序详细介绍各个规则的含义。

    VSAN的虚拟机存储策略的5种规则

    1)每个对象的磁盘带数(SW)

    Number of disk stripes per object :每个对象的磁盘带数(Stripe Width,简写为SW)是指,虚拟机对象的每个副本所横跨的持久化层的盘的数量,也即每个副本的条带宽度。值如果大于 1,则可能产生较好的性能,但也会导致使用较多的系统资源。

    虚拟机存储策略之条带宽度

    在混合配置中,条带分散在磁盘中。在全闪存配置中,可能会在构成持久化层的SSD中进行条带化。

    需要强调的是,VSAN目前主要是靠缓存层的SSD,来确保性能。所有的写操作都会先写入缓存层的SSD,因此增大条带宽度,不一定就带来性能的提升。只有混合配置下的两种情况,能确保增加条带宽度可以增加性能:一是写操作时,如果存在大量的数据从SSD缓存层Destage(刷)到HDD;二是读操作时,如果存在大量的数据在SSD缓存层中没有命中。因为,多块HDD的并发能在这两种情况下提升性能。

    默认值为 1。最大值为 12。VMware不建议更改默认的条带宽度。

    2)闪存读取缓存预留

    Flash read cache reservation (%) :闪存读取缓存预留是指作为虚拟机对象的读取缓存预留的闪存容量,数值为该虚拟机磁盘(VMDK) 逻辑大小的百分比,这个百分比的数值最多可以精确到小数点后4位,例如2 TB的VMDK,如果预留百分比为0.1%,则缓存预留的闪存容量是2.048 GB。预留的闪存容量无法供其他对象使用。未预留的闪存在所有对象之间公平共享。此选项应仅用于解决特定性能问题。

    全闪存配置不支持此规则,因此在定义虚拟机存储策略时,您不应更改其默认值。VSAN仅支持将此属性用于混合配置。 无需设置预留即可获取缓存。默认情况下,VSAN将按需为存储对象动态分配读取缓存。这是最灵活、最优化的资源利用。因此,通常无需更改此参数的默认值 0。

    如果在解决性能问题时要增加该值,请小心谨慎。如果在多个虚拟机之间过度分配缓存预留空间,则需小心是否可能导致SSD空间因超额预留而出现浪费,且在给定时间无法用于需要一定空间的工作负载。这可能会影响一些性能。默认值为 0%。最大值为 100%。

    3)允许的故障数(FTT)

    Number of failures to tolerate :允许的故障数(以后简称为FTT)定义了虚拟机对象允许的主机和设备故障的数量。如果FTT为 n,则创建的虚拟机对象副本数为 n+1,见证对象的个数为n,这样所需的用于存储的主机数为副本数+见证数 = n+1 + n = 2n+1。

    前面多次提到的副本数为2,表示的就是最多允许一台主机出故障,也即FTT值为1,此时主机数最少为3。截止VSAN 6.1版,FTT的最大值为 3,也即最多4份副本。

    为虚拟机分配存储资源时,如果未选择存储策略,则VSAN将使用默认的虚拟机存储策略,默认策略规定了FTT为1。

    虚拟机存储策略之允许的故障数

    如果已配置故障域,则需要 2n+1 个故障域,且这些故障域中具有可提供容量的主机。不属于任何故障域的主机会被视为其自己的单个主机故障域。

    如果不希望VSAN保护虚拟机对象的单个镜像副本,则可以将FTT指定为 0。但是,主机在进入维护模式时,可能会出现异常延迟。发生延迟的原因是VSAN必须将该对象从主机中逐出才能成功完成维护操作。将FTT设置为 0 意味着您的数据不受保护,并且当VSAN群集遇到设备故障时,您可能会丢失数据。

    VSAN的FTT默认值为 1。最大值为 3。

    4)强制置备

    Force provisioning :如果强制置备设置为是(yes),则即使现有存储资源不满足存储策略,也会置备该对象。这样,在虚拟机Summary页和相关的虚拟机存储策略视图中,这台虚拟机会显示成不合规(Not Compliant)。

    虚拟机存储策略之强制置备,呈现出来的不合规(Not Compliant)

    强制置备允许VSAN在虚拟机初始部署期间违反 FTT、条带宽度和闪存读取缓存预留的策略要求。VSAN将尝试找到符合所有要求的位置。如果找不到,它将尝试找一个更加简单的位置,即将要求降低到FTT=0、条带宽度=1、闪存读取缓存预留=0。这意味着VSAN将尝试创建仅具有一份副本的对象。不过,对象依然遵守对象空间预留(下面会详细介绍)的策略要求。

    VSAN 在为对象查找位置时,不会仅仅降低无法满足的要求。例如,如果对象要求FTT=2,但该要求得不到满足,那么VSAN不会尝试 FTT=1,而是直接尝试 FTT=0。同样,如果要求是FTT=1、条带宽度=10,但VSAN没有足够的持久化盘容纳条带宽度=10,那么它将退回到 FTT=0、条带宽度=1,即便策略FTT=1、条带宽度=1 也许能成功。

    使用强制置备虚拟机的管理员需要注意,一旦附加资源在群集中变得可用,如添加新主机或新磁盘,或者处于故障或维护模式的主机恢复正常,VSAN可能会立即占用这些资源,以尝试满足虚拟机的策略设置,也即朝着合规的方向努力。

    默认值为否(no),这对于大多数生产环境都是可接受的。当不满足策略要求时,VSAN可以成功创建用户定义的存储策略,但无法置备虚拟机,如下图的警告信息表示,需要3台主机提供存储,而目前在集群里只发现两台。虚拟机存储策略之强制置备,存储容量不够无法创建虚拟机。

    5)对象空间预留

    Object space reservation (%):对象空间预留是指部署虚拟机时应预留或厚置备的虚拟机磁盘(VMDK)对象的逻辑大小百分比。默认值0意味着部署在VSAN上的所有对象都是精简置备的,一开始不占任何空间,只有当数据写入后,才会按存储策略动态占据vsanDatastore的空间。

    默认值为 0%。最大值为 100%。当对象空间预留设置为100%时,虚拟机存储对空间的要求会被设为厚置备延迟置零(LZT,Lazy Zeroed Thick)格式。

    存储策略的使用

    1)系统默认的存储策略

    下图我们可以看到VSAN的5个规则在默认情况下表示的含义,分别是:

    FTT=1,也即副本数为2,这样写满100GB的VMDK,实际要消耗200GB的存储空间;

    条带宽度为1,也即每个副本只横跨一块持久化盘;

    强制配置为否;

    对象空间预留为0%(也即精简配置);

    闪存读取缓存预留为0.0000%(也即不预留)。

    VSAN虚拟机存储策略的默认值

    2) 分配虚机时选择存储策略

    VMware的基于存储策略的管理,使得管理员可以更多地关注业务应用,围绕着业务应用/虚机为中心,而不是围绕着存储为中心,从上至下的自动化地分配存储资源。存储管理员可以从以往重复繁琐枯燥的卷管理、LUN映射、VMFS格式化、建Datastore的工作中解脱出来,专注在更高级的工作中,也即根据不同的工作负载对存储性能、可用性、容量的要求,创建存储策略。存储策略创建好后,能够适用于同类工作负载的不同虚机。

    如下图,创建的存储策略有,Print Server,Tier 2 Apps,VDI-Desktops。当vSphere管理员需要创建虚机,或者给已有虚机创建新的VMDK时,就可以根据存储管理员事先创建好的存储策略,或者系统默认的存储策略,进行选择了。这样,就极大地减少了各个管理员交互的时间和工作量,使得存储资源的部署非常便捷。

    3) 变更存储策略非常简单

    我们知道,用户的业务应用种类很多,有些业务应用可能在某一个特定时间段需要通过变更存储资源,去应对高峰时刻或关键时刻所需的高性能、高可用性。传统存储需要好几个步骤,甚至需要停顿业务,才能变更存储策略。而VSAN非常简单,只需创建新存储策略,并施加到(Apply)虚机,即可。

    展开全文
  • 1.4 展望Java技术的未来 1.4.1 模块化 1.4.2 混合语言 1.4.3 多核并行 1.4.4 进一步丰富语法 1.4.5 64位虚拟机 说明:文章所有内容均摘自《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》 1.1...
  • 深入理解Java虚拟机-走近Java

    万次阅读 多人点赞 2020-01-02 15:02:08
    文章目录概述Java技术体系Java发展史Java虚拟机发展史展望Java技术的未来实战:自己编译JDK本章小结 本博客主要参考周志明老师的《深入理解Java虚拟机》第二版 读书是一种跟大神的交流。阅读《深入理解Java虚拟机...
  • 前言: 先上章节导图,这本书还需要在读一遍 概述 技术体系: 发展史 未来: 这个未来是过去的未来,可能就是现在了,当然不全是
  • 虚拟机已经是比较成熟技术,容器技术作为下一代虚拟化技术,国内各厂商应用还不广,但似乎其代表着未来的发展方向。 先来看一下虚拟机和容器架构图: 左图是虚拟机 从下到上理解: 基础设施...
  • JVM虚拟机深入学习

    2014-10-24 14:08:07
    的书籍,第一部分是讲解java的发展历史以及未来规划等课外知识暂时没有阅读从第二部分开始阅读,略写下昨晚看的十几页知识。 java虚拟机的内存布局以及管理。   先说下程序计数器:  程序计数器是唯一一块虚拟机...
  • 上一篇介绍了JVM的发展史,那只是简单看了JVM,只是知道有这么一个东西,是干什么用;从这一篇到未来,将一点点慢慢了解它,为是为以后学习打下基础和浇灭面试官狂气 :)。 简介 下面是我画一个...
  • JVM高级特性与最佳实践》内容特色《深入理解Java虚拟机:JVM高级特性与最佳实践》目录第1章 走近Java1.1 概述1.2 Java技术体系1.3 Java发展史1.4 展望Java技术的未来1.4.1 模块化1.4.2 混合语言1.4.3 多核并行...
  • 根据J2ME(MIDP)虚拟机对程序编写优化方式李振鹏版权所有,转载请注明出处 1、关于虚拟机我认为,目前客户端虚拟机技术,应该说是发展到一个转折点,未来可能会出现重大技术突破。目前无论是Java还是.Net基本上...
  • 如果您有兴趣探索巴达维亚的未来发展方向,请。 巴达维亚 Batavia是早期的alpha项目。 如果破裂,您将保留所有闪亮的碎片。 Batavia是用JavaScript编写的Python虚拟机的实现。 使用Batavia,您可以在浏览器中...
  • Docker 无疑是当下最具影响力开源...为了解答这些问题,让我们先来简单回顾一下过去的发展历程吧,这样也许能够促使我们更好了解当下状况和展望未来。 在虚拟机技术普及之前,系统管理员们习惯于上线物理服...
  • 我认为,目前客户端虚拟机技术,应该说是发展到一个转折点,未来可能会出现重大的技术突破。目前无论是Java还是.Net基本上采用的都是分代式垃圾回收和分支预测JIT技术。 因此目前这两个虚拟机的性能相差不是很大,...
  • 关于《深入理解Java虚拟机》这本书就不多说废话了,我觉得只要是搞Java的...介绍了Java和虚拟机的发展史,展望Java技术的未来 第二章:Java内存区域与内存溢出异常 重点介绍了运行时数据区域:程序计数器、Java虚...
  • 从整体虚拟化技术应用及发展来看,以下几点可能会成为未来的发展趋势: 平台开放化——作为基础平台,封闭架构带来不兼容性,无法支持异构虚拟机系统,也难以支撑开放合作产业链需求。随着云计算时代来临,...
  • Main Ideajava概述java技术体系java 发展史java虚拟机发展史展望Java技术的未来实战:自己编译JDKjava优点java使用广泛jrejdk组成部分java程序设计语言各种硬件平台上的java虚拟机Class文件格式时间轴sun classic / ...
  • 牢固基础(未来1-2 年),完善技术设计文档,完成基础模块代码开发,并上线主链,持续完善智能合约,多链并行,跨链共识等早期功能,完善主链,侧链周边生态,包括区块链浏览器,轻钱包,移动端钱包,智能合约虚拟机,...
  • 摘要:随着云服务的发展,各大公司、企业机构都开始通过削减物理机的数量来达到降低成本、...但事实上,企业在减少IT成本、能耗和空间的同时,虚拟机的出现却给数据备份带来了 随着云服务的发展,各大公司、企业机构...
  • 论Java未来发展前途

    2014-09-09 14:59:25
    如果要向一无所知人解释Java是什么还是比较有难度,是,它是一门编程语言,但发展到今天,Java一词远程超出了语言定义,具体来说,Java是一个包括虚拟机环境,与C语言类似,包括库和支持软件,允许它运行在...
  • 不管你对Java是怎样一个态度,有一点不可否认,Java是现在全球最时髦开发工具之一,它拥有一套庞大且完善类库,内置了其他语言需要靠库甚至是操作系统才能支持功能,拥有一个虚拟机,总之,Java出现,确实给整个程序...
  • 未来发展趋势有哪些?Kubernetes,简称K8s,是一个开源,用于管理云平台中多个主机上容器化应用。随着云计算应用增多,越来越多企业要求云计算人才要掌握Kubernetes,接下来千锋就给大家分享kubernetes...
  •  与会人员就SUN的开源项目NetBeans的发展讨论了Java技术的未来方向。核心专家如SUN的首席研究员John Gage、副主席James Gosling和奠基人Bill Joy提出他们技术的观点。 在这里Gage提到了SUN的Squawk项目。这个用...
  • JAVAoracle此前在一次sun-oracle未来发展路途图会议上也曾表示有意整合这两个jvm, 其实这两个jvm都不是oracle自己开发, 另一个jvmjrockit来自前bea系统公司。 reinhold说:要整合两者最好部分不是一件容易...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 141
精华内容 56
关键字:

虚拟机的未来发展