最近被NVMe SSD 这个东西搞得有点迷糊, 总结一下

SATA, SAS, PCIe 都是总线规范, 或者叫电气接口

SCSI, NVMe 是存储协议

NAND, 3D-Xpoint 是介质

我们用的比较多的是SATA SSD, PCIe SSD, NVMe SSD, Optane

常用的SATA SSD 对应的存储命令协议是SCSI, PCIe SSD 对应的存储命令协议一般是NVMe.

所以我们常说的 SATA SSD 指的是 NAND SATA/SAS SCSI SSD. PCIe SSD 指的是 NAND PCIe NVMe SSD, NVMe SSD 指的也是 NAND PCIe NVMe SSD. Optane(Intel 产品) 指的是 3D-Xpoint PCIe NVMe SSD

不管是用户态还是内核态, 都需要有对应的存储协议的支持, 所以对应的内核上都要有对应driver, 比如 SCSI 就是 isci, NVMe 就是nvme 这个驱动, 这个驱动做的事情就是封装对应格式的命令包, 传输给SSD上, SCSI 就封装成isci IO命令包, NVMe封装成 NVMe IO命令包.

NVMe 一般会有用户态的驱动, spdk 里面就包含. NVMe 使用内核态也可以把硬件跑满, 但是使用SPDK 的话, 因为使用poll 和 SPDK 的大页机制, 可以让负载比较低的时候 IO 延迟更短

所以我们一般常说的PCIe SSD, 一般就是NVMe SSD

NVMe SSD的读大概50us, 写大概可以达到10+us. 因为NVMe内部有ram, 这个写入时间是写到NVMe内部ram 的时间, NVMe自带掉电保护, 所以可以认为写入到内部的ram 就落盘了. 这个ram 的大小是具体根据不同厂商不一样

目前更快的是3Dxpoint 介质的optane/AEP

这两个 optane/AEP 都是intel 的产品. optane也是基于PCIe 的NVMe SSD, AEP 走的是内存设备总线, 所以是内存总线的 NVMe SSD


<
Previous Post
关于Paxos 幽灵复现问题的看法
>
Next Post
The design of mysql8.0 redolog