實錘,PBlaze5擁有multiple namespaces能力(上)
NVMe協議在不斷髮展,PBlaze5的功能也越來越多,這裡介紹一個基礎又實用的功能,multiple namespaces。文章將分為上下兩篇,上篇主要介紹namespace的相關概念,而下篇則進一步解讀multiple namespaces的優勢以及在PBlaze5上的操作。
什麼是Namespace
簡單地說,namespace是對使用者空間的邏輯劃分,就是把使用者空間這塊大披薩劃分開,大家各吃各的。
那麼大披薩長什麼樣呢?劃成一片片兒披薩又什麼樣呢?我們知道,跟其他傳統的儲存裝置一樣,非易失性儲存器也是可以格式化為邏輯塊的,每個邏輯塊都有自己的地址,俗稱logical block address,簡稱LBA,我們就是通過LBA來吃披薩(讀寫IO)的。邏輯地址長相很普通,是從0,1,2….直到最大塊地址。
邏輯塊地址計算是有講究的,嚴格依據JEDEC218A裡面定義的邏輯塊與容量關係公式。比如4KiB一個邏輯塊的話, 1.6TB就需要2646 + 244188 * 1600 = 390703446個邏輯地址了,這些邏輯塊就組成了namespace。那麼一塊SSD是否可以劃分為多個namespace來供不同的應用場景使用呢?答案是肯定的。
什麼是Multiple Namespaces
早期,單一namespace
下圖是一個NVM subsystem的典型結構圖,它包含了一個單一NVM Express controller以及一個單一的PCI Express port,也就是我們說的單埠。然後這個controller只支援單一的namespace,即圖中的NS A,它繫結它唯一的NSID,1。這個NS A包含了全部的邏輯塊,從系統看長這樣:,nvme0代表第一個controller,n1代表namespace 1。host可以訪問這個namespace就意味著可以訪問全部的邏輯塊。
圖1單一namespace在系統中
現在,PBlaze5的Multiple namespaces
下圖是一個Multiplenamespaces NVM subsystem的典型結構圖,它包含了一個單一NVM Express controller以及一個單一的PCI Express port,也就是我們說的單埠。然後這個controller支援兩個namespace,即圖中的NS A和NS B,它們分別繫結了他們唯一的NSID,圖中是NSID 1和NSID 2,在Multiple namespaces的世界裡,controller就是通過NSID來引用特定的namespace的了。
在PBlaze5系列產品中,可以將邏輯塊按需劃分為最多32個namespace,即所謂multiple namespaces,每個namespace擁有獨立邏輯地址,各自獨立格式化和訪問。
需要指出的是,NVMe協議並沒有規定單盤最高的namespace數,各家SSD產品的規範也不盡相同,這一點有機會在產品對比測試文章中再詳談,根據Memblaze的設計以及來自客戶需求的反饋,PBlaze5目前支援32個namespace,這一點是完全按照協議實現的。
Multiple namespaces NVM subsystem從系統看長下面這樣,比如/dev/nvme0n20,表示第一個controller的namespace 20。
圖2 multiple namespace在系統中
訪問時就是讀寫塊裝置/dev/nvme0n20,以FIO為例:
圖3 multiple namespace的讀寫方法
通過上述介紹,您是否覺得namespace與Windows檔案系統下的分割槽有些相似。簡單的說,兩者根本的區別在於執行劃分任務的主體不同。Windows有硬碟分割槽,Linux 也會通過樹形結構實現分割槽管理硬碟空間,但是這些是作業系統的檔案系統實現的。而namespace則是直接對硬碟的地址進行劃分,與上層系統相互獨立。namespace更接近硬碟,所以能夠實現諸如不同namespace不同方式加密等高階功能。
本文作者:她低調的坐在辦公室一個柱子旁,降噪耳機、機械鍵盤透露著濃濃的極客風。我見過很多工程師,但是很少見這般有狹義之氣的工(da)程(jie)師(da)。這位工程師同志把NVMe1.2協議列印出來,還熟讀了,顯然我是相信的,因為我看見那本協議的時候,上面一點灰沒有。這篇文章是袁老師寫的namespace,我覺得回來她會亮劍寫點其他的,敬請期待。
相關文章
- 實錘,PBlaze5實力演繹multiple namespaces 功能(下)namespace
- kubernetes traefik multiple namespacesnamespace
- [譯] TypeScript:擁有超能力的 JavaScript (上)TypeScriptJavaScript
- 程式程式碼共同擁有,有助能力提升
- [譯] TypeScript:擁有超能力的 JavaScript(下)TypeScriptJavaScript
- 通過Nacos讓Nginx擁有服務發現能力Nginx
- 讓 UIWebview 擁有超強的圖片處理能力UIWebView
- 弘積科技SuperSR:讓業務系統擁有自愈能力
- GitHub 上北大清華? 你值得擁有Github
- 何夕:如何讓實體商家擁有淘寶一樣的資料化運營能力
- 2.2.1.2 Namespaces in a CDBnamespace
- 8-Overview-NamespacesViewnamespace
- Kubernetes Namespacesnamespace
- Kubernetes – Namespacesnamespace
- 讓雲上使用者擁有安全感 可信或成雲伺服器標配安全能力之一!伺服器
- PC處理器已到達極限?未來將擁有自主學習能力
- input file multiple 批量上傳檔案
- 永遠考慮那個擁有更強寫作能力的程式設計師程式設計師
- 讀完這篇文章,就能擁有炫同事一臉的超能力:JavaScript 魔幻代理JavaScript
- 這五款實用軟體你值得擁有
- Dockerfile你值得擁有Docker
- 在技術上你有獨當一面的能力,還需要哪些方面的能力
- Managing Namespaces in VB.Netnamespace
- 擁有帳戶檔案
- phpMyAdmin 你值得擁有PHP
- 做一家擁有超強資料標註能力的專業資料標註公司
- ARM在移動處理器功耗上擁有巨大競爭優勢
- 3個Python優秀實踐初學者值得擁有!Python
- 當性愛機器人擁有明星臉 將會擁有粉絲市場機器人
- Multiple Regression
- 如何擁有專案經驗
- Chartbeat:網頁上的哪個部分擁有最高的瀏覽率?–資訊圖網頁
- 有Cuda能力的GPU核心GPU
- 擁有獨立遊戲基因的Roguelike如何實現商業化成功?遊戲
- 「硬核」實操如何擁有一個自己的數字人模型模型
- Piper Sandler:87%美國青少年目前擁有一部iPhone 約18%的人擁有iPhone 13iPhone
- redux 時間旅行,你值得擁有!Redux
- 成功的CRM需要擁有哪些特性