论坛1 | 数据时代的技术与应用 徐伟 「PCIe、SSD 在云业务中的应用」



  • 时间: 2016年7月28日
    发言人: 宝存科技技术总监 徐伟
    主题: PCIe、SSD 在云业务中的应用


    大家下午好!

    0_1470381747932_upload-b4d34ef7-7e22-4910-abb2-f341fa77c7fd

    先介绍一下宝存公司,我们是一家上海公司,做的是企业级的SSD存储。之前的几位嘉宾所在的公司,他们的供应商是青云。我们的角色正好相反,宝存公司正好是青云的供应商。作为本土的企业级SSD供应商,上半年提供给用户的闪存出货量超过100PB,1PB=1000TB,1TB=1024GB。在中国的闪存市场上,这个出货量是属于天量。

    0_1470381770353_upload-acc13119-a9e9-40fe-b673-0b8954803e8f

    今天我们讨论的是跟云业务相关的话题。国内经常见到的云是两个部分,第一部分是IaaS,第二部分是PaaS。这两条业务线在目前的SSD市场上还有相当大的增量。根据某国际机构的预计,从2015年开始到2020年,IaaS市场和PaaS市场至少会有1倍的增幅。在中国这样云服务市场还没有固定的地方,一线、二线的云服务提供商还都没有确立,很多公司可以做到比这两倍更高的增量,青云的势头一定会更猛,2、3年内就可以实现,不需要等5年。

    0_1470381788999_upload-8abd1249-543c-4ec1-b66b-2cc6c7f88d16

    分别简单看一下这两块目前的状况。IaaS是给用户提供机器,公司购买的机器是云主机,虚拟机。虚拟机是对主机的CPU、内存、存储的瓜分。目前的CPU、内存可以做到很大,存储不够分。一个机器按照内存和CPU来分,也许可以分出几百个机器来,都可以满足应用的需求。但如果真的在这个机器上跑几百个虚拟机,存储就动不了了。一个IO下去,迟迟返回不过来。数据库应用就认为存储已经挂掉了,自己就会先崩溃掉。

    0_1470381802956_upload-a29526f8-76c4-4068-a734-fdea1c67728f

    PaaS实际是一个应用容器,目前见到最多的是数据库应用,在云服务厂商这个被称为RDS关系型数据库系统。关系型数据库系统中最主要的应用模式是OLTP型应用,类似于交易类的一种应用。比如在我们做测试,或者是评估数据库性能的时候,所用的测试就是类似于这种模拟大型零售机构在前台零售、后台调货供应链的过程中,客户购买了商品,然后补货、工厂发货、物流,在这个逻辑下的数据库计算。它的特点是单个请求和IO比较小,但操作请求非常频繁。在这样的应用下不是说存储吐出多大的数据就可以承载这个业务。实际上我并不需要太高的流量,而是这个存储可以让我在短时间内进行非常频繁的小片的操作。

    0_1470381820315_upload-dbaed458-536c-4708-80e9-d7fa4f131112

    为什么目前会造成这样的存储瓶颈?我们知道计算机产业存在摩尔定律,在同样面积的芯片上,每过18个月,半导体的性能会翻一番,同时成本会减少一半。相对来说,它的成本是变成了原来的1/4。CPU和内存都属于半导体设备,最近这50年,它的价格变化都是遵循摩尔定律的。尽管现在半导体工艺的制程特别小,电子之间距离特别近,干扰特别大,在这种技术特别困难的情况下,我们的工程师仍然还可以解决这样的问题,让这个摩尔定律持续维持下去。

    但是,机械硬盘就不一样了。这10年只提升了2倍,相对于CPU的100倍简直就是没有提升。前些年因为垂直技术的产生才勉强把硬盘容量提升了2倍,性能上远远达不到2倍。

    闪存也是半导体设备,它可以遵循摩尔定律。由于近几十年半导体技术的发展,闪存所用的工艺比CPU和内存更先进,很快跟上了CPU的发展速度。以至于现在如果使用SSD的话,很可能计算机上就不存在瓶颈。

    0_1470381841808_upload-e8b41df2-2333-4832-b903-329159690040

    SSD有两种,一种是早些年出现的SATA SSD,另外一种是PCIe SSD。PCIe SSD正是我们宝存公司主打的路线。SATA SSD的性能大概是传统硬盘的100倍,PCIe接口的SSD其性能是SATA的10倍,是传统硬盘的1000倍。也就是刚才提到的数据库问题中,如何在同一时间内做足够多次数的操作,在这样的性能指标上有1000倍的提升。

    IaaS和PaaS是云数据中心最典型的两种应用模式。这两种模式有一个共同的特点,它们的读写请求都是随机的,有着非常显著的随机化特性。比如说对于数据库来讲,可以假装有一个数据库,是所有人在一个地方工作。这张表生成以后,人的名单就是那么长,但每个人每跳槽一次,我需要更新一下某个人在别的公司工作了。大家跳槽是没有规律的,甲跳槽以后,不是乙再跳槽,不是顺序读了。某个人在哪个时间跳槽了,我需要更新他的工作状态,这个表是随机的,传统机械硬盘查询起来非常困难,它需要通过机械摇动磁头寻找数据。

    0_1470381862369_upload-eea834e7-1fc2-4ffe-8c94-4053ec0df0cf

    虚拟化这边,对于一个宿主机,上面运行很多虚拟机,主机并不知道虚拟机运行什么业务,刚才提到的很多技术,比如Nginx,或者数据库,或者大数据挖掘,这些应用的IO模型是不一样的。也许其本身IO是有规律的,但是,这些机器共同处在一台物理机上,IO是杂乱无章的,完全随机的。就像一台搅拌机一样,原来有过的东西,经过搅拌变成了一滩混水。我们需要快速处理杂乱无章的IO,这就需要闪存来解决问题。

    0_1470381876852_upload-861149b6-a066-4c52-8219-8b0a1764b503

    相对于传统的机械硬盘,SATA SSD已经有了100倍的性能提升。为什么在很多场合还是不能使用SATA SSD呢?主要是因为这四点:首先是性能,确实有些应用高到SATA SSD无法承载。比如青云的虚拟机宿主机要运行很多虚拟机,要承载众多虚拟用户的重负载,SATA是无法承载的。另外,一台主机上可以运行很多虚拟机,必然需要很大的磁盘容量。如果用SATA,单张SATA盘,目前最大的是1.92T,常见最大的是1.6T。而PCIe通过两年的量产可以做到6.4T的产品。它们之间的容量是无法比拟的。一台机器可以有更多的可能性运营更多的虚拟机。第三,在数据的吞吐量上,SATA的接口最多做到600M,目前主流的PCIe接口的SSD硬盘是2.0×8或者3.0×4的带宽通道,带宽高达4G,是600M的6倍以上,实际利用率可以达到5倍。最后一点,只有业内部分顶尖的运维人员才会关心到一个特别重要的数据,就是延迟。很多应用都有延迟,最终的决定因素是存储可以做到多低的延时。50微秒到10微秒的差距并不是5倍的差距,可以认为是好几个数量级的差距。

    0_1470381895988_upload-b413ffe7-8774-48ad-bc35-f92aad0ea6e7

    为什么延迟这么重要?在计算机界有一个阿姆达定律,就是图上左边这个公式。公式很简单,带入右边的变量可以得到左边的S结果。选取几个典型的变量,有50%的负载、75%的负载、90%的负载和95%的负载可以优化。如果在座有DBA或运维人员,可以想一下你的应用当中真的有那么多是可以通过并行优化来解决的吗?10台机器不行,我就堆20台。如果这样简单就可以解决问题,世界上就会有很多的CTO。并行优化的极限在哪里,可以从图上看出。这个系统里有50%的负载可以通过并行优化解决,对于整个系统来讲,最多只能提高2倍的性能,这已经是极限。

    在并行优化没有办法的情况下,如何做到系统的优化?就是降低每一条路径上从原点到达终点所需要的时间,也就是降低延迟。延迟的要求对于数据库来讲是比IOPS更高的核心指标。

    0_1470381915335_upload-75413f55-9a50-4891-b36d-02bbefb64ec7

    SATA的前三个问题,速度、容量、带宽都比PCIe SSD差很多。很多运维人员可以说用10张SATA SSD就可以堆出10张PCIe SSD的性能来,理论来讲确实是这样的。但是,我们在堆多张盘的时候会选择比如RAID 5的RAID方案,这个方案有两个缺点。第一,你要改一份数据,并不是改一份数据,而是要把跟它相关的成员都改一遍。数据上有一个词叫读改写和重构写。我改这个数据并不是一下子改掉的,需要把其他的读出来再写进去,或者是需要把4个程序源都更新一次。我写了一份数据,实际是被迫多写了3个数据,造成了写放大的现象。写放大就是写得多了,为什么不好?因为对于闪存存储来讲,它的写读寿命是有限的。如果写读量是以前的4倍,它的寿命就是原来的1/4。从成本的角度来说,是个非常大的压力,对于重负载的应用来讲,总不可能用一年就停机,把数据拷出来换新卡。这种现象在SATA堆成的RAID上有很明显的体现。

    从RAID卡到落盘的过程中,有一段时间是无监控的,有可能造成落下来的数据是错的。本来RAID 5可以换一个程序源,通过剩下的程序源把数据算出来。如果有一个数据是错的,算出来的数据就是不对的,这个数据就是永久的都是坏的。这个风险一旦存在,整个数据会完全乱掉,崩溃的时候是无法恢复的。

    另外,组织这个RAID的RAID卡和PCIe SSD一样是处于同级别的设备。RAID卡的性能一般情况下不会高于PCIe SSD。这个卡的性能的瓶颈决定了SSD能堆出来的性能的天花板。我用10张顶级的企业级SATA SSD,原本可以堆出比PCIe SSD性能更高的组合,由于躲在了RAID卡后面,它的作用无法发挥。

    如果我这样做,原来机器上有一个设备要维护,现在这么做,卡+盘就是11个设备,存在了11个故障点。对于运维人员来讲,这是比较难堪的。对于机器比较多的公司来说需要专门雇一个人每天在现场处理坏盘,还得担惊受怕的如果处理不及时,一块盘挂掉,再出现第二块的话,整个系统上的所有数据完全失效。

    0_1470381954627_upload-7c9a8df8-abaf-4bb6-8b0b-160098503345

    应用对于PCIe SSD有这样的需求,它是如何部署的呢?它的应用方式并不复杂,装上去就是硬盘。对于主机来讲,一是超高性的硬盘。在座很多都是青云的用户,在青云上创建虚拟主机的时候可以选容量型、性能型、超高性能型。如果选超高性能型,您就是选择了宝存。超高性能型的虚拟机的文件是直接落在卡上的文件系统上的,这样就可以达到比高端的SATA SSD更高的性能。也就是比你自己买机器、买SATA盘更好。

    高性能硬盘是云企业准备推广的通用做法。用容量型硬盘是用多张磁盘堆起来的空间,空间非常大,但速度非常慢。如何才能让这个大的空间加速起来呢?就是用一种类似于FlashCache的机制,用一张容量小的PCIe SSD跟多张磁盘进行组合,组合成融合存储,可以表现出类似于PCIe SSD的性能,但在某些指标上达不到。对于普通虚拟机来讲,已经可以让虚拟机的速度提高很多倍。这对于云主机厂商来讲,只需要在一个机器上加入很小容量的PCIe SSD,就可以大幅度提升用户体验,也可以运行更多的虚拟机,节约大量成本。在目前这些技术的渐进当中,云主机厂商在不停地降价,这也是原因之一。

    0_1470381977092_upload-87d15232-4c53-4a02-a260-75d87046bee4

    部署RDS系统也是两种方法。第一种是PaaS的,它是提供一个应用容器,隔离的要求并没有那么强。对于主机来讲,它可以直接在卡上运行多个数据库实例,提供给不同的用户,可以让数据库用户用到卡的真实性能。另外一点,还是数据库,但这个数据库是运行在所谓的超高性能硬盘里的,是独立的,相当于整个主机,包括硬盘,都是被用户买断的。这样可以做到性能、安全性、隔离性的平衡。

    0_1470381989544_upload-7dc38b9d-ecc9-43aa-b5e4-ce7bc26c7ae5

    云服务厂商如何跟宝存合作,达到提高效率、降低成本的目标呢。宝存特有的技术可以做到其他闪存厂商无法跟青云合作的优势。基于用户可控的主机构架,我们可以做到为用户做容量的定制。比如市场上能够见到的容量,常见的是800G、1.6T,3.2T/6.4T,用户需求不在这些容量点上,可能想要中间的容量,对其他厂商来讲,出货是有困难的。但是,对于宝存来讲,这个非常容易,甚至用户自己都可以做。我们提供一张盘,它的容量是6.4T,用户可以说我用的是6T,也可以是7T。其他的非标容量都可以非常轻松的定制。

    另外就是性能。对于通用的产品来讲,读性能和写性能是有一个平衡的,或者说是有偏重的。用户在选择这款产品之后,只能根据购买的产品确定什么样的应用、给什么样的压力合适。对于我们来讲,我们可以给用户做读,或者写,或者某种比例的读、写混合这样一种应用倾向的性能定制。

    监控的定制。因为我们是基于主机的架构,性能对用户来讲是透明或半透明的。对于存储上的动作,都是可以开放给用户的。在这种情况下,用户可以向像原厂商一样能够监控到设备的运行状态,能够调节是否需要再加大压力,是否需要减轻压力,是否需要根据业务进行别的联动的调整,这给用户提供了很大的灵活度。另外,宝存有一项特有的技术,可以支持用户在一个单机上,在一台2U的服务器上部署达到40TB的容量。

    这些优势是让目前国内的云服务厂商选择宝存作为闪存供应商的重要原因。

    0_1470382026172_upload-6d5e23e1-2318-426d-85d9-782cb25e0058

    闪存一直在发展,发展到现在出现了一个问题,由于它的制造工艺比CPU先进,它在制造工艺上已经达到了瓶颈。也就是在2015年的技术路线下,容量没有办法在18个月内翻一番。但是,我们又有一个新的技术,叫做3D NAND,把横着放的东西竖过来放,可以放得更多。这种技术让闪存的成本又得到了大幅度下降,容量非常轻松的又翻倍了,而且没有用到18个月。

    对于用户来讲,用闪存更便宜了。对于厂商来讲,我们又能够创造更大的出货量,能够更加坚定地把握市场。

    0_1470382044809_upload-49dcfcf1-b55b-4367-9395-b0ea471dec08

    宝存基于3D NAND将推出的产品,下半年就可以做到单卡12.8T的容量。如果出货的话,应该又是全球第一家,至少领先业界一年时间。当年推出6.4T的时间就已经领先了业界两年。在6.4T产品在用户这里商用了两年之后,市场上才出现了同类竞争对手,他们才把容量做到6.4T。

    基于这个技术,宝存将做得更夸张。到了明年,手掌这么大的一张卡,它的容量会做到25.6TB,性能会达到百万IOPS。在机器里插上一张卡,就拥有了EMC存储柜的性能和容量。

    这些都是用户驱动的。作为存储厂商,我们不会凭空创造这些产品。特别对于云服务商来讲就是需要这样非常夸张的超大容量的产品。因为用户的需求,催生了我们的动力,让我们做出了这样的产品,为云数据中心解决问题,给这个产业带来助力。

    以上就是我今天分享的主要内容,谢谢大家!


登录后回复
 

与 青云QingCloud 社区 的连接断开,我们正在尝试重连,请耐心等待