存储技术之云存储

目前云计算、云存储、云备份等技术可谓是铺天盖地,其中不乏有很多是浑水摸鱼的,本来没有多少云的性质,只是打着云的旗号来炒作而已。

目前市场对一款产品是否是云,没有明显的界定。因为云本来就没有一个标准。

云的是怎么来的

国外在指代一堆设备的时候,一般使用Cluster这个词,而中文翻译一般是“簇”或者“集群”。云这个词来源已不可考,也许是某个人在讲授PPT的时候,顺口说了一句"The Servers in the cloud"的吧,这样Cloud这个词就诞生了。

对云的几种认识

目前人们对云的认识基本就有4种不同的观点:云即设备、云即集群、云即IT系统、云即服务

云即设备:

这是最原始的观点,也就是所谓的云只是指代一堆设备,因为没有设备的支撑,哪来的云。

云即集群:

光有设备还不行,还需要这堆设备有机的联系起来,相互协同,对外呈现为一个集群,这是在“云即设备”上的一次发展。

云即IT系统:

上面说到的集群,也只是一堆服务器放在一起,可以协作,若要进一步发展,需要加上软件作为灵魂,比如某企业的IT系统。

云即服务:

IT系统一般是用来支撑企业的业务的,但是我们能不能通过他来盈利呢?这就涉及到商业模式上面了。主要有如下几种模式:

直接卖了:

如果像卖房子一样,受众很小,因为需要购买一整套IT系统的人很少。

租出去:

这就如同租房子一样,受众相对于卖房子大很多。但是盈利慢

利用IT系统来运营某种业务,用来赚钱:

这种方式受众更大,像邮箱、网页、博客,几乎全民都是客户,所以盈利面很大。这样看来,能提供某种形式IT服务的一整套IT系统都是云。从这个角度,所有的互联网运营商,比如各大网站,都是云运营商。

给云下个定义

那么云目前最主流的定义是啥?

上面提到过,设备组成集群,集群搭上软件称为IT系统,IT系统用来服务,好了我们可以把之前的观点结合起来下个定义:

云是一个可运营的IT系统,

但是这个定义缺少最关键的东西,就是资源迅速灵活地部署和回收。所以云当前最主流的定义为:

云是一个智能IT系统,它是:

可运营的

可以迅速灵活部署

可迅速回收资源的

也就是

云是一个可运营的,迅速灵活部署和回收资源的智能IT系统。

那么云应该具有如下性质:

云提供商拥有一定规模的硬件基础(计算、存储、网络)

作为服务进行交易,而不是实物交易,客户只是租用资源

也就是云其实是一种商业模式,如果认为只有底层使用了硬件集群和虚拟化技术的系统才是云这种观点是非常狭隘的。

谁催生了云

谁催生了云?当然是需求

传统IT的问题

互联网以及智能终端的普及,让信息得到了爆发性的增长,那么对IT基础架构(计算、存储、网络)来说,正在快速被饱和。

我们可以看看传统IT怎么运作的?比如运营商部门分析出网页游戏业务会有20%的增长,所以需要扩容,比如增加Web服务器、数据库服务器、存储系统的数量或容量,然后需要采购设备,遵循一系列的流程,这样周期非常的长,甚至慢于业务的变化周期。

但是另外一个部们的在线视频业务因为业绩不好,利用率不足60%。

当然最原始的想法是将在线视频业务的的40%余量分配给网游部门,不过会存在大量的技术风险。比如两种业务部署在同一个操作系统,会增加业务的粘度,不利于运维,然是如果把业务部署在不同的服务器上,更不利于运维。

加上现在数据中心中存在不同的协议、不同厂商的设备,如果靠手动来部署、管理和回收资源,效率低而且容易错,业务上线的速度也不快。

我们总结一下,传统的IT系统存在三个问题:

业务部署周期长

资源不能充分回收利用,存在孤岛

手动部署无法满足需求。

这就痛点。

云其实是商业模式

不过上面的说法只是云诞生的一部分理由,实际上最初的云,实际是一种商业模式,当商业模式与计算机技术结合之后,才产生了云这个代名词。这也是云没有外在的像技术一样严格的标准的原因。

系统架构变化

要解决之前提到的业务部署周期长,无法实现自动化,资源不能方便的回收和复用等,最容易想到的技术手段自然是虚拟化。

服务器虚拟化,即虚拟机系统,充分利用了资源,再加上Vmotion,DRS(Distrubted Resource Scheduler)等技术,极大的增加了部署灵活性和资源均衡性。

我们来看看部署了虚拟机以后对之前的问题带来的变化。

资源充分利用问题:旧业务余量会自动回收,新业务所需的应用可以直接以虚拟机的形式部署在物理机,因为操作系统各用各的,粘合影响得以避免。

上线业务周期长的问题:部署虚拟机消耗的时间比物理机少了很多,上线速度加快

手动部署问题:使用一种资源自动化分配和回收平台来解决自动化部署问题。

那么所谓虚拟化,其实就是在传统的数据中心上加上一个弹性层,这样整个数据中心就变成了软数据中心了。

如果还能做到部署回收自动化、可度量化、服务化、可运营的数据中心,则就是一个云数据中心了。

综上所述,云系统中重要的角色有:

虚拟化

集群化

自动化:实现资源自动部署、调度、分配、回收的管理者

对内可以与其他组件进行通信,管理资源

对外可以响应业务部署的需求,并且将这些需求转化为对内的资源调度

这个模块综合起来就是“自动化”。

可度量化:

也就是用户用了什么资源,为期多少时间,耗费多少成本,毛利率几何,报价几合可以精确度量、定价。

纵观云发展的过程中,说不清到底是先有云这种商业模式还是先有云这种技术架构的,两者其实是相互催生、相辅相成。

回顾存储系统的技术发展过程。

最开始的时候,存储系统只需要关心数据存储,只要提供一块空间,怎么管,怎么用,底层是不关心的,

后来,存储系统开始注重数据管理,开发了诸如快照、重删、容灾等功能。

再后来,又到了数据运营阶段,还关心数据怎么用的问题,此时需要更贴近用户的应用,注重业务展现。

公有云和私有云

现在我们已经有了一个云化的数据中心了,那么可以按照数据中心的是对企业内部开放服务还是给任何人开放服务来分为私有云和共有云:

私有云:数据中心对企业内部开发,提供云服务,比如存储空间申请、企业应用系统的快速部署等。

公有云:对外营业,通过互联网提供各种云服务。

私有云让企业IT部门角色转变

传统的IT部门是一个支撑部门,始终处于业务部门的牵引之下,所有的采购、经费申请必须以业务需求为前提。

那么怎么提升IT部门的地位,只要也得与业务部门处于平等的地位。云中的“服务”两字正好满足了这种需求,比如IT部门可以通过建立规范的资源申请流程,然后建立电子工单审批系统,只有通过审批以后才提供对应的服务。还可以统计某个部门在某段时间内使用了多少IT资源,消耗了多少成本。

这样IT部门成为一个独立的服务角色,其他部门向IT部门申请资源的时候,是以协商的态度而不是强势的牵制的态度,而且因为资源可度量了,IT部门可以做出合理的预测,申请后续经费等资源变得更有说服性。

公有云受制于互联网带宽发展

如今互联网的接入速度还是比较低的,大量用户的速度还是1Mbps,也就是只有100KB/s的吞吐量的接入速度。此时,若给他一个iSCSI协议访问的存储空间是不现实的,最多提供网盘这样的上传下载服务。

常用的SaaS服务(网页、聊天、视频、网盘等)基本上可以基于低速网络,但是IaaS就困难了,比如访问虚拟机的时候,如果不是用xshell这种方式,而是使用虚拟桌面登录,1Mbps非常勉强。而且,如果要安装软件,还得把安装包传上去。

综上所述,云目前最能被广泛推进的地方就是新建数据中心,企业兴建私有云,运营商兴建混合云

云系统架构及组成

下图为云具体的架构:

分为如下几个层次

物理架构层:比如供电、散热等

基础IT架构层:包括网络、存储、服务器等

需要注意的是这些服务器与存储设备不是孤岛,他们会组成集群,上面搭载虚拟化,并进行自动化的管理。

基础架构/集群管理层

有了集群还不够,需要在上面覆盖虚拟化层来增加系统的弹性。

对于服务器就是VMware这样的虚拟机平台。对于存储,就只能分布式文件系统或者分布式卷管理系统才能满足这种需求。

资源部署层:

现在我们已经可以得到一个网络、服务器、存储的集群,还需要一个用来管理和驱动集群的角色。

比如VMware的Vsphere可以进行计算资源的包裹,分布式系统可以进行存储资源的包裹。

利用VSphere提供的Vmotion与DRS可以将虚拟机在集群节点中灵活移动,自动资源动态分配和回收。

中间件层

应用层与资源层需要一个中间层来适配,这就是中间件层

应用引擎层

这一层需要提供一个通用的业务开发平台,可以实现统一发布。

业务展现与运营层

现在数据中心的架构已经具有集群化、虚拟化、自动化的形态了,但是这只是对自己有用,对用户来说,他们不用关心底层用不用集群或者虚拟化,只关心是否能得到快速的服务和响应

所以我们还需要一个业务展现界面,这就是云服务。

那么出租数据中心其实可以在以下几个层次中进行:

基础设施即服务(IaaS)

所谓基础设施指的是云系统中的硬件设施如服务器、网络、存储。所以IaaS只是提供硬件平台,具体的计算任务由用户自行部署。

如何卖存储空间:

可以有多种方式,比如卖裸空间、文件存储空间等。

裸空间就是最终用户看到的是一块硬盘,所有协议当然首选ISCSI,以便跨越IP网络,这样用户可以通过ISCSI Initiator连接云提供商的ISCSI Target,然后就可以获得多个LUN。

对于云中存储系统,精简重删这些特性应该是必须的,可以降低不必要的空间占用,而动态分级可以进一步节省存储成本。

如何卖服务器、虚拟机

虚拟机平台需要考虑几种功能:

一是动态迁移,即虚拟机可以在不影响应用系统的情况下在物理机之间进行迁移。

二是资源动态分配调度,

三是管理方便。

Amazon在IaaS提供两个产品:弹性计算云(Elastic Compute Cloud , EC2)和简单存储服务(Simple Storage Service ,S3),分别对应了主机计算集群和存储集群

平台即服务

相对于IaaS,PaaS屏蔽而不出租基础架构,转而出租更高一层的软件平台。用户可以通过这个平台制作应用。因为这个平台是一种运行与硬件集群中的软件,用户实际上相当于租用了计算业务。

软件即服务

SaaS是云服务中的最外层,直接出售业务级别的内容。比如Web网页等。

实例说云

下面使用3Tera Applogic的例子来说一下IaaS层

3Tera的IaaS平台名为Applogic,是一不可以实现IaaS功能的软件虚拟化平台。我们可以看一下它的底层架构:

主要分为4大层次:

硬件层:

本层包含服务器、存储、网络设施等。

Applogic不要求底层存储必须是基于SAN的,可以是本地IDE。若干服务器通过千兆以太网连接起来,形成集群。

然后在这个有限且分配不灵活的资源池上,实现一种管理方便、使用方便、资源灵活分配的虚拟化层。

分布式核心虚拟化层(Applogic OS):

计算虚拟化:Distributed Virtual Machine Manager(DVM)

本层的核心是虚拟机技术,通过Hypervisor引擎来虚拟化成多个主机,比如说VMware的ESX Server就是实现这个目的的。只不过Applogic使用的是Xen虚拟机平台。

存储虚拟化:Global Volume Store(GVS)子层:

Applogic使用的是自研分布式文件系统,在这个文件系统之上虚拟出Volume,而且Volume可以Mirror、Clone、Snapshot等。

每个Volume在多个物理主机上有镜像以解决HA问题,并且可以提升读性能。

而这些Volume对于最终的虚拟机就是裸磁盘,在这个虚拟化层上,每个节点将自己的本地存储空间贡献出来,所有节点的存储被整合起来进行虚拟化。

网络资源虚拟化:Logical Connection Manager(LCM):将物理网络搞成虚拟网络

一次性基础设施虚拟层

所谓一次性基础设施,其实就是虚拟机可以按需创建。每个应用程序可以分配一个独立基础设施,包括防火墙、负载均衡、Web服务器、数据库服务器等。当要删除应用程序的时候,可以直接把虚拟机删除了。

这些角色可以虚拟成一个个对象,在图形界面使用鼠标拖拽的方式建立对象

上图创建了一个防火墙、负载均衡、2台Web防火墙、数据库服务器,整个网格中的Volume按照Application进行隔离,不同的Application只能看到自己的Volume。

防火墙、负载均衡、WebServer之间互联的IP用户不需要关心,系统自动分配,唯一需要配置的是整体Application的IP地址信息。

网络控制层和应用程序管理层

以Application为单位向用户交付。

Applogic带来的革命是把复杂的底层硬件变得简单,通过拖拽对象来状态自己的基础架构,最终以适合某中Application运行的整体服务器&存储&网络来交付。

云的缺点

在看云的缺点之前先看一下云的优点:

避免资源的浪费:

节能

角色转变

存在的问题:

稳定性和安全性:如何解决两个存储资源互通的问题,如何才能保证完全隔离。

平台迁移

怎么样才能在不影响业务的前提下迁移到云平台上。

不兼容的问题:不同云服务商提供的架构不同,接口也不同。

云之后的发展

云的本质

云本质是一种服务,而不是一种物质,正因为此,它必须基于物质才能显示功效,《易经》有云:“形而上者谓之道,形而下者谓之器”。所以下器者,谓之服务器+存储+部署管理软件;上道者,谓之“云”。所以云是一种道,是一种方式和方法,而不是某种设备,某个软件,当然云需要由硬件+软件来承载而已。

所以,云和速度性能没有直接关系。云本身不一定就是一个高速高冗余的东西,而是说底层硬件一般使用并行计算集群和存储集群,在这个基础上,云才能表现出更大的效能。

而且云也不是为了提速而生,它的主要目的是廉价高效的利用资源并降低硬件的应用成本和管理成本。

其实云早就存在了,只有近两年才被炒作起来,互联网服务器就是云服务,所以有人提出IT服务即云,Everything as a service。

其实在40年前,我们还是用集中分时计算,随后到了世纪相交的纪念,用户各自购买基础架构进行计算和存储,然后又逐渐回到了集中计算的时代,实际上这既不是进化,又不是退化,是“分久必合,合久必分。万物皆在轮回中不断发展,到一定程度就回到当初的形态,但是承载它的物质是连续不断的提升的。所轮回的只是其上的那层能量,谓之道。

Micro、Mini、Normal、Huge、Grid弹性数据中心

弹性核或者软数据中心:将若干刀片与高密度的磁盘柜以及微型交换机打包到一个或者几个机柜里面,再覆盖以弹性层,比如虚拟机管理系统以及分布式存储系统,将这样一个微型弹性软核心做为一个可提供IaaS服务的整体交付给用户。

或者再在这个软核上覆盖一层业务展现于管理层,直接交付到SaaS层。一柜或者数柜交付的弹性基础设施,可以称为Micro Cloud

参考

《大话存储》

如何构建线上线下一体化AI PaaS平台

构建AI平台的技术挑战

在AI落地之前,大部分企业首先会面临的第一个挑战就是基础环境构建的复杂性:AI框架的多样选择,环境的诸多变量、硬件的诸多变量以及底层数据存储的诸多变量。以上这些交叉组合之后直接导致了一个情况:如果需要构建完整的一套软硬件组合的系统,而每一条业务线都有不同需求的时候,多环境维护就会变得异常痛苦。其次,需要在AI系统建设时考量算法的兼容性、平台的扩展性、弹性伸缩的能力、容灾能力等以应对平台的横向和纵向扩展。最后一点也是现在普遍出现的挑战,即公有云和私有云如何整合开发。

AI平台技术挑战的解决思路

针对以上三大技术挑战,主讲人UCloud AI平台技术专家 宋翔博士向参会者提出了他的五大解决思路。

环境分离。首先是算力的分离,通过整个容器技术将CPU、GPU等环境给统一化,用户只需提供对应的容器。其次,针对GPU、CPU对应的不同硬件封装全部由系统去处理,这样的益处在于对于使用者而言他所需面对的只是一个容器。同时,UCloud在底层也专门做了一个数据接入层,这个接入层会把大量各式各样的数据统一成本地存储和NFS。这样处理之后,使用者可省去关注大量存储接口接入的工作,这也是整个环境分离的一个核心思路。容器分离的优势在于使用容器之后,每一个任务其实都是独立的运行环境,所以不同任务之间不会出现软件冲突。第二,UCloud会提供很多预装的容器,所以企业/个人可以节省很多环境准备的开销支出。此外,对于容器来说,企业/个人可自由安装各类软件包,封装各类算法。容器同样也可重复使用,基于某一个容器去做自己的分支,打包不同的算法进去也未尝不可,可重用性很强。最后也是比较突出的一点是容器镜像可以在任意类型节点运行。GPU的容器可以在任意GPU的节点上去跑,CPU的容器也可以在任意的CPU节点上去跑。这使得每一个镜像均可以在不同的环境中运行,这样的兼容性和通用性在真正实际应用部署过程中优势突出。

环境分离的第二部分是数据接入。我们团队在整个平台设计过程中的理念就是让使用者专注于业务程序的编写,其它如接口转译、带宽控制、权限控制等交由一个软件接入层去管理。这样的好处第一,计算节点不需要支持各种存储接口,仅需要通过2-3种(例如本地存储、NFS)接口就可以对接各类存储类型。第二,通过扩展数据接入层可接入的存储类型,就可以扩展AI平台的数据接入类型。第三,数据接入层可以做数据流量控制,确保各个任务的SLA,同时对后端的数据存储系统进行带宽、流量保护。第四,整个接入层还以做一些权限控制,以便不同的人共享资源时确保数据安全性。

分布式化。分布式化首先解决了节点宕机的问题,可做到容灾。其次可做到资源共享。以UCloud的AI训练服务平台和AI在线服务平台举例。训练平台的核心就是管理GPU资源,我们做一个桥梁把用户的算法和数据进行一个连通,这样一来,对于任何任务在任一GPU节点上去运行的时候,它都能访问自己的数据。企业/个人无需关心数据获取的来源、打通方式及维护GPU节点或集群,这些工作将全部交给平台管理。而在线推理平台,对于使用者而言,则只要关心业务的逻辑开发,开发一个单节点能用的AI服务即可。平台会负责做负载均衡、容灾、管理任务、弹性的扩(缩)容等工作。

模块化。调用资源时我们团队做了一个适配,即企业/个人既可以使用UCloud自己的资源管理平台也可以用K8s或是OpenShift。此时你会发现整个平台可以对接不同的资源管理系统。我们使用资源管理系统的目的是让它能管理资源,给到使用者资源状态的反馈。同时实际任务的调度和下发都由核心平台去做。这样,整个平台系统就变成了三层结构,最上层就变成了一个灵活层,实现快速对接各种各样的不同软件环境。这即是前后分离。

可扩展性。在完成上述操作后,整个系统的扩展性会非常强。如果有增加新的存储模式或者扩容存储的话,企业/个人的开发只是在数据封装层,无需开发到应用里去。对于整个集群而言,因为所有任务已经全部分布式化了,所以可以快速地部署第二个第三个集群,平台甚至支持对一个集群进行快速扩充。

资源共享。通过之前的原理介绍,想必大家不难发现我们UCloud开发的这两个平台其实就是一个平台。CPU集群、GPU集群、存储集群均是可以共享的。这两个互通平台甚至可交付给几百几千人共享资源,资源的使用率就这样被大幅提升。

原理介绍之后必然是实践,UCloud AI实验室在过去的两年分别构建了公有云AI平台和私有云AI平台。下面是这两个平台的构建方法简述。

如何构建公有云AI平台

公有云的AI平台是基于UCloud自己的公有云产品线上构建的,完全是在UCloud的云主机或者物理云主机上搭建环境,用的容器及负载均衡也都是UCloud本身提供的服务。整个系统的架构如下图示:

UAI-Train的底层对接所有存储, GPU资源像一个池子一样被管理起来。平台同时支持分布式训练、单接点的训练以及交互式的训练。所有的训练对于用户来说,可能只是一个任务,但平台会根据不同的训练需求及所需的资源需求去适配不同的硬件设备,去协助完成这一任务。而UAI-Inference展现给用户的则是一个图形界面,包括服务的请求数量、客户到底调用了哪些应用、计费信息等。但底层的如APP使用了多少节点、是否需要做扩(缩)容等都是平台自行处理。整套系统全部是容器化的,可以做很多封装。并且我们也提供很多开源系统的镜像包括开源算法的在线服务镜像等,这些镜像就像是案例,如果企业/个人需要快速去验证部分应用的话可直接拿去使用试验。

UAI 公有云平台也具备了很多功能:1、自动调度。平台会依托整个UCloud的GPU资源池,提供足量的GPU去跑任务,由系统自动选取空闲的节点。如此一来,当没有任务提交的时候也不会有任何的成本开销。2、强扩展性。当后台运营期间发现整个GPU的需求量上升的时,UCloud GPU资源池里的资源可扩展到平台里去,同时平台也可对接UCloud自身的海量存储资源。以确保训练任务的正常执行。3、负载均衡。在UAI-Inference里,用户部署的APP或者其它应用,系统是会自动协助做负载均衡。第一层从交换机开始做,中间有我们UCloud的负载均衡器(LVS、ULB),再下一层是调度算法,协同将所有任务打散至各个计算节点上去。如遇节点挂掉,系统将第一时间帮助用户去补足量的节点。4、高可用的容灾能力。整个系统会部署在多个Set里面,如果业务量和节点数较多时,会被打散在UCloud不同的可用区里面,哪怕某一个机房出现断电或者拥堵的情况,另外一个机房的节点还能够提供部分的有损服务。5、基于秒级/分钟级的计费规则,按需收费。我们团队将计费从传统的按年按月按小时的计费方式直接缩成了按分钟或者按秒的计费方式。对于用户而言,无论是使用UAI-Train还是UAI-Inference,,每一分钱都是用在刀刃上的,无需担心大量前置资源的浪费。任务一旦结束,计费也就停止了。

如何构建私有云AI平台

其实,私有云的AI平台构建部分与公有云很相似,从下图中我们不难看出核心层几乎是一致的。底层依赖的资源也依旧是CPU与GPU。

发生变化的是接入层及上层界面。最重要的变化是权限管理、资源管理和数据管理这一块即与用户的私有云做整合,按照UCloud的API去开发,使用户整合出一套自有的权限管理或者账号管理体系,包括存储体系也是这样去操作。另外,现阶段开发的私有云平台版本是基于超融合技术。如此一来,在私有云上去部署算法和应用就变得非常容易,用户只需要把算法推到算法库,然后算法库可以利用AI平台把算法部署到AI平台上去。同时这个超融合平台还自带容器平台,容器平台可以部署一些接入的容器,即业务容器。使得业务容器和算法容器通过内网的连接打通,变成一个服务。私有云AI平台与公有云平台一样具备很多优势:1、提供预置AI基础环境。包括NVIDIA GPU驱动、Cuda、TensorFlow/MXNet等框架。用户无须进行复杂的环境安装、配置工作。2、提供一站式AI服务。包括AI训练平台和AI在线服务平台,用户无须自行搭建复杂的AI平台。3、系统可自由横向扩展。可以根据需求规模自行定义。4、纵向扩展力强。用户可自由对多种计算、存储、网络资源类型进行选择合适组合。5、可快速定制用户账号权限、资源管理等功能。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181216B019JL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券