maxkabakov——Fotolia
SNIA的NVM编程模型及其工作原理
存储网络行业协会规范提供了构建非易失性基于内存的存储系统体系结构的标准化方法。我们进行了深入的调查。
存储网络行业协会开发了NVM编程模型来解决非易失性内存功能和技术的扩散问题。该规范为NVM生产者和消费者提供了构建存储和内存系统架构的基于标准的方法。为此,规范定义了与NVM设备接口的软件的推荐行为。
SNIA在2017年发布的最新NVM编程模型规范(1.2版)没有描述具体的API。相反,规范建议如何在用户空间和操作系统之间进行交互内核支持NVM的组件。其目标是在与NVM设备交互的多个操作系统接口(如ssd、PCI卡和其他固态非易失性设备,包括作为内存访问的设备)之间启用通用NVM行为。
该规范着重于将NVM暴露为硬件抽象或者用户空间应用程序的数据抽象(例如文件)。该规范描述了如何发现、连接和使用NVM媒体,包括使软件能够访问和恢复数据的行为。
NVM编程模式
SNIA围绕描述NVM编程接口推荐行为的四种NVM编程模式组织了规范。四种模式地址块存储,文件存储,持久的记忆卷和PM文件。
NVM.BLOCK。第一种编程模式,NVM。BLOCK,是特定于访问NVM的软件块存储设备。设备可以通过一个或多个卷公开,每个卷提供逻辑上连续的块范围。文件系统等操作系统组件可以使用NVM。通过BLOCK方式发现和访问块存储特性。能够直接与块存储交互的应用程序也可以使用这种模式。在这两种情况下,NVM设备都需要一个NVM块驱动程序,该驱动程序向设备提供命令接口。
NVM.FILE。第二种编程模式,NVM。也适用于软件访问NVM块存储设备或其卷。这种模式是特定于那些不能直接与块存储接口,而是依赖本地文件I/O行为通过文件系统访问存储的应用程序。这种方法在许多应用程序中都很常见。的文件系统接口使用NVM的NVM块驱动程序。BLOCK模式,这反过来允许访问NVM设备。
NVM.PM.VOLUME。第三种模式是NVM.PM。VOLUME,它是特定于访问持久内存卷的操作系统组件。这些组件可以包括文件系统或伪块设备,它们的功能基于PM访问。该模式作为PM设备的软件抽象层,分析属性,如与每个卷相关联的物理地址范围。类似于NVM。BLOCK模式,NVM.PM.VOLUME模式需要一个支持pm的驱动程序。
NVM.PM.FILE。最后一种模式是vm . pm . file。它允许用户空间应用程序直接访问NVM设备作为内存。例如,支持pm的文件系统可以基于NVM.PM.FILE模式导出API。然后,用户空间应用程序可以使用API来访问文件系统,而文件系统又可以通过支持NVM PM的驱动程序访问PM设备。file模式定义了一些操作,比如将PM文件映射到虚拟内存地址,或者将PM文件的一部分同步到持久域(数据处于持久状态的点)。
NVM行为
对于每个模式,规范定义动作、属性和用例详细描述了模式的行为。每个操作和属性被分为强制和可选两类。如果是强制性的,它必须包含在软件中,以被认为是符合NVM编程模型的。
操作是指表示NVM设备或与NVM设备交互的操作。一个操作可以是特定于某个模式的,也可以是COMMON域的一部分,这意味着它可以应用于多个模式。所有的动作都由三个部分组成:
< context >。<模式>。<动词>
的> <上下文组件总是NVM,<模式>组件是模式的名称,除非它是COMMON域的一部分,在这种情况下常见的使用关键字。的<动词>组件指的是具体的动作。例如NVM。块模式包括NVM.BLOCK.ATOMIC_WRITE,这是一种强制操作,用于确保在断电情况下的行为一致。
属性提供关于NVM设备属性和功能的信息。与操作一样,属性也由三部分组成:
< context >。<模式>。<名词>
的> <上下文和<模式>组件与操作相同。的<名词>组件表示属性或功能的名称。例如NVM。块模式包括the mandatory attributeNVM.BLOCK.EXISTS_CAPABLE,表示设备是否支持NVM.BLOCK.EXISTS行动。
用例描述实现目标的场景。每个用例标识其目的和上下文,以及解释何时应用该用例的触发器和先决条件。用例还描述输入、输出、事件和操作,并提供相关信息的参考。
例如NVM。块模式包括a use case for implementing flash-based NVM as a data cache. The use case describes how flash's fast random I/O performance and non-volatility make it a good candidate as a data缓存然后解释缓存管理器如何使用固态缓存来提高性能和维护持久性。
符合标准
为了实现遵从性,NVM接口必须提供文档,将NVM编程模型的操作和属性映射到实现中的对应对象。然而,集成标准不应该影响实现的其他方面。目标是尽可能有效地使用NVM媒体,同时增强跨存储系统的互操作性。为此,NVM编程模型为NVM编程接口提供了推荐的行为,但没有描述特定的API或弃用现有的NVM访问模式。