ZD至顶网服务器频道 04月01日 新闻消息:软件定义其实隐含了对硬件平台的苛刻要求:一方面要标准化,有足够大的生态环境支持,软件才能“一次编译,到处运行”,降低开发成本,不受硬件差异的羁绊;另一方面,还要保持足够快的发展速度,不断提高性能,并将新的功能普及,让软件直接受益于硬件升级。前者限定了后者,后者又决定了前者——够快则促进,过慢则有被抛弃的风险。过去几年软件定义的迅速普及,英特尔自至强E5平台问世以来提供的全方位产品和技术革新是直接的推动力,通过软件定义的计算,成就了软件定义存储和软件定义网络。

3月19日,Mark Zuckerberg通过手机在自己创立的社交网站上放出了他跑过天安门的照片。“小扎是怎么做到的?”成了国人热议的话题,中国移动的专家宁宇还为此在中国最大的移动社交平台上专文普及了相关的网络基础知识。

似乎只有名人效应,才能引起大家对ICT基础设施的兴趣。2014年10月,小扎在清华大学秀中文惊艳,赢得好评一片;而同期Facebook公司捐给清华大学交叉信息研究院OCP(Open Compute Project,开放计算项目)整机柜服务器的协议签署,直至第一批设备交付,都少有人知。

图:2015年Facebook交付给清华大学交叉信息研究院的首批约100台OCP服务器及存储(JBOD)设备,拍摄于2016年2月。

类似的事例是AlphaGo完胜李世石,专业围棋手深感震惊,AI从业者欢欣雀跃。深度学习俨然成为大众话题,算法的关注度远远高过AlphaGo的硬件配备。在微信朋友圈中有一条评论,大意是李世石的大脑运转才消耗多少能量,以单位功率来计算,AlphaGo还差得远。

但是,大众对人工智能的恐慌,很重要的一点是机器的发展速度比人类本身的进步要快得多。上一次“人机大战”过去还不到20年,运行在手机上的国际象棋软件就可以做到同样的事了——算法等软件层面的进步肯定是有的,更令人无法忽视的是硬件的改天换地。

相比于只会下国际象棋的“深蓝”,现在的手机可谓多才多艺。以此来看,也属于一种“软件定义”。大家已经习惯了硬件性能“摩尔定律”般的持续跃升,以至于会忽略这才是“软件定义”得以实现的重要前提。

三大目标与两大原则

3月9日在美国硅谷召开的2016 OCP峰会(OCP U.S. Summit 2016)上,Facebook负责工程和基础设施的副总裁Jay Parikh在主题演讲中表示,可扩展性(Scalable)、效率(Efficient)和灵活性(Flexible)是Facebook关注的目标。相信这也是绝大多数现代公司对IT基础设施的要求。

为了达成上述目标,Facebook在构建基础设施时的选择依据有两条,即:标准,开源。

标准可以分为厂商标准和行业标准。厂商标准很大程度上是打出来的标准,属于事实标准,如x86;行业标准一定程度上是谈出来的标准,也要有实力作为后盾,如NVMe。

不论是哪一类标准,目的都是形成一个尽可能大的生态,降低硬件和软件的开发成本。开源也有同样的作用——很难说Linux比Unix更出色,但Unix几乎每个处理器平台都有一个版本,高度碎片化,最终在生态系统规模上,完全无法与后起的Linux抗衡。

标准化,使开发者能够从硬件平台的升级中获得性能收益,而又不受硬件差异的限制;开源生态,降低了开发者的学习成本,极大地拓展了人才供应。硬件是软件的助推器而不是囚笼,为软件定义奠定了基础。

存储的硬件时代

早期的存储系统,包括我们常说的SAN(Storage Area Network),很大程度建立在RAID(Redundant Array Of Independent Disks,独立磁盘冗余阵列)技术之上,即把多个硬盘聚合为整体,提供更高的性能和更大的容量。存储系统的计算能力很弱,很长一段时间都用基于PowerPC(PPC)的ASIC满足RAID运算的需求。

扩展性:在上世纪90年代,以太网还很不成熟,速度慢,InfiniBand(IB)则尚未诞生。为了高速而可靠的传输数据,为存储系统开发了专用的网络技术(如Fibre Channel,FC),这也是SAN这个名字的由来。因而,纵向扩展(Scale-up)是存储系统扩容的主要方式,即用更大的存储系统来替换较小的存储系统,以获得更大的容量和更高的性能,而不是把多台存储系统互连起来的横向扩展(Scale-out),扩展能力受限于单台存储系统所能达到的规模。

效率:在互联网公司成为主流之前,传统企业应用的数据量不算大,增长也不快。块存储是主流,文件存储次之,对象存储还差得远。相比效率,市场更在乎可靠性和可用性,存储系统重点发展的软件功能包括镜像和复制,一定程度上是牺牲效率换取可靠性和可用性。

灵活性:存储系统的功能相对单一,由于计算能力较为昂贵和稀缺,块存储(如SAN)和文件存储(NAS)通常依赖不同的硬件实现。

总的来说,除了带有大量的硬盘,十多年前存储系统的控制器在技术架构上也与尚未占据统治性地位的x86服务器很不同,有些实现更像大机或小机。产品的功能,很大程度上受到硬件形态的限制。

三大要素促成软件定义存储

2000年之后,随着互联网和虚拟化等应用的兴起,文件和对象数据呈爆发性增长态势,带动存储需求的上扬。一方面,是存储需求的普及和平民化;另一方面,是IDC等分析机构指出,全球所需存储的数据量增长速度明显超过出货的存储容量,需求将持续超过实际供给。

也就是说,要以同样或更少的容量、(相对以前)明显更低的价格存储更多的数据,效率成为存储行业关注的重点。存储行业迎来一轮创业高潮,3PAR和LeftHand(后被HP收购)、Equallogic和Compellent(后被Dell收购)、Data Domain和Isilon(后被EMC收购)及XIV(后被IBM收购)等存储新星集中涌现。

上述创业公司主打存储的软件功能,以自动精简配置、自动分层存储、重复数据删除等软件功能提高存储的利用率,优化性能和成本。这些软件功能都需要比较强的计算能力,基于PowerPC的架构逐渐力不从心,有些产品以专用ASIC来加速特定的软件功能。但在软件功能越来越丰富的情况下,专用加速硬件无疑有其局限性。

随着x86架构逐渐成为服务器市场的主流,各大厂商的新一代存储系统纷纷转向基于英特尔至强处理器的平台,后者也集成了RAID 5处理所需的XOR硬件加速引擎作为辅助功能。以IBM为例,主导开发了基于英特尔至强处理器的Storwize V7000系列,替代之前基于XOR ASIC的DS5000系列中端存储系统。从IBM研发的角度来看,x86 处理器加上类似Linux的kernel,构成一个非常稳定成熟的平台,而且十分适合用在功能非常丰富的产品里,因为在此之上做软件产品的开发,周期会比较短,市场上的人才也比较容易找到。也就是说,既提高了存储的效率,也帮助改善了开发的效率。

2010年以后,存储大厂的主力产品,基本都已转向以至强为代表的x86平台。在这样的基础上,存储介质和网络技术的换代,为软件定义存储铺平了道路。

基于闪存的固态盘(SSD)取代硬盘驱动器(HDD),是存储行业发展的转折点。SSD的IOPS和延迟性能可以达到硬盘的数百倍,这意味着我们不需要堆积上千个硬盘去获得较高的性能。高端的服务器只需要插上几块NVMe的SSD,就可以获得堪比高端磁盘阵列的功能。

当然,就单台设备而言,磁盘阵列在容量、可靠性和可用性上还具有优势。但是,通过多台x86服务器集群的方式,Google等大型互联网公司早就解决了容量/性能扩展和整体可用性的问题,如著名的Hadoop。近年来,以太网的发展速度已经超过FC(如40Gbps vs. 32Gbps),加上可以明显缩短访问延迟的RDMA(远程DMA)技术,使得分布式存储的横向扩展(Scale-out)更为成熟,在可扩展性上比传统纵向扩展更具潜力。

从计算平台,到存储介质和网络互连,存储系统的硬件架构正与服务器高度趋同。那么,区别在哪里?软件!有了高性能且通用的硬件平台,无需改动硬件架构,安装或应用不同功能的存储软件,便能满足相应的存储需求,具有高度的灵活性,这就是软件定义存储的本质。

至于是不是分布式存储,或者一定要横向扩展(Scale-out),倒并不是那么重要。关键看用户的具体需求,就像前面一直强调的可扩展性、效率和灵活性,根据具体情况去选择孰轻孰重。泛泛而言,软件定义存储提供的是一个各方面都更好的可能。

SDI之SDN/NFV

软件定义基础架构(SDI)的发展,为电信运营商和公有云提供商的业务带来了显著的加速效果。

软件定义网络是最早商业化的软件定义领域之一,开放的x86平台+开源的Linux,共同为软件定义领域提供了理想的平台。从某种角度讲是基于英特尔架构的x86服务器拥抱开源Linux后产生的一个巨大的商业空间。

最早使用软件定义网络技术的其实是用户——传统网络设备依赖性最强的电信运营商,而在今天云计算大潮中,积极推进SDN(Software Defined Network软件定义网络)的也是云计算领域的提供商。

为什么电信运营商和云计算领域如此积极的推动SDN的发展呢,因为传统的网络设备使用的ASIC、DSP等核心芯片都掌握在少数几家巨头手中,是封闭的平台,用户只能基于这些芯片定义的功能来使用,可是在云计算的大环境中,各类新型的应用层出不穷,应用模式千差万别,这些传统网络设备的功能大都固化在硬件平台上,缺乏灵活性。

早期的网络设备都是基于专有芯片、专有系统的封闭式产品,用户只能在设备供应商所提供的功能和服务范畴内使用,这些专有设备因为封闭的生态体系,因此生产数量少,价格自然昂贵,就像Unix小型机一样,属于封闭系统。基于英特尔架构的x86平台目前已经在绝大多数计算环境中成功的取代了小型机,依靠的就是开放架构+开源系统,当然,x86计算性能的提升是关键。

图注:SK电信提出的全面转向IT网络架构的思路图

在2016年3月的OCP大会中,老牌电信运营商AT&T和SK都提出了SDI的概念,他们使用基于英特尔至强处理器的服务器平台+开源的Linux系统,来解决传统ASIC、DSP和FPGA难以解决的灵活性问题。他们提出的SDN/ NFV(Network Function Virtualization,网络功能虚拟化)在灵活性和易用性上较传统网络设备有巨大的提升,而且灵活的部署扩展能力也更符合云计算时代网络快速部署和调整的需求,同时SDN/NFV的应用降低了大规模业务部署时的复杂度。

从电信运营商和公有云提供商的角度来看,未来的SDN/NFV方案将由开放的x86标准服务器+开源Linux环境来构建,具有系统开源、易构建,接口标准化等特点。自从2009年英特尔推出集成内存控制器的SNB架构处理器平台后,转发等关键的网络评估性能追上了传统网络设备使用的ASIC芯片,x86的强计算能力也成为开源Linux平台的天然合作伙伴。

基于开放x86标准服务器和开源Linux的平台具备了开源特性和标准接口的优势,英特尔也推出了DPDK来优化网络性能和虚拟化应用,大量网络厂商从2010年后就在这个开放开源基础平台上,来构造高性能、可编程、低成本的SDN架构。

伴随x86平台的发展,业界逐渐流行使用双路至强服务器来作为SDN/NFV的平台,而从2010年到今天的6年时间里,面向企业应用领域的至强处理器系列从双路8核(双路的英特尔至强5600产品家族)快速发展到最新一代的至强处理器E5 v4的双路44核88线程的高性能计算平台。且先不论平台的计算性能提升多少倍,单就多核的设计思路就让云计算领域尝到了足够的甜头。一台服务器从最初只能支持几台虚拟主机,到今天商业化的公有云平台上可以在一台物理主机上提供100台的虚拟主机,这期间,云计算的进步依赖于基于英特尔至强处理器平台的发展。

目前在国内典型的电信环境下,基于双路至强处理器的NFV类设备,往往会将6~7块10Gbps网卡捆绑在一起,利用至强E5 v3平台的性能,来获得更高的网络带宽和处理能力。那么在升级到最新的至强E5 v4后,应该很快就会在运营商端看到使用100Gbps网卡的新一代高性能NFV设备的出现。

云计算带来的SDN

SDN大规模应用之一是公有云数据中心,随着公有云规模的扩张,对于SDN的需求也持续上升,虚拟主机数量今年来的增长让传统网络设备在管控上捉襟见肘。从某种角度讲,1000台以下虚拟云主机依然占据目前云计算的绝大多数,管理方便、调整灵活的x86+Linux开源平台的SDN成为这类公有云/私有云首选的网络平台。

在全新的至强E5 v4平台的支持下,一台双路的物理服务器可以具备多达44核88线程(使用E5 v4 2699处理器),所支持的内存也达到了1.5TB,这就为在一台物理主机上运行超过100台虚拟主机提供了基础,那么对于大规模部署云计算的数据中心而言,SDN设备的性能和灵活性在这里就成为云计算网络是否能胜任的关键。

无论是传统的集中式SDN还是分布式SDN,都围绕着灵活易用的特征。在典型的公有云中,SDN设备完全基于x86服务器平台,运行开源的Linux系统,目前在云计算/开源领域中有大量此类应用模型可供选择。

相较传统服务器一台一个IP的应用模式,云主机也随着x86平台性能的提升得以在一个盒子里支持更多的虚拟主机IP。目前最新的至强处理器E5 2699 v4可以提供88线程的强大计算性能,也许在2016年内,我们就能看到一台物理设备提供超越一个网段的虚拟主机数量,这反过来对SDN也提出了更高的要求。

强调性能的NFV

SDN源于数据中心,而NFV则是由电信运营商提出的方案。电信运营商的每一次转型都带来大量的机会,今天的运营商趋向提供越来越多的网络服务,这些复杂化的网络服务需要大量的专有硬件来支撑,但是随着网络服务的细分和变化,传统的网络硬件设备带来了大量设备投入,背后是资本和能耗的挑战,可是用户端的驱动模式随时会带来新的应用,显然这不是一个单纯依靠硬件就能完成的任务。NFV就是用标准计算平台的虚拟化网络技术来解决多种网络应用如何融合数据中心的技术,利用高性能的x86服务器、交换机等数据中心的设备,使用开源软件自定义网络功能,应用于数据业务应用。

图注:在基于最新的英特尔至强处理器E5 v4产品的服务器平台中,利用DPDK技术,可以提供25倍于上一代x86数据包处理能力,而这一切都是免费、开源的,全面支持虚拟化应用。同传统软件供应商习惯于用软件来解决一切问题不同,英特尔更擅长将软硬件统筹考虑,硬件擅长的事情移交给硬件完成,而软件只需要使用一个API来驱动硬件设备接口,这就是软件定义,硬件加速的原力。

相比SDN的高度灵活和可管理特性,NFV则更看重性能和应用能力,因此我们在二者的配置上就可以看出明显的不同。SDN对设备硬件需求较低,往往配备单块10Gb网卡就可以满足需求;而NFV承载着运营商的业务,对计算性能、内存容量,特别是网络吞吐能力都有极高的要求,现在电信运行商业务中的NFV设备往往都有4块以上的10Gb网卡捆绑在一起,甚至有运营商在积极推动100Gb网卡在NFV设备中的应用,而这些都是英特尔至强E5 v4 + DPDK大展身手的领域。

截至到今天,在云计算的三大要素中,计算、存储和网络领域都已经有大量厂商宣布支持使用DPDK来提升系统性能,减少基础x86系统的额外开销,增强云计算整体实力。当云计算基于开放的x86+开源的系统,在软、硬件一体化应用的道路上提供了Hybrid模式的时候,软件定义、硬件驱动的云计算新时代就揭开了新的篇章。

原文发布时间为:2016-04-01

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

软件定义 硬件驱动,云计算的Hybrid时代相关推荐

  1. 【SDN】软件定义硬件

    本文目录 前言 软件和硬件的定义 "软件定义硬件"的定义 CPU,软件和硬件解耦 CPU的软硬件定义 软件定义硬件 软件定义网络SDN 1)运行于CPU的软件虚拟交换机 2)数据面 ...

  2. 硬件定义软件?还是,软件定义硬件?

    文章目录 **1 软件和硬件** **1.1 软件和硬件的定义** **1.2 "硬件定义软件"和"软件定义硬件"的定义** **1.3 CPU,软件和硬件解耦 ...

  3. 把握云计算+引领云时代

    把握云计算+引领云时代 中国电子学会理事长,原信息产业部部长吴基传精辟地总结了"云计算"存在的四大理由:"全球数字传输网络有足够的带宽,计算机有超高速运算和超级存储能力, ...

  4. 单片机at指令解析 开源_分享Github上几个开源单片机硬件驱动库

    Github上的项目基本上以软件为主,硬件的很少,优秀的硬件开源项目更少.单片机的开发中驱动模块化带来的好处是移植方便,不依赖于硬件,但是与裸机开发相比代码复杂不易理解.所以驱动.组件等封装的功能完善 ...

  5. 在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序(2/2)

    在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序(2/2) 升级硬件固件 在安装了升级硬件固件所必要的驱动程序后,就可以升级硬件固件了,在下载的硬件驱动和相关程序 ...

  6. [转贴]制作windows 2003自动安装盘-集成补丁/Raid及硬件驱动

    从事网游行业的工作人员,如果一款游戏上线,必须上大量服务器.用品牌机引导盘装系统,再打个补丁,速度真让人不敢恭维.为了提高效率,就尝试制作一张集成系统补丁/RAID及硬件驱动自动安windows 20 ...

  7. Linux下的硬件驱动——USB设备(下)

    Linux下的硬件驱动--USB设备(下)(驱动开发部分) 文档选项 打印本页 将此页作为电子邮件发送 未显示需要 JavaScript 的文档选项 级别: 初级 赵明, 联想软件设计中心嵌入式研发处 ...

  8. intel x520网卡驱动_手工编译linux桌面内核(二)——硬件驱动的配置 下篇

    前言: 前面的方法讲完了,接下来我们来看看实例(我自己电脑的配置). 这里我只打算列出几项重要的驱动配置来,其它的请自行查阅gentoo wiki! 再次强调,这是我自己电脑的硬件驱动配置,不可能完全 ...

  9. 3D打印机硬件驱动-马林固件最新版本2.0.X中文注释(1)marlin 2.0.9.2 截至发稿时间2021年12月16日

    马林固件最新版本翻译注释 /*============================================================================== Marlin ...

  10. 用ESXi-Customizer 为ESXI镜像加入硬件驱动

    一.下载并解压ESXi-Customizer软件: 二.点击"ESXi-Customizer"执行文件,打开软件: 三.在弹出的窗口中,第一个Browse选择原有的ESXi的镜像位 ...

最新文章

  1. js设置div透明度
  2. windows修改mac地址表
  3. gentoo.tw的临时解决方法[转贴]
  4. 倒出mysql库命令行_mysql命令行导入导出数据库
  5. Docker创建虚机和swarm
  6. python pprint_【Python】输入和输出
  7. [译]Javascript中的闭包(closures)
  8. 50道编程小题目之【多位数求和】
  9. Linux服务器的攻防技术
  10. [转载] Python中协程的详细用法和例子
  11. Python学习笔记--CSV模块读写数据(转)
  12. matlab 点太多,matlab输出参数太多
  13. pythonpost请求json_将JSON字符串作为post请求发送
  14. java数字与大写字母转化_数字 和 大小写字母之间的转换 10进制和26进制之间的转换...
  15. 计算机怎么在表格里打勾,怎样在Excel输入对号√,Excel单元格怎么输入对号(方框内打勾)?...
  16. 【C语言每日练习】——3.回文数、特殊回文数(三种方法详解)
  17. 第一次在win10的系统上装oracle 10g 的服务端和客户端遇到了一下两个问题,在这里记录一下。。。。。。
  18. win7网上邻居_win7系统关闭电脑端口的操作方法
  19. C++程序设计之客户消费积分管理
  20. CAN总线和CANOpen协议栈总结

热门文章

  1. 计算机网络基础知识点总结
  2. java.sql.Date.valueOf处理日期格式IllegalArgumentException异常
  3. InfiniBand -- 无限带宽技术(简称IB) 基于 Ubuntu 16.04 安装 IB 驱动
  4. 魅族16Xs评测:集“够用”与性价比于一身
  5. 看看雅虎助手是如何“兔子”和“360安全卫士”的
  6. linux安装硬盘安装教程,LINUX硬盘安装方法
  7. java kindeditor ssh,typecho KindEditor插件
  8. 常用IP扫描工具整理一下
  9. 用CAJViewer识别图片文字
  10. 乖离性暗机器人_乖离性百万亚瑟王超弩级暗机器人复刻攻略分享