iplaybit
  • 首页
  • 系统运维
  • IT新闻
  • 科技新闻
  • 关于我们
  1. 首页
  2. 系统运维
  3. 正文

浅析闪存盘(Flash Drive)内部架构与应用考虑

2020年02月17日 508点热度 0人点赞 0条评论
 
介绍
     Flash Drive闪存盘,作为代替使用了几十年的机械硬盘,它与机械硬盘相比有着绝对的性能优势,架构上也与机械硬盘有着很大的区别。本文以摘要的形式梳理了闪存盘的内部结构Page、Block、Channel的作用以及使用闪存盘上的一些性能考虑和使用范围。
 
闪存盘就像一个小型的存储系统,它包括一下的组件:
缓存区(Buffer): 缓存里存着所有区域的索引信息,正在写入的数据、并且使用专用的电容器(Power capacitors)在系统掉电的时候为缓存供电,然后把数据写入到持久存储NAND单元。
页面(Pages):闪存盘内部的芯片通过页面为单位来寻址,73GB和200GB的闪存盘页面大小为4KB,400GB的闪存盘页面大小16KB。页面内容组成连续的寻址空间,就像存储系统中的缓存一样。写入过程中,对于两个2KB的IO在闪存页面中必须写入两个连续的LBA(Logical Block Address),也就是占用两个页面。
扇区(Blocks):NAND类型的闪存盘的映射关系和文件系统类似,多个Pages组成为Block,但是区域中的页面并不是连续的,这个block和SCSI以及文件系统中的block还是有所区别。NAND类型的闪存盘写入都是在Block级别。Block的镜像存储在闪存盘的缓存中,知道一个区域写满了,然后再写入到闪存盘存储单元的Block内。
通道(Channels):闪存盘中芯片处理数据的通路,闪存盘拥有多个通道,保证存储单元可以同时进行读和写的操作,对于大IO,会在多个通道上分段处理。
 
闪存盘中的页面通过几种状态来管理数据状态:
Valid State:包含可用数据
Invalid State: 包含过期数据
Erased State:没有被使用区域
 
     页面状态会受到负载的影响,页面状态也会影响到可用的区域。可用的区域(已经释放的区域)会决定写入的性能。由于随机写入页面变得随机分布,闪存盘使用元数据来定位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),闪存盘适用于存放用户数据库。
 
标签: 存储 机械硬盘 闪存
最后更新:2020年02月17日

iplaybit

点赞
< 上一篇
下一篇 >

文章评论

取消回复
最新 热点 随机
最新 热点 随机
Steam内存测试工具 SPDK详解 Hadoop之HDFS优缺点、设计原理、框架 tmpfs总结 当64核遇上PCIe 4.0 超级算力是这样建成的 Edge for Linux开发者预览将至 WSL子系统可运行带GUI的Linux应用程序
查看华为OceanStor Dorado 18500 V6存储当前的重删压缩比 带你了解固态硬盘 ansible 拷贝文件或目录 Intel Xe独显集齐三种新工艺 高端游戏卡DG2要上台积电5nm? 磁盘检测命令e2fsck与fsck Linux统计某文件夹下文件、文件夹的个数
一起来了解为双屏设备而生的Windows 10X系统
标签聚合
san AMD hp windows 文件系统 cpu 3par 操作系统 存储 docker redo 数据库 intel netapp linux oracle

COPYRIGHT © 2020 iplaybit. ALL RIGHTS RESERVED.

京ICP备18020432号-1