在采用稀疏分布式内存的超级计算机里,记忆与数据处理之间的差异消失了。记忆成为了感知的再现,与最初的认知行为没有什么区别。两者都是从一大堆互相连接的部件中涌现出来的模式。
--《失控》
计算与存储的融合
摘要:
存储系统的本质,是以对空间的使用换取计算时间的缩短,网络的连接实现了空间与时间的转换。在经历过计算能力的大幅提升,网络能力的快速发展之后,存储能力成为了瓶颈。在研究更快、更高容量的存储介质,构建越来越庞大的存储集群的同时,利用计算能力、网络能力来弥补存储能力的不足也成为未来存储的一个发展方向。对于信息的长期保存,其关键是保证海量数据长期存储的低能耗,以及长期存放数据的可识别,对于数据访问的响应时间并不要求。为此本文认为,大规模数据的长期保存可以用时间开销的增加来换取空间开销的降低,向着“以程序运算为主,数据存储为辅”的方向发展。
1. 引言
冯诺依曼的计算机模型,程序+数据,给人们造成了程序与数据分隔的假象。后续的研究就沿着计算和存储两条路分别进行。一直以来人们普遍认为计算能力的不足是制约计算机应用的关键,大量的研究投入于对计算能力的提升,而忽略了对存储能力提升的研究,造成了计算与存储能力间的巨大差距。如下图所示【引自《深入解析计算机系统》】。
随着信息化的深入,人们越来越依赖计算机,也越来越积极的参与到网络生活中,需要被存储的数据呈现出爆炸性的增长,存储变的越来越重要了。人们的研究开始转向提供大容量、高性能的存储系统,以及高带宽的网络连接。在研究更快、更高容量的存储介质,构建越来越庞大的存储集群的同时,利用计算能力来弥补存储能力的不足也成为未来存储的一个发展方向。
本文将首先论述存储系统的一般分析方法,然后讨论存储的本质,以及计算与存储融合的足迹以及未来的发展方向。最后结合信息长期保存的典型存储应用,分析现在可用的解决方案,以及计算和存储融合下的长期信息保存。
2. 存储系统的分析方法
人们普遍将存储与计算分隔开进行研究、分析、以及产品的设计与开发,将存储定位为实现数据存放空间的管理。本节我们以实现空间管理功能为主的存储系统为对象,分析其基本原理,以及构建和分析一个存储系统的基本模式。
(1) 地址的映射
因每一种存储介质在容量,性能,价格上巨大的差异,形成分层的存储体系,如下图所示。从CPU高速缓存,到内存,再到硬盘,最后到离线的磁带、光盘,每一层存储相比前一层,容量提升、性能降低、成本也降低。
数据存放空间管理,首先是对不同物理存储介质进行编址。然后建立地址间的映射关系。地址间的映射有两方面的含义:一方面是建立不同层次存储介质间的地址映射(站在CPU计算的角度),另一方面是建立从文件、到逻辑卷、直到最终存储单元,比如扇区间的映射(站在用户的角度)。
数据访问,首先将站在用户的角度从文件到扇区获取数据的存储位置,再将该数据逐步调度到内存、到高速缓存,从而完成计算任务。
(2) 构建和分析存储系统的模式
存储系统的层次模型是分析和构建存储系统的基础。由上至下,对于一个存储系统,上层应用的IO trace特征是整个存储系统设计需要满足的功能需求和性能需求。在存储系统内部,较高存储层次对下层存储系统的调用,形成的IO trace特征,是下层存储系统设计需满足的功能需求和性能需求。
同时有下至上,存储介质的特性会制约可构建的存储系统。但我们可以通过组合不同的存储介质,构建出不同存储特性的存储单元。比如,由多块硬盘构建成磁盘整列,其IOPS,带宽都得到了巨大的提升。再比如,利用廉价磁盘模拟磁带的读写特征,形成的VTL。
构建和分析一个存储系统,首先需要充分掌握内部不同存储单元的存储特性,其次需要连接外部应用的IO请求特征。
A. 内部存储单元的存储特性
这里我们对SSD,硬盘,光盘,磁带常见的存储介质进行了对比。可以发现每种存储介质都有自己独特的存储特性。
对比特征 | SSD | 硬盘 | 光盘(蓝光) | |
介质记录原理 | 电子记录 | 磁记录 | 光记录 | 磁记录 |
读写是否为双通道 | 是 | 是 | 否 | 是 |
线性/随机读写 | 随机 | 随机 | 线性/随机 | 线性 |
数据删除方式 | 块擦除(通常含64页) | 512B | 整盘擦除 按Track擦除 | - |
最小读取单元 | 页 | 512B | Track 扇区2048 Byte | 512B |
最小写入单元 | 页(512+16)Byte (20148+64)Byte | 512B | Track 扇区2048 Byte | 512B |
单盘容量 | 100GB为主流 | 500GB-2TB | 25GB-100GB | 500GB-1.5TB |
空间编址方式 | 逻辑块地址到物理地址的映射,线性编址(FTL) | CHS、LBA | MSF、LBA | - |
寻址时间的组成 | 译码等计算时间 us级 | 寻道时间+旋转等待时间+数据传输时间 ms级 8~12ms | 粗寻址时间+精寻址时间 ms级 上百ms | - |
顺序读取速度 | 26MB/S(USB Flash) | 60MB/S(SATA) | 18MB/S(非可擦写盘) | 1008GB/小时 |
顺序写入速度 | 20MB/S(USB Flash) | 55MB/S | 16MB/S | 1008GB/小时 |
随机读取次数 | 1,500 IO/S(USB Flash) | - | - | |
随机写入次数 | 40 IO/S(USB Flash) | 120 IO/S | - | - |
平均使用寿命 | 20年 | 10年 | 50年 | 超过50年 |
平均工作寿命 (可擦写次数) | SLC 为10万次 MLC为1万次 | - | 1000次 | 1000-2000次 |
工作时能耗 (每小时多少瓦) | 忙:2W左右 空闲:<1W | 忙:13.5W 空闲:10.2W 待机:2.5W | 磁盘能耗的1/10 | 空闲无能耗 |
每GB的成本 | 8元/GB | 0.8元/GB | 0.3元/GB | 0.6~1元/ GB |
物理介质损坏后是否可恢复性 | 否 | 是 | 是 | 否 |
接口协议 | SATA、USB | SCSI/FC | IDE、SCSI、SATA、USB | SCSI、SAS、LPT、EIDE |
基本组成结构 | 控制单元、存储单元 | 接口、控制电路板、固定面板、磁头组件、磁头驱动机构、磁盘片、主轴组件、前置控制电路 | 基板、记录层、反射层、保护层、印刷层 | 放大器、磁头、磁带传动机构 |
可用的文件系统 | FFS Flash exFAT、EXT4、ReiserFS | NTFS、FAT16、FAT32 | ISO 9660、HFS、UDF | LTFS |
B. 外部应用的IO请求特征
通过前面的对比,我们了解了不同存储介质的特性。这里分析一种典型IO特征下对存储介质的选择。
数据库应用为典型的高IOPS应用,数据库中的全表扫描是连续读IO,索引访问则是典型的随机读IO,日志文件是连续写IO,而数据文件则是随机写IO。
如表1 所示, 固态硬盘的随机读取速度是磁盘的20倍,这也是固态硬盘相比于磁盘最具优势的物理特性。SSD所提供的极其快速的读操作,这使得SSD成为数据库环境和对读性能敏感的应用程序的理想选择。在这种场景中,数据库目录通常加载到SSD或固态存储上,实现快速的检索功能。
3. 存储的本质
前面的分析,存储系统的功能主要集中在提供对数据存放空间的管理。存储与计算并不是割裂的,只是在计算机发展的当前阶段,存储与计算采用了相互独立的方式发展。
(1) 存储程序VS存储数据
数据存储,是存储前一个计算程序,计算所得的结果。当我们再次需要获取结果时,只用直接从已存储的数据中读取,不用再进行一次计算。所以,存储的本质,就是以空间的使用,来减少计算时间的开销,从而节约信息获取的时间。如果我们将程序也进行存储,当计算能力获得巨大提升的时候,就不用存储那么多的计算结果,当需要信息时再次进行一遍运算即可。
存储程序的概念,很早就被提出。【引自《计算机科学概论》】最早存储程序是为了提高CPU的灵活性。将程序存储后,CPU加载不同的程序将会执行不同的功能。现在,我们也在采用存储程序的思想,比如虚拟机的保存。我们将程序运行的环境虚拟化,以及环境中运行的上层应用程序一并存储,这也是存储程序的体现。
(2) 计算、存储的转化
计算机的发展可以从内因和外因两个方面来看待。计算资源、存储资源以及网络资源是计算机发展的内因。计算机是工具,工具的作用就是辅助用户解决问题,将人从繁重的劳动中解放出来。所以计算机这种工具的发展需求即计算机发展的外因。
计算机发展的内因,计算代表的是时间,存储代表的是空间,网络可以连接计算节点,存储节点,代表着时间和空间的转换。三者间是可以相互转化的,所以如何搭配三者,让三者地效用得到最大的发挥,是构建一个应用的关键。
外因,人们需要的计算服务是丰富多彩。人们希望计算机向着简单化(使用简单),普适化(各种设备的接入),泛在化(无处不在的接入)三个方向发展。简单化,是计算机的使用更加简洁,携带方便,交互自然等等。普适化,指计算机的发展将会使的越来越的设备智能化,机器逐渐具备一定的智能。泛在化,指我们可以随时随地,无时不刻地接入网络。
在不同计算需求下,信息保存,可以是数据,亦可以是程序,数据保存可以是集中,也可以是分散。随着计算、存储、网络资源的发展,在不同的阶段侧重使用不同的资源,以及采用不同的分布策略。
比如,NoSQL数据库的出现。传统的关系型数据库,数据保存进入数据库时被组织成结构化的形式,并建立索引,这样的原因就是为了查找时可以快速、准确地找到需要的数据,减少查找时间以及网络传输的数据量。采用NoSQL数据库进行存储,数据并不没有经过精细化的组织,仅采用Key-Value的形式存储,Value可以是一个完整的文档。当查询数据时,先返回大量的数据,再通过计算获得需要的部分数据。这就是,在计算能力和网络能力提升后,存储向计算转化的例子。
4. 计算与存储的融合之路
计算和存储的融合并不是突然的出现,人们很早便开始了计算和存储的融合。我这里将计算和存储的融合分为三个阶段。第一个阶段是简单的融合,在IO通路中加入计算。第二个阶段是保存算法的存储,在节点间传送计算过程来替代传输数据。第三个阶段是存储即计算的分布式系统,类似大脑的记忆方法。
IO通路中加入计算的简单融合。重复数据删除技术、数据压缩技术是在IO通路中加入计算,从而减少需要的存储资源和带宽资源。称这些技术为计算和存储的简单融合,是因为这些技术没有跳出存储实现空间管理的框架,仍在存储的层次结构,实现存储空间管理的优化与改进。
保存算法的存储。Hadoop,Spark等计算框架,提供节点通信,实现计算任务的分配,以及容错扩展等等问题,最终实现对分布式系统中各个节点计算能力的聚合。计算框架,特别是Hadoop系统传递出的思想,是在节点间传递计算过程,而不是传递数据,从而减少网络带宽的使用,加快计算进程。不过目前各种计算框架仍侧重于计算,并没有实现通过计算来替代存储。
存储即计算的分布式系统。存储系统与计算系统的融合。人脑并没有独立的存储区域或计算区域。那么未来的存储系统是否会像人脑一样,实现存储和计算的融合。在人工智能对知识的表征和人脑计算模式的分析取得进一步的突破后,我们相信程序与数据可以共存,在需要获取数据时,通过在原始信息的表征基础上,利用存储的计算过程重新计算,来获得所需的信息。
5. 信息长期保存的关键问题
随着信息化的深入,人们有越来越多信息以数字化的形式保存下来。信息的长期保存不仅是当下特定的应用需求,更是人类文明延续的保证。信息的长期保存主要存在三个方面的问题。
首先是,巨大存储空间的管理。信息量在以高速,大规模的方式增长,信息的长期保存更加剧了需要保存信息的规模。我们需要巨大的数据存储空间,包括真实物理的数据存储空间,以及逻辑上的数据存储空间。那么如何管理这个巨大的数据空间,以及建立从逻辑空间到物理空间的对应关系成为首要问题。
然后是,信息长期保存成本。建立信息的大规模长期存储系统,无论是初次建立时的投入,还是建立后长时间运维的开销都将是巨大。
最后是,跨越时间的信息识别。将信息以什么样的方式保存,可以保障在长达几十年,甚至上百年后仍可以被读取。
6. 当下的长期保存方案
当下的长期保存方案是沿着构建更大规模存储空间的思路进行,同时结合了在“IO通路中加入计算的简单融合”方法。
对于信息的爆炸性增长,目前采用购买越来越的存储资源来提供越来越大的物理存储空间。建立更大,更多层次的逻辑存储对象。比如支持单个文件PB级的文件系统,在文件内部在建立一个独特的文件结构实现对海量小文件的管理。
为了降低存储的开销,目前在存储系统中融合了不同能耗的存储介质。采用热点追踪算法从而发现热点数据,并将冷数据在不同介质间进行大规模的数据迁移。同时还加入了的重复数据删除、数据压缩等技术,为了进一步减少存储需要的数据空间。这就是IO通路中加入计算的简单融合。
对于长期存储后数据如何被识别的问题。从两个方面着手,首先是采用标准统一的数据格式。从数据编码的最底层开始,即采用标准的UTF编码(该编码建立了自然语言与数据信息的一一对应关系)来保存信息。利用半结构化的保存方式存储大量关于数据的描述信息,从而使得人们可以得知数据的解读方式。另一方面,对于复杂的数据信息,比如视频、音频等数据,将直接保存数据以及运行数据的软件环境。利用虚拟化技术,可以将软件运行所需的硬件环境一并存储。
7. 计算为主,存储为辅的信息长期保存
信息长期保存的关键,是保证海量数据长期存储的低能耗,以及长期存放数据的可识别,对于数据访问的响应时间并不要求。为此我们可以尝试从计算和存储融合的第二个阶段“保存算法的存储”来解决这个问题。
我们将数据产出的过程进行存储。获取数据时,通过传送数据的产生过程,建立产生过程所需环境,通过再生的方式来生成需要的数据。溯源存储提出的思想便是将数据产生的足迹完整的保存下来。不过其保存的仅仅是一些描述信息,只可以用来进行信息完整性、有效性的验证,还不足以进行信息的再生。
我们认为可以比溯源存储更进一步,将数据的加工环境保存下来。这好比,我将保存一个产品完整的生产线,而不是保存最后的成品。再进一步,我们可以不保存完整的生产线,而保存生产线构成的零部件,需要生产时再进行组装。还可以再进一步,我们保存零部件的构成图纸,需要时再建造这些零部件。从数据存储的角度看,数据是用算法产生,由算法一层一层相互嵌套,相互间复杂的调用而产生。我们不保存大量中间过程的计算结果,而是保存产生数据的算法,以及算法间交织的调用关系,当我们需要数据时再进行计算。
这样我们从一开始存储的便是算法,这样便能减少对于存储空间的使用,同时可以在跨越很长时间后仍可以进行数据的获取。
8. 结论
在现有存储的层次结构中,只能实现计算与存储的简单融合,即在IO通路上加入计算,从而减少对存储资源的使用。Hadoop提出传送计算的思想,以及溯源提出对数据产生足迹的最终,给了我们对数据存储新的思考。存储代表的是空间,计算代表的是时间,两者间是可以相互转化的。结合Hadoop和溯源存储的思想,利用计算的时间来减少存储空间的占用将会是未来存储发展的一个方向。
提问与回答
1. 现在存储系统中也有CPU,那么可以说这就是存储与计算的融合吗?
不可以。现在存储系统中加入的CPU主要的目的是仍是对空间的管理,实现地址编码的转化,缓存数据的调度,IO请求解包与封转,以及IO的重定向等。并不是以计算方式来产生数据。