之前的几篇主要是针对机械硬盘的。目前ssd的应用越来越广泛,值得我们花精力去琢磨。SSD硬盘是纯电子技术的产物,因为不同于机械硬盘IO依赖于两个耗时的机械轴行为:磁盘旋转和寻道,SSD硬盘的访问延迟远低于机械硬盘磁盘,尤其是在随机IO下。今天我们从底层入手,看看SSD的几种内部机制。SSD的组成和结构机械硬盘和ssd虽然都是硬盘,但是底层的实现技术是完全不同的。机械硬盘采用磁性材料存储器,而SSD采用类似于U盘的闪存技术。实现技术的不同,必然与硬盘内部结构有天壤之别。他们的照片对比如下图所示:与机械硬盘中的一堆圆盘不同,SSD是由一些电路和黑色存储颗粒组成的。SSD硬盘基于NANDFlash存储技术,是一种非易失性存储设备。换句话说,即使关闭电源,数据也不会丢失。其中,我们眼睛看到的黑色存储颗粒称为一个NANDPackage,每个Package都会包含多个Die。让我们“拆开”一个Die看看。每个Die有几个Planes,每个Plane有几个Block,每个Block有几个Page。页是磁盘读写的最小单位,一般为2KB/4KB/8KB/16KB。SSD中的扇区我们在前面介绍机械硬盘的时候说过,由于历史原因,512KB扇区的概念在操作系统等软件中“根深蒂固”。虽然新的机械硬盘已经做到了4KB的物理扇区,但是也没办法。为了与旧系统兼容,必须调整逻辑扇区的概念。SSD也是如此。虽然每个物理页的大小从2K到16K不等,但是为了兼容性,也必须创建一个逻辑扇区。从逻辑上讲,SSD控制器会将整个磁盘重新划分为一个个“扇区”,使用与新机械硬盘相同的LBA方式进行寻址(整个磁盘的扇区从0到某个最大值排列),并连接成一条线)。当需要读取某些“扇区”上的数据时,SSD控制器访问LBAMapTable,然后找到真正要访问的物理Page,如下图所示:但是SSD的最小读写单元是Page,不是方法,只读写扇区。在底部的闪存单元上,我们可以看到SSD是由一个个Pagegroups组成的。并且在每一个Page中,都包含了很多的闪存单元。.现代闪存单元的种类很多,目前主流的主要分为SLC、MLC和TLC。在SLC中,一个cell的电压只有高低之分,所以只能代表1bit的数据。对于MLC,一个单元内的电压按高低分为四种状态,所以可以表示2bit。对于TLC来说,一个单元要分成8个不同电压等级的状态,才能代表3bit。由于TLC需要八种不同的电压状态来进行数据读写,应用不同的电压状态需要更高的精度和更长的时间才能实现。另外,由于电压状态较多,出错的可能性也会较大。因此,以上三种闪存单元的对比:从性能和稳定性来看,SLC是最好的。从容量上看,TLC是最大的。这就是为什么我们看到的工业级SSD要比笔记本SSD贵很多的原因。其中一个重要的原因是工业级磁盘使用的闪存单元往往是SLC或者MLC,而我们家用笔记本一般是TCL,因为便宜。我们用表格来直观地比较一下:闪存类型单格电压变化单格表示位数速度擦除倍数价格SLC(Single-LevelCell)2快1bit约10W第二贵MLC(Multi-LevelCell)42-bit型一般是一般TLC(Trinary-LevelCell)的3K倍左右,3-bit的八种慢1K倍左右,价格便宜。目前个人PC中使用的主流闪存类型多为TLC,因为其价格低廉且容量大。思考假设一个SSD的页面大小是4KB,一个文件是16KB。那么文件是存储在一个黑色的存储粒子中,还是有多个呢?我们先用一张更直观的图来看一下SSD的逻辑结构:假设只写入一个粒子,那么读取文件时,只能使用一个Flash通道,所以速度会比较慢。如果有4个相邻的粒子,每个写入4KB。这样可以充分利用多个Flash通道的带宽,传输速度会更快。因此,在现实中,它是分散的。练内功练硬盘特技:1、开盘:剥去机械硬盘的硬外衣!2.磁盘分区也暗示技术水平。3、机械硬盘速度慢,容易坏,如何解决?4.拆解SSD结构5.一个新的空文件占用多少磁盘空间?6.一个只有1字节的文件实际占用多少磁盘空间?7、为什么文件太多时ls命令会卡住?8.理解格式化原理9.读取文件一个字节实际会发生多少磁盘IO?10.文件写入一个字节后什么时候开始写磁盘IO?11、机械硬盘的随机IO比你想象的要慢。12、服务器配置固态硬盘比机械硬盘快多少?我的公众号是“练内功练功”。在这里,我不是简单地介绍技术理论,也不是只介绍实践经验。而是理论联系实际,用实践加深对理论的理解,用理论提高技术实践能力。欢迎关注我的公众号,分享给你的朋友吧~~~
