實錘,PBlaze5實力演繹multiple namespaces 功能(下)
上篇文章介紹了一系列的基礎概念,並對Multiple namespaces的一些基本使用方法進行了介紹。這篇文章將繼續討論Multiple namespaces的優勢,並以PBlaze5為例解讀Multiple namespaces的使用和配置。
為什麼要用 Multiple Namespaces
看起來用法並不難,那麼使用Multiple Namespaces有什麼好處呢?簡單羅列幾個場景:
- 控制邏輯範圍
可以在建立namespace時,確定利用的邏輯塊的範圍,有效控制使用者空間大小,甚至達到擴大OP,增加壽命的效果。 - 獨立無擾
多個namespace之間的format格式、邏輯地址、IO路徑都是相互獨立的。比如,
nvme0n1 format成512B的,nvme0n2 format成4096B的完全沒問題;
nvme0n3支援資料保護,nvme0n4不支援資料保護,OK;
nvme0n5做共享namespace,nvme0n6做私有namespace,也OK;
…
IO在每個namespace上都是相對獨立,互不干擾的,每個namespace的使用者都可以從0開始讀寫,但之間沒有任何干擾,資料沒有交集。放心大膽的trim一個namespace,另一個namespace繼續讀寫,高枕無憂。 - Dual Port
multiple namespaces的private/shared namespace可以和雙埠結合,成為雙埠+多名稱空間應用場景,給上層應用提供更多可能。這也是PBlaze5的一個重要的功能。
multiple namespaces的private/shared namespace可以和雙埠結合,成為雙埠+多名稱空間應用場景,給上層應用提供更多可能。這也是PBlaze5的一個功能。如下圖所示,NS A是portx的private namespace,NS C是porty的private namespace, NS B是portx和porty的shared namespace。
雙埠 + Multiple namespaces
雙埠與 Multiple namespace 結合之後,portx 可以訪問 NS A 和 NS B,porty 可以訪問 NS B 和 NS C,同時,portx 可以看到 NS C 但是不能訪問它,porty 可以看到 NS A 但是不能訪問它。可以說,我們從分開埠的角度對 MNS 多了一層保護和控制,我們從 MNS 的角度對埠多了一層擴充套件和保護,基於這兩個功能的強強聯合,為上層應用創造了更多高效安全的可能。
如何使用PBlaze5的multiple namespaces
既然 Multiple Namespaces 好處多多,讓我們用起來吧,用法也不難,以 PBlaze5 為例,慢慢道來。
讓我們先了解一下 NVMe 協議裡關於 Multiple Namespaces 的幾個概念。
- NSID
-每個 namespace 都擁有自己唯一的 NSID。NSID 有效範圍:
1 ~ NN。注:0無效。NN+1 ~ FFFFFFFEh無效。FFFFFFFFh表示廣播。
如下圖所示:
- Active、Inactive、Allocated、Unallocated
不要蒙圈,這跟 namespace 的建立和使用有關。當使用 Namespace Management command 成功建立了namespace 之後,namespace 就是 Allocated 狀態,表示這些邏輯塊已經劃給這個 NSID 的 namespace 了;那些沒有建立沒有分配的邏輯塊和 NSID 就是 Unallocated,很好理解。
但是 Allocated namespace 還不能IO,還需要使用 Namespace Attachment command 掛到某個 controller 上,成為 Active namespace 才可以。所以,Active NSID 就是已經建立並且已經掛到某個 controller 上的 namespace 的NSID。 - Namespace Management command 和Namespace Attachment command
NVMe協議規定了兩個admin命令,Namespace Management和Namespace Attachment,用以建立、管理namespace等操作。另外,Identify命令中也有對namespace的支援,比如獲取NSID列表、controller ID列表等。
圖 3 - NVMe 1.3協議中兩個admin命令
拿到一塊支援multiple namespace的SSD,比如PBlaze5,用支援這兩個admin命令的的工具,比如nvme-cli,就可以create、delete、list、attach、detach一個namespace了:
圖 4 - nvme-cli中namespace命令
命令不多,支援的內容還是很豐富的。比如create-ns命令,可以設定這個namespace的大小、格式化格式、資料保護能力、共享能力等。又比如list-ns命令,可以列出某個NSID之後所有有效的NSID,並可以分別列出Active、Inactive的namespace,方便使用者使用。再次宣告,經過細緻有效的測試,PBlaze5系列產品完全符合NVMe1.3協議之規定。
再用PBlaze5舉個例子 —— 建立namespace舉例
下面以在PBlaze5 U.2 4T上使用nvme-cli工具建立一個500GB的namespace為例。
第一步,檢查SSD上剩餘空間是否足夠建立目標namespace。使用Identify命令檢視unvmcap的值可知剩餘可分配容量,單位是Byte。
圖 5 - 使用Identify查詢unvmcap
第二步:計算建立 500GB 的 namespace,是多少個LBA。執行create-ns命令時,NSZE和NCAP的單位都是指 LBA的個數,lba count和user capacity的關係符合JEDEC218A,公式如下:
user capacity = (lbacount- 21168) / 1953504 當LBA size是512B
user capacity = (lbacount- 2646) / 244188 當LBA size是4096B
那麼,當想建立500GB的namespace,並且該namespace格式化為512B的sector size的話,size引數就設定為:21168 + 1953504 * 500 = 976773168。
第三步:執行nvme create-ns /dev/nvme0 –s 976773168 –c 976773168 –f 0 –d 0 –m 1即可建立一個namespace。其中,-f 0設定了一個邏輯塊的大小是512Byte,PBlaze5還支援4096B等。
第四步:執行nvme attach-ns /dev/nvme0 –n 1 –c 1即可將這500GB的namespace掛到controller 1上,這是執行IO的先決條件。
第五步:如果作業系統支援Namespace Attribute Notices,那麼此時已經可以在系統中看到這個namespace並使用它了。
圖 6 - 建立500GB namespace舉例
經過兩篇文章的討論,可以發現Multiple namespaces是NVMe SSD一個非常基礎而重要的功能,是對SSD不同儲存單元進行差異化策略設定和操作的基礎。現在PBlaze5已經開始全面支援Multiple namespaces功能,使用者可以對不同的namespaces分別執行格式化等操作。未來基於Multiple namespaces還將有更多新的特性加入,使用者管理NVMe SSD也更加方便。
下面是Memblaze的技術文章合集:
相關文章
- 實錘,PBlaze5擁有multiple namespaces能力(上)namespace
- kubernetes traefik multiple namespacesnamespace
- AWS 人工智慧黑客馬拉松正式開啟!用實力演繹科技向善!人工智慧黑客
- redux 流程演繹Redux
- 理性演繹模型(轉載)模型
- 以乾坤之道演繹精彩IT人生
- JdonMVC+JDON+CQRS演繹智慧物件MVC物件
- 用遊戲演繹肥皂劇的《Mutazione》,群戲驅動故事的敘事張力遊戲
- 騰訊資深技術官23天手擼筆記,全新演繹“Kafka部署實戰”,已開源下載筆記Kafka
- 快速故障定位 看聯想和Riverbed如何演繹?
- 從總體角度演繹真實戰爭,《率土之濱》重新定義SLG戰爭形態
- 蠻啾出品《藍色星原:旅謠》開啟預約 大量實機揭示奇幻新演繹
- 《奇異人生:本色》的技術力如今終於能支撐起出色的劇本演繹
- Matt AI——演繹虛擬人的“喜怒哀樂”AI
- 智慧領域物件設計(演繹革命)-1/2物件
- servlet實現下載功能Servlet
- 360政企實戰攻防演習紀錄片釋出!以實戰錘鍊數字時代安全防禦體系
- 金字塔原理(5)- 演繹與歸納的區別
- 2.2.1.2 Namespaces in a CDBnamespace
- Flutter 實現檔案下載功能Flutter
- Java實現檔案下載功能Java
- Django 實現下載檔案功能Django
- 超越三星,華為再與蘋果演繹智慧手錶江湖蘋果
- Gin實戰演練
- 8-Overview-NamespacesViewnamespace
- Kubernetes Namespacesnamespace
- Kubernetes – Namespacesnamespace
- Linux下VLAN功能的實現 (轉)Linux
- android: 實現強制下線功能Android
- 實時數倉混沌演練實踐
- 如何藉助網路優勢,演繹SD-WAN雲網融合?
- 混沌演練實踐(一)
- 在electron下實現PDF線上預覽功能
- Android下實現資料繫結功能Android
- 三國殺、狼人殺、劇本殺——社交演繹遊戲發展史遊戲
- 中國石油大學攜手銳捷演繹“網際網路+教室“新生態
- 演講實錄丨戴瓊海院士《人工智慧:演算法·算力·互動》人工智慧演算法
- 官宣!張碧晨演繹《新斗羅大陸》手遊主題曲《藍銀色的海》