浅析闪存盘(Flash Drive)内部架构与应用考虑
作者将本文同时发布到:EMC中文支持论坛https://community.emc.com/docs/DOC-27357 介绍? Flash?Drive闪存盘,作为代替使用了几十年的机械硬盘,它与机械硬盘相比有着绝对的性能优势,架构上也与机械硬盘有着很大的区别。本文以摘要的形式梳理了闪存盘的内部结构Page、Block、Channel的作用以及使用闪存盘上的一些性能考虑和使用范围。 更多信息? 闪存盘就像一个小型的存储系统: ? 闪存盘就像一个小型的存储系统,它包括一下的组件:
? 闪存盘中的页面通过几种状态来管理数据状态:
? 页面状态会受到负载的影响,页面状态也会影响到可用的区域。可用的区域(已经释放的区域)会决定写入的性能。由于随机写入页面变得随机分布,闪存盘使用元数据来定位Valid和Invalid的数据,比如一个占两个Block文件更新写入,第一个block写入到缓存,那么它所对应的NAND上的两个block都会变成invalid。 闪存盘中还有一部预留空间,存储通常意义上的元数据,预留空间会为写入数据提供可用的block位置。 持续的数据写入会使闪存盘饱和,然后闪存盘会在空闲的时间进行擦除(Erase)操作。在擦除之前,为了保证Block中的页面必须都是invalid状态,会将每个block中的valid页面写入到其他block,这个过程类似于硬盘碎片整理,主要分为几个步骤:将Valid的页面读取到缓存中 擦除NAND中旧的区域 Valid页面写入NAND的到其他Block中 ? ? 使用闪存盘时的一些性能考虑与应用场景: ? 是否闪存盘在使用久了以后会变慢?答案是,的确会有一些影响。闪存盘的剩余空间会是主要因素之一,因为剩余空间的减少会导致碎片的增加,影响到闪存盘对于持续写入的相应时间,较高的空间利用率会导致在每个block中有更多的valid页面。随着时间增加,这种valid页面的分布会变得更加随机分布而且空间利用率增加。如果block中包含比较高的比例的valid页面,擦除的过程中就需要调整更多的页面。闪存盘就需要更多的时间进行碎片整理。 闪存盘的大小是否影响性能?这里需要描述一个概念,叫做小IO和写入页面填充的概念,因为在闪存盘处理写入IO的情况中,如果写入的IO小于一个页面的大小,则闪存盘需要进行Read-Modify-Write操作。因此对于闪存盘来说的负载加倍。所以就闪存盘性能来说,73GB和200GB使用的4KB页面大小会好于400GB的16KB页面大小。 最后还要简要提一下闪存盘的应用场景。其实处于成本效益的考虑,闪存盘的使用还是需要有的放矢。根据适合的应用选择,而且结合存储阵列的情况进行综合考虑,作者认为可以从以下几个方面考虑:闪存盘通常还适用于高比例的随机读取和小IO的应用。 如果随机写入的比例大于20%,则是闪存盘最好发挥作用的情况。 闪存盘和存储阵列的缓存相结合。闪存盘很多情况下会加速存储阵列的数据刷新效率,比较典型的就是高负债写入的应用,存储阵列的缓存可以提供更短的前端响应时间,减少从存储阵列缓存中载入和写入后端磁盘速度。但当某些极大的数据库情况下也有可能相反,存储阵列缓存对于大量的写入可能会响应不及,而这种情况,根据使用存储阵列实际情况,可以选择性的跳过存储阵列的写缓存,而直接在后端使用大量(超过30个闪存盘)提供高带宽,当然也要考虑存储阵列是否支持关闭写缓存。 对于数据库应用,闪存盘适用于存放索引、比较繁忙的表、临时空间,而Redo?Log和Archive?log之类则不适合于存储在闪存盘。 对于消息系统(Exchange、Notes),闪存盘适用于存放用户数据库。 ? 参考? Logical?Block?Address?http://en.wikipedia.org/wiki/Logical_block_addressing NAND?http://en.wikipedia.org/wiki/Flash_memory#NAND_flash Read?modify?write?http://en.wikipedia.org/wiki/Read%E2%80%93modify%E2%80%93write 应用于? 存储规划 存储基础 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |