1. 程式人生 > 其它 >NVME(學習筆記八)—Asymmetric Namespace Report

NVME(學習筆記八)—Asymmetric Namespace Report

8.20 非對稱namespace訪問報告

8.20.1 非對稱namespace訪問報告概況

  非對稱Namespace訪問(ANA)在如下場景下產生,基於訪問這個namespace的controller和NVM subsystem內部配置,namespace訪問特徵(例如效能或範圍媒介的能力)可能變化。ANA(Asymmetric Namespace Access)Reporting用於指示關於這些訪問特徵的主機資訊。

  共享namespace可以藉助於多PCIe埠或網路埠(涉及NVMe over Fabrics)通過controller們被訪問。提供對共享namespace訪問的controller們可以通過所有controller提供相同的訪問特徵,也可以通過部分controller們提供不同的訪問特徵。(提供相同特徵屬於對稱訪問,提供不同的訪問特徵屬於非對稱訪問)。

  私有namespace在同一時刻只能通過一個controller被訪問。通過那個controller持有的namespace的訪問特徵,可能作為NVM subsystem內部配置變化的結果被嵌入的。如果通過該controller的namespace訪問特徵受到NVM subsystem內部配置的影響,那麼就會發生非對稱訪問。

對namespace的對稱訪問發生在:

  • 使用一個controller時的訪問特徵與使用不同controller時的訪問特徵相同;
  • 對NVM子系統內部配置的更改不會影響訪問特性;

對namespace的非對稱訪問發生在:

  • 使用一個controller的訪問特徵可能與使用不同controller時的訪問特徵不同;
  • 對NVM子系統內部配置的更改可能影響訪問特性;

  當命令可能通過任意附帶的controller非對稱傳送到一個共享namespace,特徵可能根據使用的controller不同而存在差異;因此,當選擇用於每個命令的controller訪問namespace時主機應該考慮這些特徵。NVM subsystem可以可以執行自主的內部重新配置,從而改變訪問特性。

  如果NVM subsystem支援非對稱namespace訪問報告,NVM subsystem中的所有controller們必須:

  • 把Identify Controller資料結構中的Controller Multi-path I/O和namespace共享功能(CMIC)域的第3位設定為1,表示支援非對稱namespace訪問報告;
  • 把Identify Controller資料結構中的Asymmetric Namespace Access Capabilities(ANACAP)域第0位設定為1,表示ANA Optimized狀態可以被報告的;
  • 如果ANA Non-Optimized狀態可以被報告,把Identify Controller資料結構中的ANACAP域的第1位設定為1;
  • 如果ANA Inaccessible狀態可以被報告,把Identify Controller資料結構中的ANACAP域的第2位設定為1;
  • 如果ANA Persistent Loss狀態可以被報告,把Identify Controller資料結構中的ANACAP域的第3位設定為1;
  • 如果ANA Change狀態可以被報告,把Identify Controller資料結構中的ANACAP域的第4位設定為1;
  • 支援ANA變化通知(請參考5.21.1.11章節);
  • 支援ANA log page(請參考5.14.1.12章節)。

  Namespace載入到controller支援ANA報告,必須:

  是一個ANA Group的成員;

  在Identify Namespace資料結構中的ANAGROUPID域裡提供一個有效的ANA Group ID(請參考圖Figure 245)。

  Figure 491展示一個例子,訪問特徵多樣化的NVM subsystem,呈現兩個獨立的域。在這個例子中,非易失儲存媒介namespace B和namespace C都包含在controller包含的同一個domain域裡。結果是,controller 2提供對namespace B和namespace C的最優訪問,而controller 1不能提供對namespace B和namespace C的最優訪問。

  為了通過controller 1提供對namespace B最優訪問,NVM subsystem可以重新配置或可以自動執行內部重配置動作來改變通過controller 1和controller 2對namespace B的訪問特徵,如圖Figure 492所示。controller 2提供對namespace C的最優訪問,而controller 1提供對namespace B的最優訪問。 

8.20.2 ANA組

  同一ANA組的成員namespace執行完全相同的非同步ANA狀態轉換。ANA組為ANA組中的所有成員namespace維護相同的ANA狀態(一個namespace的ANA狀態變化只能作為ANA組的所有成員namespace的一部分發生變化)。分配namespace到ANA組的方法超出了本規格說明書的範圍。

  一個有效的ANA組ID是一個非零值,小於或等於ANAGRPMAX(參考Figure 247)。

  每個ANA組的ANA組ID(ANAGRPID)應該在NVM subsystem中是唯一的。如果Identify Controller資料結構中ANACAP域的第6位被設定為1,那麼當namespace在NVM subsystem中已經載入到了任何controller後ANA組ID不能變化,如果ANACAP域的第6位為0,那麼當namespace在NVM subsystem中載入到一個controller後ANA組ID還可以變化。如果ANA組ID變化,controller應該釋出第8.20.3.6章節中描述的那個Asymetric Namespace Access Change Notice。

  Figure 493展示四個namespace:

  • 私有namespace A 在第一個ANA組中;
  • namespace B和namespace D同時在第二個ANA組中;
  • namespace C在第三個ANA組中。

 8.20.3 ANA狀態

  Asymmetric Namespace Access State表示關於controller與ANA組之間的關係特徵的資訊。如下是定義的非對稱namespace訪問狀態:

  •  ANA Optimized ;
  •  ANA Non-Optimized ;
  •  ANA Inaccessible ;
  •  ANA Persistent Loss ; 
  •  ANA Change .

8.20.3.1 ANA Optimized 狀態

  當controller和ANA組之間的關係處於這個狀態,這個組中到每個namespace的關係特徵都是optimized。controller處理的命令報告這個可以對這個ANA組中的任何namespace都可以提供最優訪問特徵。controller支援ANA Reporting就應該支援報告這個狀態。

  當處於這個狀態時,所有被這個namespace支援的命令,功能,和操作應該依照本規格說明書中描述的執行。

8.20.3.2 ANA Non-optimized 狀態

  當controller和ANA組之間關係於處於這個狀態時,這個組中到每個namespace的關係特徵都是Non-optimized。controller處理的命令報告這個可以對這個ANA組中的任何namespace都可以提供Non-optimized訪問特徵(例如一些命令的處理,特別是那些涉及資料傳輸,相比於controller報告optimized狀態,可以低效能操作和使用更少的有效NVM subsystem資源)。對報告這個狀態的支援是可選的。

  當處於這個狀態,所有被namespace支援的命令,功能,和操作應該依照本規格說明書中描述的執行。

8.20.3.3 ANA Inaccessible 狀態

  當controller和ANA組之間關係於處於這個狀態時,這個組中到每個namespace的關係特徵都是Inaccessible。被controller處理的命令報告這個可以對這個ANA組中的任何namespace都不能訪問使用者資料。報告這個狀態之後的將來(例如隨後ANA狀態發生了變化),namespace也可以變為通過這個controller可訪問。對報告這個狀態的支援是可選的。

  當處於這個狀態,準確的namespace相關能力資訊或許獲取不到了。因此,一些Identify namespace資料中返回的namespace能力資訊被置成了0。對於namespace能力資訊,主機應該使用通過處於ANA Optimized或ANA Non-optimized狀態的controller返回的資訊。

  除了那些在第8.20.4章節中描述的命令,如果這些命令是在命令指定的namespace與處理命令的controller之間的關係處於這種狀態時提交的,controller應該讓命令失敗,返回Asymmetric Access Inaccessible狀態碼。

  對於namespace,當被controller報告ANA Inaccessible狀態,主機應該在其他報告ANA Optimized狀態或ANA Non-optimized狀態的controller重新嘗試命令。如果沒有controller報告ANA Optimized狀態和ANA Non-optimized狀態,那麼可以發生如下轉換,controller報告Inaccessible狀態可以變成accessible,主機應該在報告Inaccessible狀態的controller上重試命令至少ANATT秒(參考Figure 247)。參考第8.21.2章節。

8.20.3.4 ANA Persistent Loss 狀態

  當controller和ANA組之間關係於處於這個狀態時,這個組中到每個namespace的關係特徵都是持久地不可訪問。被對ANA組報告這個狀態的controller處理的命令都持久地不能訪問那個ANA組中namespace的使用者資料。controller和ANA組之間的關係處於此狀態的,不應轉換到任何其他ANA狀態。對報告這個狀態的支援是可選的。

  當處於這個狀態,準確的namespace相關能力資訊或許獲取不到了。因此,一些Identify namespace資料(例如NUSE域和NVMCAP域)中返回的namespace能力資訊被置成了0。對於namespace能力資訊,主機應該使用通過處於ANA Optimized或ANA Non-optimized狀態的controller返回的資訊。

  除了那些在第8.20.4章節中描述的命令,如果這些命令是在命令指定的namespace與處理命令的controller之間的關係處於這種狀態時提交的,controller應該讓命令失敗,返回Asymmetric Access Persistent Loss狀態碼。

  對於namespace,當controller報告ANA Persistent Loss狀態,主機應該在其他報告ANA Optimized狀態或ANA Non-optimized狀態的controller上重試命令。如果沒有controller報告ANA Optimized狀態和ANA Non-optimized狀態,那麼可以發生如下轉換,controller報告Inaccessible狀態可以變成accessible,主機應該在報告Inaccessible狀態的controller上重試命令至少ANATT秒(參考Figure 247)。

8.20.3.5 ANA Change 狀態

  從一個ANA狀態到另一個ANA狀態的變化被稱為a transition轉換【或狀態切換】,狀態切換髮生在如下方式,ANA變化狀態對主機不可見(例如ANA變化狀態可以在Asymmetric Namespace Access log的Asymmetric Namespace Access State域中報告,也可以不報告),對報告這個狀態的支援是可選的。

  除了那些在第8.20.4章節中描述的命令,如果這些命令是在命令指定的namespace與處理命令的controller之間的關係處於這種狀態時提交的,controller應該讓命令失敗,返回Asymmetric Access Transition狀態碼。

  對於namespace,當ANA 變化狀態時被controller報告,主機應該:

  a)短暫的延時之後,在同一個controller上重試命令,延時至少ANATT(參照Figure247)秒(例如,如果ANATT是30,用10秒間隔執行3次重試,或間隔3秒重試10次);

  b)在其他報告ANA Optimized狀態或ANA Non-optimized狀態的controller上邊重試命令。

8.20.3.6 Asymmetric Namespace Access Change Notifications

  在controller上如果Asymmetric Namespace Access Change Notices被使能(參考第5.21.1.11),那麼發生變化時Asymmetric Namespace Access Change Notice應該被controller傳送,傳送變化的地方:

a)如果ANA組ID變化;

b)如果ANA狀態轉換失敗(例如狀態轉換已經開始但沒有完成,或controller返回了轉換之前存在的狀態);

c)在進入一下ANA狀態時:

  • ANA Optimized狀態;
  • ANA Non-optimized狀態;
  • ANA Inaccessible狀態;
  • ANA Persistent Loss 狀態。

8.20.4 ANA狀態命令處理影響

Admin命令的處理,如下特點的Admin命令:

  • 非NVM Command命令集指定的命令;
  • 不使用Namespace Identify(Figure 139 - “Namespace Identify Used”列標識為“No”),

  不受ANA狀態的影響,除了下邊Figure 494指定的。

  Figure 494 描述對命令處理的ANA影響

與ANA相關的其他補充內容

1)主機 Identify Controller data structure時,儲存端需提供如下資訊:

1.1)CMIC資訊,標識Controller是否支援多路徑I/O

1.2)Controller支援多路徑I/O時,ANA相關引數

2)主機 Identify Namespace data structure時,儲存端需提供如下ANA相關資訊:

3)get feature時,儲存端需提供如下ANA相關資訊:

     只涉及了查詢Asynchronous Event Configuration,無單獨查詢ANA的feature。

4)get log page時,儲存端需提供如下ANA相關資訊:

     請參考Get Log Page的5.14.1.12 Asymmetric Namespace Access (Log Identifier 0Ch):

     https://www.cnblogs.com/JamesLi/p/13162892.html

5)非同步事件通知,涉及如下ANA相關資訊:

  詳情參考非同步事件的細節;

轉載於:《NVM-Express-1_4-2019.06.10-Ratified》學習筆記(8.20)-- ANA - JamesLi_1119401255 - 部落格園 (cnblogs.com)