http://www.dbaleet.org/flash_card_lifespan_calculation/
随着近年来闪存技术的不断成熟,基于闪存介质的低功耗,随机访问速度快等特点在企业级市场也越来越受到厂商及用户的信赖。几乎是一夜之间,传统的存储厂商例如EMC, HDS, Netapp都开始推出了其各自的固态盘或者混合盘的高端存储。ERP巨人SAP甚至推出了基于“内存计算” (In Memory Computing)概念的实时分析一体机 SAP HANA, 走在了行业的前头。
当然Oracle也不甘示弱, 首先在Exadata X2中大量采用了flash技术。除了传统Oracle Database 11.2中的Database Smart Flash Cache以外,并且针对Exadata研发了Exadata Smart Flash Cache和Exadata Smart Flash Logging, 大大增强了flash在Oracle数据库上的威力。从Exadata X3开始Database In-Memory Machine,除了进一步对flash技术进行增强,可以打开FlashCache的WriteBack模式(X2也可以做到,但是需要升级到特定版本),另外flash加速卡的容量也从X2的单条96G增加到了单条400G。 每台存储节点有4个flash卡,也就是说,单个存储节点的flash容量从366G上升到1.6T,满陪从原来X2的5.3T,增加到22.4T。这里先不谈论具体的技术本身,而是如此大规模的使用flash,到底可靠吗?
首先可以肯定的是, 不会对数据库的可用性造成很大的影响。仔细观察不难发现,Exadata在flash的使用上是持谨慎态度的。虽然大面积的使用了flash,但是flash上默认存放的都是非核心的东西,或者说flash在Exadata中扮演的就是“锦上添花”这一类的角色。即使flash卡损坏,也不影响数据库本身的使用,从flash卡的官方名字“Flash Accelerator F20 PCIe card ”(X3升级到F40卡) 就能看出来。
那么为什么客户会有对f使用flash技术的担忧呢?其实是可以理解的。电信,金融行业的客户把数据的可靠性看得比什么都重要,所使用的技术也比较稳健,对新技术的使用存在很不信任的因素,以银行为例,尽管传统存储厂商EMC, HDS宣称自己的固态盘的高端存储能达到多高的IOPS,但实际几乎没有哪家大的银行客户采用这种技术。
闪存目前最大的一个问题在于其使用寿命。那么闪存的寿命又是如何计算的呢?
宏观上来说,闪存的寿命取决于三个主要的因素:第一是NAND技术, 容量以及应用本身的使用模型。通常闪存的寿命可以通过以下公式进行估算:(以下公式来自Dell网站: http://www.dell.com/downloads/global/products/pvaul/en/Solid-State-Drive-FAQ-us.pdf)
Life [years] = (Endurance [P/E cycles] * Capacity [physical, bytes]
* Overprovisioning Factor) / (WriteSpeed [Bps] * Duty Cycle [cycles] * Write % * WAF) / (36 *24* 3,600)
例如 NAND P/E Cycle 的指基本是固定的:SLC为100K, eMLC为30K, MLC为3K, F20卡为SLC所以这里为100000
Capacity: 可用闪存的容量, 以1/4配计算其容量为(96×1000×1000×1000)×4×3=1.152×10¹² Byte
Overprovisioning Factor: 预留空间因子,wikipedia上给出其中的计算公式为:Over-provision= (physical capacity-user capacity)/user capacity。每个F20卡物理容量为128G, 而可供使用的实际容量为96G,那么Over-provision=(128-96)/96=33.33%
Write Speed: 写入速度, 按照1M顺序写的方式,每块F20卡的写入速度为567 MB/s。1/4配总的写入速度=(567×1024×1024)×4×3=7134511104 byte
Duty Cycle: 使用比例,例如如果7×24, 则为100%。
Write %: 写操作占所有操作的比例。根据统计一个负载比较繁重的系统写比例能达到25%左右。
WAF: 放大率, 企业级的闪存的放大率可以认为等于1。
根据上述内容估算如下:
F20卡的使用寿命=(100000×96×1000×1000×1000×4×3×33.33%)/(567×1024×1024×4×3×1×0.25×1)/(36 ×24×3600)= 3.839616×10¹⁶/1783627776/3110400=6.9 年
根据上述公式估算,得到Exadata F20卡的寿命大约为6.9年。Oracle给出的使用年限为5年,这两个数字还是比较接近的,可见这个说法还是比较靠谱的。如果需要专业计算闪存的使用寿命,可以察看以下专业的论文或者白皮书:
Solid State Drive (SSD) FAQ from Dell
Exploring Managed NAND Media Endurance From Boise State University
Understanding endurance and performance characteristics of HP solid state drives From HP
NAND Evolution and its Effects on SSD Useable Life White Paper From West Digital
WHITE PAPER. Storage Device Reliability and Endurance From Seagate
最后谈一下我对于Exadata闪存使用的一些个人看法:
闪存能获取比物理磁盘大得多的IOPS, 这获取是使用闪存技术最大的收益。Exadata 大量使用闪存技术,可以充分利用其特有的Exadata Smart Flash Cache的特性,使得OLTP应用大幅受益,Exadata备受诟病的一个说法是Exadata是为OLAP设计的,其精髓offloading/(smart scan)对于OLTP应用用处不大,所以Exadata不适合于OLTP。但是, offloading并不是全部,通过Exadata Smart Flash Cache,能大幅提升OLTP的处理响应时间,Exadata X3将单块Flash升级到单块400G的F40,实则是为了OLTP优化的一种手段。
前面也提到过虽然Exadata大量使用了闪存加速技术,但是核心的数据并不放在闪存上,而其使用类似于二级缓存的方式。(Oracle并不推荐将Flash作为ASM磁盘来当数据盘使用,一来ASM需要做冗余,会浪费本来有限的闪存空间,造成Exadata无法充分利用到Exadata Smart Flash Cache特性)这其中的原因主要有三点:一来是目前闪存的价格过于昂贵,全部采用闪存目前从价格这个层面还不切实际。第二闪存的可靠性和寿命有待提高,很多企业对于核心系统使用闪存还是存在顾虑。第三,Oracle可以对数据库架构进行优化来提升性能。相信随着闪存工艺的进步,在可预见未来的日子它将会逐步取代传统的磁盘的地位。
以上
Leave a Reply