8.21 使用ANA报告的主机操作

8.21.1 主机ANA普通操作

主机通过在Identify Controller数据结构中CMIC域的第3位来判断是否支持ANA。NSID或标识(参考第7.10章节)用于判断到同一个namespace的多路径什么时候有效。主机测验ANA Log page(参考5.14.1.12章节)对每个controller确定加载到本controller上的每组namespace们的ANA状态。

发送命令到一个namespace,主机应该选择一个报告ANA Optimized State(参考8.20.3.1章节)的controller,把命令发送到这个controller。如果为namespace发现了多于一个的报告ANA Optimized状态的controller,那么主机可以使用所有的这些controller发送命令。

如果对一个namespace未发现报告ANA Optimized状态的controller,那么主机应该为namespace选择报告Non-Optimized状态的controller。如果为namespace发现了多于一个的报告ANA Non-Optimized状态的controller,那么主机可以使用所有的这些controller发送命令。

如果多个controller被使用,决策和选择使用下一个controller的算法超出了本规格说明书的范围(例如:主机可以选择简单的轮询,队列深度加权算法,传输长度加权算法,或其他算法)。

对namespace如果没有报告ANA Optimized状态的controller,且也没有controller报告ANA Non-Optimized状态,主机应该检测controller报告的ANA Inaccessible状态,参加第8.21.2章节中描述。

8.21.2 主机 ANA Inaccessible操作

如果ANA Log page报告一个ANA Group处于ANA Inaccessible状态,或命令返回Asymmetric Access Inaccessible状态码,那么主机应该:

  • 不要使用那个controller发送命令到任何ANA Group中的namespace;
  • 选择一个其他controller来发送命令到所有那个ANA Group中的namespace;

如果没有controller对namespace报告ANA Optimized状态,也没有controller报告ANA Non-Optimized状态,那么可以发生状态切换影响controller报告ANA Inaccessible状态。作为结果,主机应该使用Host ANA Transition操作(参考8.21.4章节)描述的方法来判定是否在ANATT时间间隔内controller报告ANA Inaccessible状态转换ANA状态,通过controller来使能命令去处理。

8.21.3 主机ANA Persistent Loss操作

如果ANA Log page报告一个ANA组的ANA状态为ANA Persistent Loss 状态,或命令返回Asymmetric Access Persistent Loss,那么主机不应该在使用那个controller去发送命令到任何ANA组中的namespace,发送命令到任何ANA组的namespace请选择一个其他的controller。如果controller支持Namespace Management,一个ANA组中的namespace报告这个状态应该卸载掉。

8.21.4 主机ANA切换操作

对于一个ANA Group组如果ANA Log page报告一个ANA变更状态的ANA状态,或命令返回Asymmetric Access Transition状态码,那么主机应该临时的不使用这个controller发送命令到这个ANA Group中的任何namespace。如果只有controller报告ANA Inaccessible State有效,那么主机应该按下边步骤来判断用哪个controller。用controller,主机可以:

a)如果Asymmetric Namespace Access Change Notices在controller上被使能(参考5.21.1.11章节),等待来自这个controller的Asymmetric Namespace Access Change Notice。此后通知的接收,主机应该检测ANA Log page去确认新的ANA状态和恢复基于新ANA状态发送命令。这个通知应该在ANATT时间内产生;

b)在ANATT时间间隔内延时和重试命令。主机不是立即重试,更确切的说,为命令重试目的把ANATT时间划分成若干份相等间隔(例如:如果ANATT是30,执行3次间隔10s,或执行10次间隔3s)。ANATT时间间隔即将完成或在此期间,ANA Group的ANA状态应该公知的(例如:一个命令重试返回不同的状态表明新ANA状态转换完成)。如果重试的命令没有完成没有错误,ANA Log page应该在每个提供到namespace的访问的controller上被检测,主机应该重新发起基于新ANA状态发送命令。

如果ANATT时间间隔超期,那么主机应该使用其他controller去发送命令到ANA Group中的namespace。由controller呈现的ANATT间隔报告应该防止这种时间超时的类型发生。

8.21.5 主机ANA转换操作

从controller收到Asymmetric Namespace Access Change Notice可能表明:

a)ANA状态上报一个或多个ANA Group Descriptors中有变更;

b)一个新的NSID被添加到一个或多个ANA Group Descriptors;

c)一个NSID被从一个或多个ANA Group Descriptors中移除;

d)如果Identify Controller数据结构中ANACAP域的第6位被清零(参考Figure 247),Namespace的NSID被从一个ANA Group Descriptor中移到另一个ANA Group Descriptor。

作为接收一个Asymmetric Namespace Access Change Notice的结果,主机应该读ANA Log page来检查以上这些每个可能的变化。

8.21.6 所有路径Down情况

当主机访问ANA Group中的namespace没有有效路径时就出现了所有路径down。为确认是否全路径down情况发生,主机可以在每个提供访问指定ANA Group中namespace的controller上测验ANA Log page。所有未处于ANA Persistent Loss状态的路径都应该被检测。在ANATT时间间隔内如果没有叨叨那个ANA Group的namespace路径有效(即:转换成ANA Optimized状态或ANA Non-Optimized状态),那么对于那个ANA Group中的namespace来说所有的路径down条件已发生。

《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.21)-- Host Operation with Asymmetric Namespace Access Reporting的更多相关文章

  1. 2019/1/10 redis学习笔记(二)

    本文不涉及集群搭建操作 关于在lua脚本中操作redis的应用场景 大家都知道redis对于单个集合的操作是原子性的;但是有可能有一种场景是这样.比如说抢红包,现在有十个人抢五份红包,抽象到我们jav ...

  2. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(1)

    材料说明: 文档<NVM-Express-1_4-2019.06.10-Ratified.pdf>来自于NVMe网站:https://nvmexpress.org/ 笔记目的是学习NVMe ...

  3. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.20)-- ANA

    8.20 非对称namespace访问报告 8.20.1 非对称namespace访问报告概况 非对称Namespace访问(ANA)在如下场景下产生,基于访问这个namespace的controll ...

  4. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  5. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command

    5.2 异步事件请求命令 异步事件用于当状态.错误.健康信息这些事件发生时通知主机软件.为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller ...

  6. Effective STL 学习笔记 Item 21:Comparison Function 相关

    Effective STL 学习笔记 Item 21:Comparison Function 相关 */--> div.org-src-container { font-size: 85%; f ...

  7. Flutter学习笔记(21)--TextField文本框组件和Card卡片组件

    如需转载,请注明出处:Flutter学习笔记(21)--TextField文本框组件和Card卡片组件 今天来学习下TextField文本框组件和Card卡片组件. 只要是应用程序就少不了交互,基本上 ...

  8. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.23)-- Format NVM command

    5.23 Format NVM command - NVM Command Set Specific Format NVM命令用于低级格式化NVM媒介.这个命令被host主机使用,来变更LBA数据大小 ...

  9. 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(8.8)-- Reservations

    8.8 Reservations 预订 NVMe的reservation预订功能,用于让两个或多个主机能够协调配合的访问共享namespace.使用这些功能的协议和方式超出了本规格说明书的范围.对这些 ...

随机推荐

  1. cf877D

    题意简述:矩阵中有的点不能走,你每次可从四个方向走,至少走一步,最多走k步(不能横跨那些不能走的格子),问从(sx,sy)走到(tx,ty)的最短时间是多少? 题意:利用set来加速bfs的过程,原理 ...

  2. OSI七层协议大白话解读

    参考链接:https://www.cnblogs.com/zx125/p/11295985.html 国际标准化组织(ISO)制定了osi七层模型,iso规定了各种各样的协议,并且分了7层 应用层 应 ...

  3. NetCore文件上传校验返回未授权401,文件仍然执行上传操作,要如何解决呢

    这是代码:https://files.cnblogs.com/files/suterfo/NetCoreTestPro.rar 运行步骤: 一.使用Visual Studio2017打开项目,并F5运 ...

  4. C# convert json to datatable,convert list to datatable

    static DataTable ConvertJsonToTable(string jsonValue) { DataTable dt = (DataTable)JsonConvert.Deseri ...

  5. 覆盖的面积 HDU - 1255 线段树+扫描线+离散化 求特定交叉面积

    #include<cstdio> #include<map> #include<algorithm> using namespace std; ; struct N ...

  6. 电脑和手机上常用apk或Pc软件的重要目录或文件或文件夹路径

    常用apk或Pc软件的重要目录或文件或文件夹路径 01.hosts文件位置在哪里 C:\Windows\System32\drivers\etc 02.Windows7的锁屏壁纸目录在哪 C:\Win ...

  7. STL-queue 队列

    #include <iostream> #include <queue> using namespace std; int main() { // queue也很简单 // p ...

  8. 安卓平台SQLite数据库基础操作总结

    最近学了一些安卓开发,在这里分享一下SQLite数据库的使用相关部分,我使用的工具为Android Studio,后台语言为java: 首先,需要创建一个数据库辅助类DataBaseHelper,用于 ...

  9. 如何通过 SSH/Telnet 用 root 权限登录群晖

    出于系统安全原因,对 Synology NAS 的 root 访问有限.如果您获取 root 权限,请在命令行界面中用任何属于Local Administrators群组的帐户证书登录 DSM(如Pu ...

  10. 编程中的幂等性 —— HTTP幂等性

    幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法, ...