NVME-Namespace


NVME-Namespace

參考資料:《深入淺出SSD》 , NVME協議1.3

Namespace

1.概念

NVME SSD主要由SSD控制器,閃存空間和PCIE接口組成,如果把閃存空間划分成若干個獨立的邏輯空間,

每個空間邏輯塊的地址范圍為0到N-1(N是邏輯空間大小),這樣划分的每個邏輯空間叫做Namespace。

 

2.注意

對SATA SSD來說,一個閃存空間只對應一個邏輯空間,對NVME SSD來說,一個閃存空間可以對應若干個邏輯空間

每個Namespace都有一個名稱和ID,系統是通過NS的ID來區分不同的NS.

 

3.案例,將閃存空間划分為兩個NS

以下圖為例

1)把整個閃存空間划分成兩個NS,NS A和NS B,其對應的NS ID分別為1和2.

2)如果NS A的大小是M,NS的大小是N(以邏輯塊大小為單位),那么 它們的邏輯地址空間分別為0到M-1和0到N-1

3)主機讀寫SSD時,首先要指定讀寫的NS,否則對於LBA為0,有兩個邏輯空間都有LBA 0,SSD根本不知道去個邏輯空間讀寫

 

NVME命令中的NS域

1.一個NVME命令有64字節,其中Byte[7:4]指定了要訪問的NS

2.對每個NS來說,都有一個4KB大小的數據結構來描述它(NS的大小,整個空間已經寫了多少,每個LBA的大小,端到端數據保護相關設置,

  該NS屬於某個控制器還是幾個控制器共享等)

3.NS由Host創建和管理,從主機操作系統的角度來看,每個NS就是一個獨立的磁盤,用戶可以在每個NS做分區等操作,比如

  將整個空間划分為兩個NS, NS A和NS B,操作系統看到兩個完全獨立的磁盤

4.每個NS都是獨立的,邏輯塊大小可以不同,端到端數據保護配置也可以不同,你可以讓一個NS使用保鏢,另一個NS不使用報表,第三個NS半程使用保鏢

5.NS更多是應用在企業級,可以根據客戶不同的需求創建不同特征的NS,即在一個SSD上創建若干個不同功能特征的NS(磁盤)供不同客戶使用

 

NS的一個重要使用場合

SR_IOV

1)SR-IOV,全稱為Single Root-IO Virtualization

2)SR-IOV技術允許在虛擬機之間高效共享PCIE設備,並且它是在硬件中實現的,可獲得與本機性能相媲美的IO性能

3)單個SSD可以由多個虛擬機共享,共享的設備提供專用的資源,並且還使用共享的通用資源,以下圖為例

 

 

說明

1)該SSD作為PCIE的一個Endpoint,實現了一個物理功能,有4個虛擬功能關聯該物理功能

2)每個虛擬功能都有自己獨享的NS,還有共享的NS E

3)此功能使得虛擬功能可以共享物理設備,並在沒有CPU和虛擬機管理程序軟件開銷的情況下執行IO

 

多個控制器

對於一個NVME子系統,可以有若干個控制器,即一個SSD有幾個實現了NVME功能的控制器,如下圖

 

 

說明

1)一個NVME子系統包含兩個控制器,可以分別實現不同的功能

2)整個閃存空間划分為3個NS,NS A由控制器0獨享,NS C由控制器1獨享,NS B由兩個控制器共享

      (獨享,即只有與之關聯的控制器才能訪問該NS,別的控制器不能對其訪問;

    共享,即NS B可以被兩個控制器共同訪問,但是要求每個控制器對該共享NS的訪問都是原子操作,以避免同步問題)

 

多個PCIE接口

1.一個NVME子系統可以有多個PCIE接口,如下圖,雙控制器雙端口NVME系統

 

 

說明

1)每一個控制器都有自己的PCIE接口,而不是兩者共享一個

2)這兩個PCIE接口可能連着同一個主機,也可能連着不同的主機

 

2.雙端口子系統連接主機

 

 

 

 說明

1)主機訪問SSD,可以雙管齊下,性能可能更好些

2)對訪問NS B,同一時刻只能被一個控制器訪問

3)可以同時操作NS A 和NS C,性能或多或少會有所提升

4)可以提升系統的可靠性,比如PCIE A接口出現問題,主機可以通過PCIE B無縫銜接,繼續對NS B訪問,但是NS A

 

3.雙端口雙主機系統

一個主機掛了,由另一個主機接管任務,繼續執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM