架构设计:系统存储(2)——块存储方案(2)

接上文《架构设计:系统存储(1)——块存储方案(1)

4-2、固态硬盘工作过程

本小节我们要解决一个关键问题:既然机械硬盘和固态硬盘从工作原理、制作工艺、技术规范等多个方面都完全不一样,那为什么无论硬件层是使用机械硬盘还是固态硬盘操作系统却都可以进行识别,并在其上进行数据读写呢?

这个问题中,计算机系统不同层次对数据操作最小单位的定义不一致都还是一个小问题:虽然机械硬盘上数据操作单元为512字节、固态硬盘上数据操作单元为4KB、操作系统层面定义的数据操作单元可能是1KB\2KB\4KB\8KB等等。但是只要这些层次上的文件起始地址都是固定的,则各层的地址对应关系就可以找到的。也就是说操作系统上的地址X可以映射到机械硬盘的地址Y又或者映射到固态硬盘的地址Z,只不过存储小文件时的真实可用空间可能产生误差。

但是这里有一个固态硬盘上的操作规则会引起比较大的问题,这就是固态硬盘对数据的删除操作:固态硬盘在进行数据删除时是按照“块”单位进行的,一个“块”包含128个或者256个Flash Page。当进行删除操作时,SSD主控芯片会首先将这个块中还“有效”的数据移动到属于其它“块”的另一些Flash Page中,然后再进行“无效”数据的清理。也就是说以前操作系统通过地址X的可以读取的文件数据,现在通过地址X就可能读取不到了。那么这些固态硬盘的底层操作过程对于操作系统来说应该是完全透明的,否则操作系统就不能将固态硬盘当成机械硬盘进行操作

这就是说,对于操作系统来说以前使用地址X进行存储的文件,无论什么是否都能够再通过地址X读取到。这里提到了两种地址:一种是操作系统读写文件的地址——称为逻辑地址;另一种是固态硬盘进行文件操作的真实地址——称为物理地址。

FTL(Flash translation layer)闪存地址转换是SSD固态硬盘控制芯片需要负责的主要工作之一,FTL的主要作用就是记录物理地址和逻辑地址的转换关系,FTL的核心是一张物理地址和逻辑地址的映射表,这张映射表存储在固态硬盘一个专门的SRAM/DRAM芯片上或者若干独立的NAND Flash Page 上。正是SSD固态硬盘的控制芯片有这样一个转换过程,操作系统才能将固态硬盘当做机械硬盘进行操作,并且SSD固态硬盘主控制芯片上FTL算法的性能直接影响着整个SSD固态硬盘的性能。请看下图的FTL转换示例:

这里写图片描述

  • 操作系统对磁盘读写操作的最小单位为“簇”(EXT文件系统称为block size)。以NTFS文件系统为例,默认的“簇”大小为4K(当然您可以选择更大的“簇”大小,这样会浪费更多的存储空间,但是可以加快读写性能)。即使一个文件的大小不到4K,也会占用一个“簇”的大小。如果一个文件为210KB,那么理论上就需要占用53个“簇”空间(4KB),或者需要占用105个“簇”空间(2KB)。

  • 当一个210KB大小文件的写请求从操作系统层传来时,都以逻辑地址进行描述。当SSD固态硬盘主控芯片收到这个文件的写请求时,会到FTL映射表中寻找53个空闲的Flash Page来存储这些数据,并将物理位置和逻辑位置的映射关系记录到FTL映射表中;当一个2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值