时间:2019-09-19 15:00:03 作者:无名 浏览量:88
即便是在最糟糕的景象下,驱动器应该只是抛弃对512B扇区的支撑,转而采用默认的4KB扇区,可是在需求和旧操作体系兼容的状况下,关于哪些拜访形式能够兼容性作业的提示或许会对实践的操作有所协助。NVMe 1.4版别下的SSD能够和体系通讯并获得更详细的信息,使得诸如写和存储单元重分配(TRIM)等指令能够匹配相关页面的巨细和擦除块的巨细。
NVMe 1.4规范深度解读教程图标3
在NVMe 1.4版别下,驱动器能够陈述命名空间首选写入对齐和命名空间首选的写入粒度,这些值只对NAND页面的一部分运用最小化的“读取—修正—写入”周期。同样的,命名空间首选的存储单元重分配对齐和命名空间首选的存储单元重分配粒度也适用于NVME的存储单元重分配指令,这个指令与ATA TRIM指令相似。
NVMe 1.4规范深度解读教程图标4
对SSD来说,假如不增加写入放大,就很难处理掩盖小数据范围或大数据范围但没有对齐部分的存储单元重分配指令,不然这将会危害功用并增加写入放大。支撑NVMe 1.4的Streams功用的驱动器还能够在运用Streams功用时,供给首选写入和取消分配粒度的提示,这些值一般是上述提示的倍数。
充分利用这些信息的职责现在将会落在操作体系和文件体系上,能够根据此信息设置RAID的条带巨细和文件体系块的巨细。对数据库之类的运用也需求注意到这一点,由于这类运用往往会试图绕过操作体系的大部分存储堆栈,然后自主优化存储功用,这一点在NVMe 1.4布置后需求进行调整。
更快速的过错检测和数据康复机制
NVMe 1.4引入了一些新的功用来协助处理不可康复的读取过错和损坏的数据,尤其是在RAID和相似场景中,这项技能使得主机体系能够简略地从其他地方获取数据来更快地康复损失的数据。
第一个技能被称为读取康复等级断定,也就是Read Recovery Level。这项功用能够答应主机体系自行装备SSD康复损坏区域数据的难度等级。我们知道SSD一般有多个过错校正层,一般来说上层比下层在数据康复方面更为可靠,可是上层的速度会相应更慢且耗电量更高。
在RAID 1或许相似场景中,主机体系一般倾向于快速获取过错,这样它既能够测验从镜像的另一端读取相同的数据,也不用等候驱动器部分进行数据重读的测验,然后再回来ECC校验这样较慢的办法。现在NVMe已经能够支撑有时刻约束的过错康复,也就是TLER,这项技能只答应主机将过错处理时刻约束在100ms以内。
NVMe 1.4规范深度解读教程图标5
相比之下,读取康复等级断定技能能够答应驱动器保存16个不同等级的过错的处理战略,只需求驱动器拥有2种不同的作业形式即可。这个功用将在每个NVM集的等级上进行装备。
接下来的技能是为了自动防止不可康复的读取过错。NVMe 1.4加入了验证和获取LBA状况(Get LBA status)两个指令。其中验证指令比较简略,这个指令除了将数据回来给主机体系之外,它还能够履行正常读取所需求的全部操作。假如读取指令回来过错,那么验证指令也将回来;假如读取指令成功完结,那么验证指令也会成功完结。这个指令的优势在于,其能够在不受主机接口带宽瓶颈的影响下,对存储的数据进行底层整理成为或许。一些SSD将通过移动或许重写降级的数据来响应可修复的ECC过错,验证指令也能够完结相同的行为。
总的来说,验证指令将削减对文件体系等级校验和铲除/验证的需求。别的,在验证指令履行的过程中,每个履行方位都会加入一个位符号,这个符号将指示SSD是应该康复快速失利仍是应该努力康复数据,位符号的功用和读取康复等级断定功用有很相似。
获取LBA状况指令答应驱动器向主机供给一个区块列表。在这个区块列表中,它包含的内容是那些测验读取或许验证指令后或许导致不可康复的读取过错的块。SSD或许已经在自动后台扫描中检测到了ECC过错,或许在更严重的状况下,这个功用能够陈述有哪些LBA受到了整个NAND通道的毛病影响,然后能够避开这些区域。获取LBA状况指令还能够用于要求在回来或许不可康复的区块列表之前,就预先扫描选定的数据范围。
别的,当主机体系发现损坏或许数据丢掉的LBA状况特性时,或许发出读取、验证指令后收到过错,发现数据丢掉时,这个指令还能够将其他地方的数据副本(比方RAID或许备份数据)从头写入到相同的LBA中,然后正常运用这些逻辑块。SSD将在必要的时分彻底关闭受损的物理块防止再次丢掉数据。