Tag Archive for ''

我对存储的一些认识

磁盘

一个IO的访问,大致分为三个步骤,第一是磁头到指定的磁道(寻道),第二是等待需要读取的数据随盘片旋转到磁头(延迟),第三是读取数据。相比较前两个时间,读取数据的时间可以忽略不计,所以一个IO的响应时间等于寻道时间+延迟时间决定,寻道时间由于是机械的动作,所以很难得到大幅度提高,但是可以通过提高磁盘转速来提高延迟时间。所以转速越高的盘,可以承载更多的IOPS。磁盘的IOPS由磁盘的转速决定,比如15000RPM的磁盘,一般可以承受150个IOPS。

吞吐量,则由磁盘的转速和接口决定,转速决定了内部传输率,接口则决定了外部传输率,很明显前者肯定低于后者。常见的接口有ATA,SCCI,SATA,SAS,FC等等。FC接口一般在高端存储中比较常见,而SAS和SATA多在服务器或者中低端存储中常见。

存储

对于一个存储系统来说,IOPS主要决定于cache的算法,以及磁盘的数量。有时候我们往往会被厂商的数据给忽悠了,第一是cache命中率,厂商利用了某种手段,让cache命中率非常高,IOPS几乎可以随心所欲。另外一个因素就是磁盘的数量,厂家的数据是同型号1000块磁盘的测试结果,而我们实际的系统只有100块磁盘。

购买存储时,应该避免买高端的存储,而只配数量很少的磁盘,厂商非常喜欢你买一个高端的BOX,告诉你扩展性好,现在用不着可以少买点盘,以后可以扩容等等,这完全是忽悠。建议不要超前消费,如果确实对性能追求很高,可以选用容量小一些的磁盘,而磁盘的数量多一些。

磁盘的数量可以计算得出,我们的经验,一般OLTP应用的cache命中率在20%左右,剩下的IO还是要到磁盘上的,根据磁盘的转速和类型,就可以知道一块盘能够承载的IOPS,磁盘数量就可以估算出来了,为了得到比较好的响应时间,建议每块磁盘的IOPS不要超过100。

影响吞吐量的因素稍微复杂些,由磁盘的数量和存储的架构决定,当磁盘到达一定的数量后,吞吐量主要受限于存储的架构。比如某高端存储,吞吐量最大就是1.4GB,这是由它内部的架构所决定的。另外还要注意存储与主机的接口,比如HBA卡,有4Gb和2Gb(这里是bit,而不是Byte),一般主机和存储都配有多块HBA卡。

RAID

RAID一般比较常见的就是RAID10和RAID5,对性能要求比较高的数据库应用一般都采用RAID10,RAID5也可以用,但是别把redo放在RAID5上,因为RAID5的对于redo这种小IO,性能非常差,很容易造成log file sync的等待。一个RAID group中的磁盘数量不宜过多,不要超过10块,原因是RAID group中磁盘数量越多,坏盘的概率就越大(概率问题)。一些高端存储对于RAID group中的磁盘数量都是固定的,这主要和存储的架构有关。使用存储的过程中,你会发现,越是高端的东西,就越是死板,而中低端存储则非常灵活,并不是说高端存储不好,而是说架构决定一切。

Stripe

Stripe的作用就是尽可能的分散IO,它在有些存储上是可以调节的,但是很多存储是不可以调节的,一般在128K-512K之间。有一个错误的说法是,我在存储上做了stripe,数据库的一个IO,所有的磁盘都会响应这个IO。这个说法是错误的,对于Oracle来说,一个随机IO的大小是8K,一般条带的大小要比8K大得多,所以Oracle一个随机IO永远只会落在一块磁盘上。一块磁盘在同一个时刻只能响应一个IO,也就是说磁盘没有并发IO的概念,但是从整个系统来看,不同的磁盘响应不同的IO,宏观上IO还是分散的,所以我们看到一个数据库在运行时,所有的磁盘都在忙,实际上每块磁盘是为不同的IO服务。对于顺序IO,Oracle的默认设置是128K,最大值由OS决定,一般是1M,如果顺序IO的大小大于stripe,那么一个IO可能会有几块盘同时响应,但是很多存储的stripe都大于128K,这时一个IO还是只有一块磁盘响应,由于读是一个顺序的过程,所以要在数据库这个级别加上并发,才可以真正达到提高吞吐量的目的。

有人要问,stripe到底多大合适?如果我把stripe做得很小,这样不是很好吗?一个IO同时可以读很多块盘,大大提高了吞吐量。我们假设stripe为1K,Oracle一个IO要分布在8块不同的磁盘上,但是这时问题就出现了,一块磁盘是不具备并发IO能力的,如果每个IO都占用很多块盘,这样整个系统的并发IO能力就下降了,而且一个8K的IO如果在一块盘上读,和从8块盘上并行读,不会有很大的差别(也许在一块盘上读还要更快),所以stripe不能做的很小。stripe到底设多大,我的观点是大比小好,不要小于256K,数据仓库应用可以设置的更大一些。ASM对于数据文件的stripe默认是1M,我曾经觉得1M太大,将其改为128K,结果发现1M的性能更好,Oracle也推荐用1M。这说明对于数据库应用来说,stripe size要稍微大一点,而不是我们想的越细或者越分散越好。

存储划分

划分好的LUN输出到主机后,我们怎么用?这个就比较灵活多变,首先要看我们的用途,我们是追求IOPS还是吞吐量?我们用file system,raw devices,ASM?存储输出的LUN跨在多少块盘上?一般的存储没有虚拟化功能,则输出的LUN只跨在一个RAID group上,这时往往需要利用OS上的LVM来再次划分一次,看下面的示意图。

每个RAID goup有四块磁盘,建立两个LUN,输出到主机后,用蓝色的一组和红色的一组LUN分别创建两个VG,然后再创建LV(stripe),这下每个LV就完全跨在了所有的磁盘上。实际中考虑的问题要更多,有时候不仅仅要考虑磁盘,还要考虑将负载分配在不同的控制器,前端卡后端卡和多路径的问题,相当复杂。有些存储本身有虚拟化的功能,甚至可以输出一个LUN,比如3PAR就可以输出一个虚拟卷,这个卷已经跨在所有的磁盘上,我们直接使用就可以了(但实际工作中这么使用的比较少见)。

Oracle有了ASM,问题就更加复杂了,我的建议是如果可以的话,存储只做RAID1,stripe交给ASM去做。如果有些存储必须要做stripe,也没问题。存储划分是一个很有技术含量的工作,必须建立在对存储,主机和数据库深入了解的基础上,才有可能做出一个好的规划。

这里主要探讨了存储使用过程中的一些误区,随着SSD的逐步普及,我觉得将对整个存储市场格局带来很大的变化,下次我们再讨论一下SSD带给我们的机遇。

后记:存储是系统的最底层,因为非常重要,现在市场基本被几个大厂商所垄断,每个厂家都有一些忽悠人的名词或者商业上的炒作,所以我们要擦亮眼睛,谨防被忽悠。

–EOF–

更正:这篇文章中有一个错误的假设,认为Oracle scattered read是完全串行的过程,实际上在不同的multiblock read之间,存在一定程度的并行。Oracle每次同时向OS发送若干个multiblock read IO请求,然后把返回的结果合并排序。整个scattered read应该是局部并行,宏观串行的过程。

山寨存储

现在山寨很流行,从山寨手机,山寨笔记本,到山寨汽车,山寨春晚,甚至银行都有山寨版的。为了紧跟时代潮流,我们也打算自己搞一个山寨版的存储,我们起了一个好听的名字叫“高性能廉价存储”。

为什么要搞山寨存储,其实是被逼无奈的选择。目前存储基本上被国外厂商垄断,尤其是高端的存储,基本都是EMC,HDS,IBM,HP的天下。国内我知道华三有一些低端的IP SAN的产品,现在华赛也有一些中低端的存储设备,但是尚不足以与国外巨头抗衡。由于国内尚没有厂商与之竞争,所以这些存储价格很高。而且这些高端的设备不光初次购买的价格昂贵,而且维护费用很高,比如我们的使用的小型机和存储,当你使用了一段时间后想升级的时候,你会发现升级和维护的费用和再买一台新的设备差不多,而且厂家往往还会告诉你,原来的型号已经不生产了,建议你买新的型号。比如我们的小型机想升级内存,厂家说现在新生产的内存和以前不兼容,如果要升级,以前的内存必须要全部废掉,我们没办法,只好又新买了一套设备。还有设备使用了一段时间想要续保的时候,我们发现购买服务的价格和再买一套新设备差不多。这个时候,我们发现自己被厂家绑架了。

我们曾经测试过用8台PC Server+SAS本地磁盘+greenplum数据库搭建了一个山寨版的数据仓库系统,发现效果比小型机+高端存储+Oracle RAC的效果还要好(具体可以看我以前写的blog),这个测试给我们很大的启发,我们是不是也可以用廉价的PC server堆叠出一个存储系统呢。

我们之所以能够自己搞山寨存储,基于以下几点:第一点,SAS盘的性能已经足够好,而且比FC盘要便宜很多。第二点,我们可以和PC服务器厂商合作,定制一种服务器,用来作存储的节点,比如浪潮提供给我们的一款机器可以挂16个SAS盘,价格很低廉。第三点,利用iSCSI,通过iSCSI我们可以将多台PC server整合为一个大的存储系统。

我们的山寨存储由存储节点和控制节点组成,存储节点的作用主要是提供存储能力,所以要求能够挂比较多的磁盘,但不需要太强的处理能力,内存可以为控制节点提供Cache(就好象存储的Cache一样),存储节点通过iSCSI输出给控制节点。控制节点的作用是整合所有存储节点输出的磁盘,有点类似存储的控制器一样,RAID在控制节点上实现,并跨在每个存储节点上,防止存储节点的单点故障,这里的RAID实际上是软件RAID,而不是硬件RAID。控制节点需要一定的处理能力,内存同样可以为上层节点提供cache的功能。所有的LUN通过控制节点整合后,就可以输出给外部主机了,根据应用的不同,可以支持三种方式:FC,iSCSI和NFS,其中NFS可以用来作备份,iSCS可以输出给对性能要求比较高的应用,比如数据库,如果原来已经有SAN的环境,还可以选择FC方式的方式输出,这样对主机来说,就和一个存储完全没有区别了。在主机端还可以用LVM,或者用Oracle ASM再次对输出的LUN进行整合后使用。这套山寨存储就好像是套积木,你可以用他来搭建出各种各样的房子。由于目前还处在“研究”阶段,所以太细节的东西现在还不便透露。

性能:由于每个节点都提供cache的功能,即利用了PC server上的内存,又大大提升了性能,经过我们的初步测试,IOPS和throughput还是比较理想的,符合我们的期望,我们也没指望拿它和DMX去比,一些对性能要求不高的应用场景是可以使用的。

性价比:有人说你这样搞说不定比买存储要贵,至少比那种没有控制节点的磁盘柜要贵,人家那种只有磁盘,我们这个是拿PC Server堆叠的,而且PC Server的处理能力是不是就完全浪费了。其实这些问题我们都有考虑,现在PC Server价格很低,而且我们可以和厂商合作定制服务器,比如存储节点我们可以定制带很多盘的PC Server,但是不太需要很强的处理能力,内存基本上都可以用来提供cache,所以并没有浪费,而且我们可以选浪潮,华为等国产设备,避免被国外厂商绑架。

好处:可堆叠,这是最大的好处,随时都可以添加存储节点来实现扩容的目的,这样旧的设备就不需要被替换掉,可以最大限度的节省硬件投资。比如在一些对性能要求不高的场景,比如图片存储,文件服务器等,完全可以用PC Server堆叠出容量很大的一个存储。

待改善:现在的系统是纯山寨,基本上都是拿来主义,还需要不断的测试和完善。稳定性和可靠性还需要进一步加强,比如某块盘坏掉或者某个节点坏掉对整个系统的影响。这个东西还没有经过实践的检验,还需要通过各种应用来检测,比如我们的Oracle数据库的应用。

有人说让专业的厂商做专业的事情,这不是我们应该做的事情,因为我们不专业。但是你知道吗?Google最早的服务器就是自己做的,比我们的还山寨呢。山寨这个词并不一定是贬义词,它更深次的含义是:用廉价的设备堆叠出一个处理能力很强的庞大系统,这个思路是我们以后发展的方向。也许某天,我们的山寨存储经过包装,也可以作为一个产品来销售,那时候它就不再是山寨货了。

–EOF–

Oracle database machine

前几日,我在blog中把ORACLE和HP推出的database machine称之为一个山寨版的RAC系统,8个HP的PC server作为处理节点,14个exadata storage server组成了一个山寨版的存储系统。我认为这样是最简单的一种方式,仅仅是将硬件和软件打包到一个BOX中。但是实际上并不是如此,因为我在文档中看到了下面的话:

Each Exadata Storage Server has “Smart Scan”software built-in to execute rapid table scans,sending only required rows and columns through a fast Infiniband network for processing by database servers.

在ORACLE的share everything的架构中,存储是全局共享的。而在Greenplum的share nothing的架构中,在数据逻辑层就将数据distribute到每个node上,每个节点可以独立的对数据进行处理。如果我们假设ORACLE RAC的架构并没有发生改变,那么exadata storage server上的smart scan功能是如何实现的呢?我们先看一下ORACLE DATABASE MACHINE的架构:

The Oracle Database 11g has been significantly enhanced to take advantage of Exadata storage. The Exadata software is optimally divided between the database server and Exadata cell. The database server and Exadata Storage Server Software communicate using the iDB – the Intelligent Database protocol. iDB is implemented in the database kernel and transparently maps database operations to Exadata-enhanced operations. iDB implements a function shipping architecture in addition to the traditional data block shipping provided by the database. iDB is used to ship SQL operations down to the Exadata cells for execution and to return query result sets to the database kernel. Instead of returning database blocks Exadata cells return only the rows and columns that satisfy the SQL query. Like existing I/O protocols, iDB can also directly read and write ranges of bytes to and from disk so when offload processing is not possible Exadata operates like a traditional storage device for the Oracle database. But when feasible, the intelligence in the database kernel enables, for example, table scans to be passed down to execute on the Exadata Storage Server so only requested data is returned to the database server.

iDB负责database与Exadata cell之间的通信,将查询后的query result回传给数据库,而不是block。这下问题好像清楚了一点,既然回传的是结果集而不是block,这样ORACLE就不需要重新构造block了,只是把结果集处理一下返回给用户。但是什么情况下,ORACLE会这样处理,什么情况下是按照传统的方式处理呢?文档中并没有提及。

感觉ORACLE意识到了RAC架构存在的瓶颈,但是又不能改成share nothing的架构,只好在RAC外面加了一个iDB的东西,期望能在存储节点上做一些处理,减少存储和数据库之间传送的数据量,提高整个系统的性能。看来这个东西还不是简单的山寨货,还是有点东西在里面。

–EOF–

什么叫专业

P590和DS8300到货了,从早上折腾到晚上2点多,终于把机器给放到位置上了。

要不怎么说不管做哪行都要体现一个“专业”精神。就是因为物流公司不专业,给我们造成了很大的麻烦。带来的叉车有毛病,卸货的时候差点把主机给扔到地上。进机房的时候,又遇到很大困难,之前我反复和他们沟通过,希望他们到现场看一下,因为我知道机房的那个坡度过大,这么重的机器肯定上不去,8300的控制柜有1.3吨多重。最终的结果是机房的门禁被撞坏,存储撞在墙上,门被撞凹了一大块,自己的兄弟也累得人仰马翻。由于没有上电,对机器的影响还没有评估。

所谓细节决定成败,很多人觉得机器搬运上架是最没有技术含量的事情,但是就是这么简单的事情,也处处体现了“专业”的含义。

–EOF–

HDS USP

很早之前去HDS培训时的笔记,最近要上DS8000,对几种存储对比一下。

名词解释
DKU:扩展柜
DKC:控制柜
DKA:后端端口
CHA:前端端口
CSW:交换卡
SVP:内置服务PC,另一个含义是服务程序,与Storage Navigator功能一致。
CM:Cache Memory数据内存
SM:Share Memory共享内存
HDU:Hard Disk Units,USP一个HDU包括16块硬盘,俗称一个BOX,这16块硬盘接在两个光纤环路上。
B4:四个HDU组成一个B4,创建RAID GROUP的时候,在B4中的每个HDU的对应位置取一块盘。
MPs:MicroProcessors,就是HDS的CPU,分布在CHA和DKA上,共128个
ECC GROUP:RAID GROUP
CU:Control Unit,IBM大型机的概念,在一般的系统中没有实际含义,可以视为一组LDEV ID的组合,每个CU支持256个LDEV
FICON,ESCON:IBM大型机的接口。
Fibre Channel:通用系统的光纤接口。
LDEV:逻辑设备,当对应了LUM Number之后输出到CHA,就是LUN。
LUN:CU:LDEV is LUN,在存储端看是LDEV,输出到主机就是LUN。
Cluster:所有的板卡,包括CHA,DKA,SM,CM都有两块对应的卡,分别在柜子的前面和后面,将整个柜子前面的所有卡称为cluster A,将真格柜子后面的卡称为cluster B
WWN:world wide name,就是HBA卡的唯一标识符,类似于网卡的MAC地址,用于

1.USP基本结构
最大可以由一个DKC,四个DKU组成,一共五个柜子
一个硬盘接在两个光纤环路上,分别接到两个后端端口
DKA的两个端口是一一对应的,分别在两个cluster上,这两个端口同时服务于两个loop上的所有硬盘,每块硬盘同时挂在两个loop上
CHA没有对应关系,一般选择cluster1和cluster2上各取一个端口,cluster1的端口编号为1A,3A,5A,7A,1B,3B,5B,7B,cluster2的端口编号为2A,4A,6A,8A,2B,4B,6B,8B
所有的数据信息都要经过CSW交换,控制信息不经过CSW
B4由四个HDU组成,每个HDU包括16块硬盘,B4是用来创建RAID组的重要概念,即RAID组中的每一块盘分别取自每个HDU的对应位置,所有USP只能创建固定规格的RAID GROUP,这是由系统的结构决定的。
CPU共128个,分布在各种板卡上,整个系统内部采用TCP/IP通讯,IP地址是根据序列号计算出来的。

2.安装要求和初始化
DCI:Define Configuration Install,初始化配置参数,只是全部初始化工作的一部分。可以通过offline SVP这个工具来模拟整个过程。
Emulation type:模拟类型,现在都选OPEN-V,适用于各种通用系统,其它的类似3390都是大型机适用。
SubsystemID:SSID,需要为每个CU指定一个唯一的ssid,无特殊用途,大型机的概念。

3.现场安装

4.维护
更换磁盘步骤:首先在SVP中选择需要replace的磁盘,此时系统将会停止硬盘,当红灯亮之后,方可拔下硬盘。更换硬盘后,选择renewal恢复硬盘。

5.存储管理
USP的热备盘为全局热备盘,每个柜子8块,位于每个HDU的左上角,整个系统最多40块,大盘可以替换小盘,但是转速必须相同。
RAID组是固定的,
RAID 1(2D+2D)(4D+4D),注意4D+4D实际上是两个2D+2D的RAID组合并而成的,不能直接创建
RAID 5(3D+1P)(7D+1P)
RAID 6(6D+2P)

6.扩展柜
有两种连接模式:标准模式,高性能模式,一般选择后者。
如果有两个扩展柜,一般都放在同一边,如果放在控制柜两边,则需要多买一对后端卡

7.内存卡,交换卡
CACHE容量是由真格存储的容量决定的,CM中存放的是数据信息,SM中存放的是控制信息
两块SM中的信息是完全冗余的,两块卡分别位于两个cluster中
CACHE FAST-Write:
Write-Through Mode:
8.前端卡,后端卡
9.SVP
SVP:Service Processor,服务程序,用来管理配置存储
Webconsole Button:通过SVP进入Storage Navigator,但不是超级用户
Storage Navigator:WEB管理界面,不能修改参数
将LUN分配给主机的步骤:1.新增host group,将端口与关机的WWN关联。2.将LDEV关联LUN号后输出给端口
VLL:虚拟逻辑卷,也称为CVS:Customer Volume Size,自定义卷大小。通常都是适用这种类型,模拟类型选择OPEN-V,这样就可以自定义LDEV的大小
内存驻留:把一个LDEV驻留到内存中,

12.微码升级
内码升级只涉及到CHA和DKA,CSW和内存由于没有CPU,所以不需要升级。
升级一般分为按照CPU升级和按照cluster升级,前者用户不能干预,系统自动选择一部分CPU升级。后者按照cluster升级,用户可以干预,切换路径。所以一般选择第二种。
升级步骤:升级SVP,升级CHA,DKA(除SVP,DKU之外的所有部分),升级硬盘DKU

–EOF–

我看3PAR

.!.

最近测试了3par的存储,这个厂商在存储领域算是比较新的。以前看myspace的架构时,才第一次听说了这个产品,目前在国内才刚刚开始做。
这个存储有一些特点:
1.中端存储高端化:3PAR定为于高端存储,但是它的架构有点类似中端存储的架构,有控制器的概念,最多可以有8个控制器(S400最多有4个控制器,S800可以有8个),控制器之间由一个网状背板连接起来,每个控制器有两个INTEL的CPU负责控制指令,还有一个3PAR自己控制器的ASIC完成数据移动。普通的中端存储,一个LUN只能属于一个控制器,用户必须将LUN人工分布到两个控制器上,而3PAR每个LUN实际上是由多个控制器并行处理的。
2.非常有特点的盘盒:3PRA插盘的方式非常独特,和其他存储都完全不同,在4U高度的盘盒中,有10个盘包,每个盘包可以纵向插入4块盘,相当于其他存储一块盘的位置插入了四块,所以3PAR的盘的密度非常高。当然这也有问题,比如在换盘时,每次需要将整个盘包拔出,或者盘包自身的背板损坏,可能造成数据丢失等等。不过3PAR已经考虑了这些情况,并有解决方案。
3.虚拟卷管理:第一层:每个盘都被划分为256M的小块(chunklet),由于每个盘盒都和两个控制器相连,所以这些存储块都有两个访问通道。第二层:将这些存储块,基于RAID类型和存储块的位置组成逻辑盘(LD)。第三层:将一个或多个LD映射成为了一个虚拟卷(VV),并最终以LUN的形式输出给主机(VLUN)。这样可以将IO分散到系统所有的磁盘,光纤连接和控制器上,而不象某些存储,必须要借助主机的LVM才能实现。如果我们使用文件系统或者ASM的话,将会很方便。另外一个特点就是管理非常方便,只需要告诉系统我要多大的LUN,其他系统会自动完成。
4.精简配置:也叫做瘦存储(Thin Provisioning),就是将”使用的存储”和”分配的存储”分开了。比如用户规划需要2T的空间,但是目前只需要500G空间,这样存储可以实际只有500G空间,但是告诉主机我有2T的空间。对主机来说,存储的管理将是透明的,当未来存储扩容后,主机不需要再做任何配置工作。
5.动态优化:当存储扩容时,可以动态的将数据重新分布,更改RAID类型,硬盘类型等等。
6.性能:从测试的结果看,3PAR表现相当不错,iops和相应时间都很理想。测试结果就不写了,免得有做广告的嫌疑。
7.界面:个人觉得3PAR的命令行界面很好用,图形界面没见过,不便评论。

目前HDS,EMC的高端存储都在使用,下个月IBM 8300要到货了,期待ing.

–EOF–Resident Evil: Apocalypse hd

Final Fantasy: The Spirits Within

大话存储技术

今天参加了一个EMC技术的讲座,主要内容是介绍EMC的一些新产品,实质内容不多,大部分是忽悠的。只有两个信息点值得关注:

1.固态硬盘(SSD):数据上看性能非常好,IOPS和响应时间将不再是问题,EMC的测试表明替换SSD后,存储的整体性能提升至少在十倍以上(IO的类型和cache的命中率都对这个数据有影响)。关于可靠性的问题,虽然每个厂家的技术有些差异,但是基本上都宣称解决了这个问题。EMC的供货商是STEC(一家以色列公司,专门研发高可靠性的固态硬盘),EMC对外宣称每个位至少可以提供10万次以上的读写访问。而且还采用了两种额外的技术保证可靠性,第一,冗余容量,73G和146G的硬盘实际容量为128G和256G,这样可以保证硬盘不会被写满,并且可以提供容量替换的功能。第二,IO分散技术,同一个数据,每次读写后的位置是不同的,这样就避免出现经常写某个位置而造成的损坏。流云同学妄图通过自己写的小程序对SSD的同一个位置进行频繁的写操作,以此来验证SSD的可靠性的方法,恐怕不太靠谱,因为在底层SSD会自动做IO分散。

这个技术绝对属于激进型的变革,一定会导致存储技术的巨大革新,可能某些企业会死掉,比如传统的磁介质的厂商,也可能有很多企业会因为这个技术而崛起。个人认为这个技术的门槛甚至比传统的磁介质存储要低,对于国内的厂商来说是个巨大的机会。稍早些时候,我们已经拿到了华为的SSD硬盘,并进行了测试,虽然性能比intel逊色,但是还是要支持国产厂商,只有他们有产品,EMC也许才能把价格降下来。(这里要BS那些动不动就对国产设备说三道四的人,如果没有华为这些厂家,现在的很多设备估计都要卖到天价。有些扯远了)。

EMC现在的DMX上可以支持SSD和FC混插,CX4也可以支持SSD(但是最多只能插16块,因为如果超过16块,SSD的价格可能比整个CX4还贵)。但是我认为这种混插的方式一定是个临时性的解决方案,随着SSD的技术不断成熟,价格不断降低,存储的架构一定会发生巨大的变化。如果未来SSD的容量不再是问题,也许几块SSD就可以满足我们性能的需要,完全不需要DMX这么复杂的一个存储架构来支持,所以我觉得DMX上混插SSD,仅仅是EMC对于现在已经有DMX,又对性能有高要求的用户提供了一个临时的解决方案。

2.云存储:EMC的云存储产品Atmos,它是一个包含了硬件设备,软件产品的一个云存储的解决方案,对于这个产品本身我们不用太多去关注。但是我们有必要了解下什么是云计算,云存储。

云计算顾名思义是云里雾里的计算,大概的意思就是在云里雾里,你什么也看不清,云会给你想要的一切,包括计算能力和存储空间,你不再需要知道云里雾里到底是怎么实现的。就象应用的架构经历从mainframe,C/S到现在的B/S模式。云计算也是分布式处理,并行处理,网格计算发展的产物。它透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多台服务器所组成的庞大系统经计算分析之后将处理结果回传给用户。通过云计算技术,网络服务提供者可以在数秒之内,处理数以千万计甚至亿计的信息,达到和”超级计算机”同样强大的网络服务。

云存储是在云计算概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过 应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。 当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是 一个以数据存储和管理为核心的云计算系统。说白了,云存储就是偏向于提供存储服务的云计算系统,或者是配置了大容量存储空间的云计算系统。

既然云计算是由google提出来的,google是如何实现的呢?请看google的三件宝:

1.GFS(Google File System)。一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。Google根据自己的需求对它 进行了特别优化,包括:超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等。GFS把文件分成64MB的块,分布在集群的机器 上,使用Linux的文件系统存放。同时每块文件至少有3份以上的冗余。中心是一个Master节点,根据文件索引,找寻文件块。
2.MapReduce。Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分 解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和 Reduce操作分布在集群上运行,并把结果存储在GFS上。
3.BigTable。一个大型的分布式数据库,这个数据库不是关系式的数据库。像它的名字一样,就是一个巨大的表格,用来存储结构化的数据。

今天上课时,有人提到了hadoop,它到底是什么?hadoop用JAVA实现了MapReduce和一个分布式的文件系统(HDFS),我们也可以把它看成是一个云计算或者云存储系统,目前Yahoo在支持Hadoop.

说了半天,估计大家还是在云里雾里,其实我也不怎么明白。这篇文章属于山寨货,是从网上四处抄来的。

–EOF–