固态存储概念:
1、MSB-Most Significant Bit LSB -Last Significant(有意义的,有效的) Bit,比如某个寄存器为8位,但是 程序没有这么多数据要放,只能用到6位,此时MSB就是5,LSB就是0。
2、SSD的上/下页:Upper Page(多个Cell的MSB组成的page)和Lower Page (多个Cell的LSB组成的page);快页和慢页还须具体区分读写场景来看:MSB读快,写慢;LSB读慢,写快。
3、NAND Flash物理限制:充电量必须逐级增加,而 不可能一开始充过头了再放电, NAND Flash放电要放掉整个Block的电。
4、 NAND由来: NAND Flash每次I/O单元为一个Page,一般为8k/16k,要读取某个Page,需要将Block中所有Page里的Cell强行导通,需要找一个参考电压来与列输出电压进行比较,列输出电压高,SAMP(Sense Amplifier)的输出为逻辑1,表示待读取Cell中没有充电;反之为0,这就是NAND,Not AND中Not的意义:也就是实际含义(1-0)与表象电压值(不充电-充电)相反。
5、对于PCIe接口的、NVMe访问协议的 固态盘,目前的Raid卡是无能为力的,因为目前的Raid卡只提供了SAS/SATA接口接入硬盘。可行的选项是在主机端采用软件做Raid,例如使用Linux内核自带的MD Raid模块。
6、NCS8000全闪存阵列的每个闪存模块包含1、2或4个闪存控制器,每个闪存控制器包含16个NAND闪存芯片,每个闪存芯片包含8个Die,每个Die包含2个Plane,每个Plane包含1024个Block,每个Block包含512个Pages,每个Pages为16KB。
7、PCIe设备在系统掉电之后会收到一个中断信号,内部的CPU可以利用这几十毫秒的时间打扫现场;对于那些没来得及写入Flash的表,如果是Device Based的,掉电后可以依靠SSD内的电容,将长脏页面在几十毫秒内迅速写入Flash。
8、带RAID功能的HBA被称为RAID卡。在HBA上增加或者增强对应资源,比如嵌入式CPU、板载DRAM、硬加速计算逻辑等,便可实现各种RAID了,此时HBA上报给OS的并不是其下挂的物理资源,而是经过RAID虚拟化之后的逻辑资源。有SCSI RAID卡,SATA RAID卡,SAS RAID卡。
9、通信是双方的,所有设备必须被接入I/O通道控制器上,比如IDE------IDE控制器,SATA盘-----SATA控制器,SAS----SAS控制器,SCSI、
PCIe等各自也都有各自的控制器。这些I/O通道控制器在后端通过各自的连接器将1个、2个或者多个设备通过各自不同的总线方式挂接上,在前端则通过PCIe或者内部私有总线与系统I/O桥连接,I/O桥再通过更高速的总线连接到CPU。所以这类控制器又被称为总线适配器,如果将这类I/O控制器做成一张板,插到PCIe槽上与I/O桥连接,则称之为HBA(Host Bus Adapter):有SCSI HBA,FC HBA,SAS HBA,以太网HBA,InfiniBand HBA。对于SATA、IDE、PCIe、EMMC(贴片方式连接)、UFS
(贴片方式连接)这些协议的接口控制器,由于太过常用,一般都被集成到系统I/O桥芯片中了,不需要转接到PCIe外扩出HBA来。
10、
PCIe控制器是直接集成到CPU里的,不需要HBA,最多也只是用一个
连接器转接板将CPU上的PCIe的I/O管脚连接到外部连接器或者插槽上。
11、Combo即三模式(Tri-mode)的槽位可以插SATA/SAS/NVMe SDD。
12、
NVMe最好直接over到PCIe上,因为目前来讲,PCIe的物理层+链路层+网络层+传输层还是非常高效的;处于扩展性考虑,也可以
NVMe over TCP/IP,
NVMe over FC等。
13、SAS和SATA的连接器看上去差不多,但仔细观察会发现SATA连接器中间的缺口在SAS上是被补平的,其反面其实还有7根数据线,这就是企业级冗余所要求的
双端口,这第二个数据口接入到第二个SAS控制器或者Expander上。
14、物理层连接器:U.2连接器(SFF8649连接器),其中包括SAS、SATA和PCIe x4三套接口,充分利用空间,将三套金手指信号做到接口上,
各干各的。意味着可以插入一块SAS、SATA或PCIe盘,
U.2实质上是一种
Combo组合接口。M.2连接器,广泛用于平板电脑里的固态存储介质。其底层可承载PCIe传输协议,然后可以SCSI over PCIe,NVMe over PCIe。
15、SCSI协议体系其实从物理层到应用层都有定义,后期SCSI体系的下四层被其他协议取代,iSCSI+TCP/IP+以太网相当于取代了下四层,所以SCSI上三层不需要自己去发现网络里的节点和Target了,这些都有iSCSI这个代理去完成。存储系统一侧运行iSCSI Target,其作用是接收iSCSI Initiator端传输过来的SCSI协议指令和数据,在
iSCSI Initiator端程序中需要配置所需要连接的
iSCSI Target端的IP地址。
Initiator端向OS内核注册从
Target端获取到的Lun,OS内核便针对每个Lun加载其各自的驱动(Windows下就是Class Driver,Linux下就是Block Driver/Tape Driver),便在对应的/dev/下生成各自的设备,所以,
iSCSI Initiator其实是一个虚拟的Port Driver,其通过调用TCP/IP,TCP/IP再继续调用底层网卡Port Driver实现数据传输。
WWPN相当于以太网的MAC地址。