NVM Command是NVMe协议里面的IO命令,主要包含Write、Read、Compare、Verify、Write Zeroes、Write Uncorrectable、Reservation这些命令。命令下发需满足以下两点:控制器状态寄存器(CSTS.RDY);创建了适当的I/O SQ和CQ。
检查当前磁盘支持哪些NVM Command
我们知道并不是所有NVM Command盘片都支持,在协议里只规定Flush、Write、Read命令是强制要求的,其他的都是可选项。所有我们在使用时,需要查看一下命令是否支持。可以通过查看Identify Controller Data Structure的ONCS[521:520]查看命令是否支持。
Bit 7:如果置1,则主控支持Verify命令;否则不支持;
Bit 5:如果置1,则主控支持Reservations;否则不支持;
Bit 3:如果置1,则主控支持Write Zeroes;否则不支持;
Bit 2:如果置1,则主控支持Dataset Management;否则不支持;
Bit 1:如果置1,则主控支持Write Uncorrectable;否则不支持;
Bit 0:如果置1,则主控支持Compare命令;否则不支持;
NVM Command详解
注:命令下发使用nvme-cli做演示。
一、Flush命令
用于请求使易失性写缓存的内容的内容具有非易失性,即Flush命令应将与指定命名空间相关联的数据和元数据提交给非易