开发者社区> boxti> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用闪存存储的优势与注意事项

简介:
+关注继续查看
 基于闪存的存储装置能大幅提升服务器上的存储密集型应用性能,但仍存在不能忽视的挑战。

虽然传统的SATA、SAS以及FC光纤通道硬盘驱动器拥有成熟可靠的存储架构,但运行速度比起系统内存仍然慢了至少一个数量级,而且数据到磁盘阵列的读写操作步骤繁琐、延迟无法避免。虽然SSD(固态硬盘驱动器)使用闪存替代机械旋转部件来存储数据,从而提升性能,但这只解决了驱动器这一个环节的问题。数据仍然需要在传输接口(以太网或者光纤通道SAN)和存储子系统之间来回传送,其它影响性能的环节依然存在。

基于闪存的服务器内部存储器能彻底消除所有环节的瓶颈,让存储系统能更有效地与处理器核心交互,而不再有传统意义上的性能障碍。当然,这也意味着你手头上的传统存储管理和数据保护工具可能无法有效驾驭它。

存储系统的延迟问题

传统的旋转磁盘存储设备固有的伴随着系统级瓶颈无法避免。高性能磁盘驱动器定位到存储数据的磁道和扇区的寻道操作平均会产生2毫秒延迟。如果数据块不够连续,在磁盘上以碎片方式分布,那么每个文件的读写操作延迟还会累积多次。

磁盘驱动器的数据接口是另一个瓶颈。例如,新款的Seagate Cheetah 15K.7 SAS硬盘,转速为15,000RPM,其SAS接口的最高数据传输率大约600MB/秒,作为对比,一台Dell PowerEdge 720服务器上的DDR3内存条位宽为64bit,每秒能进行1333次读写操作,服务器每秒在CPU和内存之间移动的数据量超过5GB,相差一个数量级。

典型的企业IT环境需要大量的存储数据移动操作,在这种情况下延迟就会成为系统级问题。

(让我们分析一下数据写入的过程:)对于一个给定的应用程序,服务器的CPU负责将数据移动到接口卡(包括用于以太网SAN的网卡、或者用于光纤通道SAN的HBA卡)。典型的千兆以太网能以1Gbps的速度移动数据,这仅能满足很普通的数据数据存储流量需求;光纤通道网络专门用于存储应用,但大多数现存光纤通道SAN的性能也固定在4Gbps而已。

以上两种存储网络选项移动数据的速度都不够快,甚至连单个SAS接口的性能都不如,数据就以这样的速度在网络交换机和存储阵列之间往返,并且在传输途中引入更多的延迟。在存储阵列内部,数据由RAID控制器分配给阵列成员驱动器,RAID控制器的运算和分配动作都需要一定的时间来完成,这也会引入更多延迟。

(前面描述了数据写入存储的过程,对于读取过程而言,)应用程序从存储阵列请求数据时,反向的传输和控制步骤也会产生同样多的延迟。

跳出传统框架的服务器内置闪存

SSD存储阵列规避了部分产生延迟的环节,但由于仍用到SATA或者SAS标准的驱动器接口,以及为传统磁性介质存储而开发的磁盘控制器和传输协议,总体成效仍不够理想。

服务器直接内置闪存存储装置,使用直接内存访问(DMA)技术来进行数据存取,这是一种突破传统的解决方案,这里不再需要用到任何SATA/SAS接口和相关的协议。服务器本地闪存装置适合用于关键任务、存储为中心的应用,例如实时交易和数据分析类的工作负载。

Fusion-io ioDrive就是一种基于闪存的服务器内部存储器产品。它安装到服务器上的标准PCIe扩充插槽后,不再表现为传统的存储装置,而是在服务器上建立一个基于非易失性存储的高速存储层。新的存储层完全免除了SATA/SAS协议开销,服务器处理应用程序和存储器之间的数据交换都经由DMA方式进行。在此操作模式下,600GB容量的ioDrive读/写操作产生的延迟低于50微秒,数据直接通过服务器的PCIe插槽传输,传输带宽超过1.3GB/秒。

应用程序和操作系统会将闪存存储器视为新加载的传统数据块存储装置。基于闪存的本地存储器不会对服务器的主内存产生影响,应用程序和虚拟化工作负载仍然和从前一样加载到内存运行。但是,存储读写操作会被重定向到本地安装的闪存存储卡而不是转给外部SAN设施,应用程序的数据存储和服务器处理器实现了直接交互。

对应用闪存存储装置的忠告

除了价格这个第一要素,使用闪存存储技术的最大风险在于后续维护。安装一套ioDrive或类似的装置将形成脱离SAN体系管辖的分离存储区域。 如果你的组织已经花钱实施集中存储管理,再在独立服务器上使用分离的驱动器将是一种退步。

充分考察这种新类型存储器的兼容性。虽然ioDrive可以和当前几乎所有带PCIe 2.0 4x插槽的服务器兼容,也兼容于主流的操作系统,但难免会有例外。 确保目标服务器运行受支持的操作系统,在进行任何操作系统升级之前也应进行充分彻底的测试,确保新系统仍能与存储装置兼容。

闪存存储设备必须接受管理,以便被各种应用程序调用,但是闪存存储设备往往无法融入现存的管理架构和远程管理工具。这意味着你只能以单个服务器为单位来部署闪存存储,即使是远程数据中心,也必须亲临现场处理。

固态存储装置也影响到了系统备份和灾难恢复规划,它不属于集中化的SAN设施,却适合于关键的高性能应用。虽然你可以采用类似RAID1之类的多重存储措施来应对灾难恢复,系统硬件规模和造价也会伴随着增长。

留意理论和实验研究的项目成果,这将更好地指引你实施本地闪存存储项目,让你能存储单元装入生产服务器系统之前充分发现潜在的问题。请确认,在你准备投资于闪存技术应用之前,你已经明瞭闪存存储的运作原理。

 
 作者:佚名
来源:51CTO

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C# 调用存储过程
下面以调用:Sql Server 分页存储过程为例 调用代码如下: string MyConn = "server=数据库服务器Ip;uid=数据库用户名;pwd=密码;database=数据库名称;Trusted_Connection=no"; SqlConnection MyConnection = new SqlConnection(MyConn);
984 0
存储过程之三—语句
一、 IF ELSE   if else 类似选择结构的语句,类似于编程语言中的if else。语法如下: IF 表达式 THEN 执行语句 [ELSEIF 表达式 THEN 执行语句] [ELSE 执行语句] END IF;   根据分数打印等级,代码如下: DROP ...
616 0
C#除法注意事项
一、图解现象   图1 progressBar1.Maximum = 300; currentVal = 200-1;   图2 正常的除法用法   图3 错误的C#除法用法   二 得出结论 在C#中使用除法的正常用法: int percentComplete = (int)((float)i / (float)u_data.
431 0
JDBC调用存储过程,以及存储过程 事务的使用.....
在JDBC中调用存储过程 首先就要在数据库中存在 要调用的过程  ,存储过程是一组SQL语句的集合,我们吧实现某一功能的 SQL语句集合在一起来使用,方便了用户,不光是这样,存储过程可以预编译,也就是说只要调用了一次存储过程,那么下次在调用存储过程的时候 就不需要进行再次编译了  。
886 0
+关注
boxti
12535
10006
文章
1327
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载