NVMe名前空間機䌚ず萜ずし穎



私は倚くの人が聞いたこずが確信しおいる NVM Expressのか、単に のNVMe。圓初、これらは私にずっおただの高速ドラむブでした。そしお、これがこれらのドラむブを接続するためのむンタヌフェヌスであるこずに気づきたした。それから圌は、PCIeバスを介しおデヌタを転送するためのプロトコルずしおNVMeを理解し始めたした。たた、プロトコルだけでなく、゜リッドステヌトドラむブ甚に特別に蚭蚈されたプロトコルもあり たす。



少しず぀、これが党䜓の仕様であるこずに気づきたした 。そしお、私たちは去りたす... NVMeには、いく぀の興味深い䜿甚機胜が存圚するこずがわかりたした。いく぀のものが発明されたのか...そのような情報の局が私を通り過ぎたのは少しでも䞍快でした。



では、NVMeずは正確には䜕ですかよく芋おみたしょう。



それはすべおSATAむンタヌフェヌスから始たりたした 。実際、それ以前は、SCSI、UltraSCSI、ATA、PATAなど、他にも倚くのむンタヌフェむスがありたしたが、これらは昔のものです。この蚘事では、珟圚関連するむンタヌフェヌスのみを怜蚎したす。



SATAむンタヌフェむスを介したデヌタ転送速床は560MB / sに達したす。これは、HDDディスクには十分すぎるほどです。HDDディスクのパフォヌマンスは90〜235 MB / sですプロトタむプがいく぀かあり、速床は480 MB / sに達したす。 。しかし、これはSSDドラむブには十分ではなく、すでにパフォヌマンスは3000〜3500 MB /秒に達しおいたす。 SASむンタヌフェむスも機胜したせん。最倧速床はわずか1200MB /秒です。



゜リッドステヌトドラむブの可胜性を最倧限に匕き出すために、優れた人材がPCIeむンタヌフェむスを䜿甚するこずを決定したした 。今では、8〜32 GB / sの速床でデヌタを転送できたす。 SSDのPCIeむンタヌフェヌスぞの接続を統合するために、NVMe仕様が開発されたした。 USBフラッシュドラむブを接続するための仕様がやがお䜜成されたのず同じ方法で。



NVMeを完党に分解するこずはありたせん。この蚘事では、私が非垞に興味を持った機胜であるNVMe名前空間たたは 名前空間を皆さんず共有したいず思いたす 。



読者の䞭には、このテクノロゞヌの探求に興味を持っおいる人がいるこずを願っおいたす。経隓豊富なナヌザヌのコメントを歓迎したす。そしお、私のように、このトピックを理解し始めたばかりの堎合は、SSDの歎史に関する䞀連の蚘事を読むこずをお勧めしたす 。か぀お、圌女は私が私の頭の䞭のたくさんのゎミをいじっお敎理するのを手䌝っおくれたした。



NVMeに近い



Linux䞊のNVMe



遠くから始めたす。名前空間に関する情報を調べお怜玢するために、「LinuxのNVMeディスクがなぜそのように呌ばれるのですか」ずいう質問が衚瀺されたした。



Linuxのディスクをブロックデバむスずしおラベル付けするこずに誰もが慣れおいたす。これらは 、物理デバむスたたは仮想デバむスず察話するためのむンタヌフェむスを提䟛するファむル蚘述子です。そしお、そのようなデバむスにはランダムではありたせんが、いく぀かの情報を含む非垞に厳密な名前がありたす。devfsからの次の出力を芋おみたしょう 。



root@thinkpad-e14:~$ ls -l /dev/ | grep -E "nvme"
crw-------  1 root    root    241,   0  25 22:04 nvme0
brw-rw----  1 root    disk    259,   0  25 22:04 nvme0n1
brw-rw----  1 root    disk    259,   1  25 22:04 nvme0n1p1
brw-rw----  1 root    disk    259,   2  25 22:04 nvme0n1p2
brw-rw----  1 root    disk    259,   3  25 22:04 nvme0n1p3
      
      





本番マシンに接続されおいるすべおのNVMeデバむスがここに䞀芧衚瀺されたす。ブロックデバむス/ dev / nvme0n1p1に぀いお考えお みたす。奇劙なこずに、nvme郚分 はNVMeデバむスに䜿甚されたす。次の番号は、ドラむブで実行されるすべおの操䜜を担圓するディスクコントロヌラのシリアル番号を瀺しおい たす。 末尟p1は瀺し パヌティション番号、ディスク䞊を。最埌に、泚目に倀する郚分はn1です。これはスペヌスの数です。



簡単にするために、通垞のSSDずの類䌌点を描くこずもできたす



。/dev/sda-/dev / nvme0n1の類䌌点

/ dev / sda1- / dev / nvme0n1p1のアナログ



/ dev / nvme0デバむスに泚意しおください。これはNVMeコントロヌラヌです。キャラクタヌデバむスです。したがっお、特定のコマンドを送信するこずで参照できたす。これに぀いおは、さらに䜿甚したす。


名前空間ずパヌティション



あなたは疑問に思うかもしれたせん名前空間はパヌティションずどう違うのですかNVMe名前空間のすべおの機胜ず利点を削陀したしょう。パヌティションは、ホストレベルのディスクパヌティション です。名前空間はコントロヌラヌレベルのセクション です。぀たり、名前空間は、ホストがブロックデバむスのように機胜する䞀皮の 論理空間です。



別のレベルのパヌティション分割により、ストレヌゞシステムの線成に柔軟性が远加され、デヌタの信頌性、パフォヌマンス、およびセキュリティの向䞊を目的ずしたさたざたなテクノロゞヌを䜿甚できるようになりたす。それらに぀いおは埌で芋おいきたす。



NVMeコントロヌラヌパラメヌタヌ



すべおのデヌタ操䜜は、特別なNVMeコントロヌラヌによっお凊理されたす。さらに、メモリには、シリアル番号、モデル、すべおの皮類のディスク蚭定、割り圓おられたスペヌス、デヌタ圢匏などの情報の内郚構造に関するメタデヌタが栌玍されたす。

顕埮鏡で調べるこずを提案したす。これを行うために、特別なコマンドをコントロヌラヌに送信し、それに応答しおメタデヌタを返したした。これを行う方法に぀いおは埌で説明したすが、ずりあえず芋おみたしょう。デヌタがたくさんあるので、完党には挿入したせんでしたが、埌で説明するパラメヌタヌが実際に存圚するこずを知っおおく必芁がありたす 。



{
  "vid" : 5197,
  "ssvid" : 5197,
  "sn" : "00000000000000",
  "mn" : "00000000000000000000000000",
  "fr" : "7L1QFXV7",
  "rab" : 2,
  "ieee" : 9528,
  "cmic" : 0,
  "mdts" : 9,
  "cntlid" : 5,
  "ver" : 66304,
  "rtd3r" : 100000,
  "rtd3e" : 8000000,
  "oaes" : 512,
  "ctratt" : 0,
  "rrls" : 0,
  "crdt1" : 0,
  "crdt2" : 0,
  "crdt3" : 0,
  "oacs" : 23,
  "tnvmcap" : 256060514304,
  "unvmcap" : 0,
  ...
}
      
      





メタデヌタは、䞊䜍から䞋䜍の順にバむトのシヌケンスずしおコントロヌラヌに栌玍されるため、さらに次の蚘録圢匏に埓いたす

[バむト間隔ビッグ゚ンディアン圢匏] /パラメヌタヌ名/埩号化。



理解を深めるための䟋。次のレコヌドは、71〜64バむトのfrパラメヌタの倀が栌玍されおいるこず を意味したす。これは、ファヌムりェアリビゞョンを衚し たす



[71:64] / fr /ファヌムりェアリビゞョン。

[234] / sn /シリアル番号。コントロヌラのシリアル番号が含たれおいたす。

[63:24] / mn /モデル番号。モデル番号たたは郚品番号が含たれたす。

[71:64] / fr /ファヌムりェアリビゞョン。コントロヌラファヌムりェアのリビゞョン番号が含たれおいたす。

[257256] / oacs /オプションのadminコマンドのサポヌト。远加のコマンドずコントロヌラヌ機胜の存圚を瀺したす。これは16ビットで構成され、各ビットが特定のコマンドを担圓したす。ビットが1の堎合、コントロヌラヌは次のこずを可胜にしたす。



  • [15:10]-予玄枈み。
  • [9] -LBAステヌタスを取埗したす。
  • [8]- 「ドアベルバッファ構成」ぞのアクセスを取埗したす;
  • [7]-仮想化を管理する「仮想化管理」 ;
  • [6] -NVMe-MiRecieveおよびNVMe-MiSendコマンド「NVMe管理むンタヌフェむス」を䜿甚したす。
  • [5]-ディレクティブ "ディレクティブ"を䜿甚したす;
  • [4] — («Self-Test Commands»);
  • [3] — («Namespace Management»);
  • [2] — ( «Firmware Commit» «Firmware Download»);
  • [1] — («NVM Format»);
  • [0] — («Security Send», «Security Receive»).


この蚘事では、名前空間に関連する関数、぀たり「名前空間管理」ず 「NVM圢匏」に぀いおのみ觊れたす 。他の機胜の詳现に興味がある堎合は、NVMExpressリビゞョン1.4の仕様を参照しおください 。



NVMeスペヌスパラメヌタ



次に、NVMeスペヌスのメタデヌタを芋おみたしょう。



{
  "nsze" : 500118192,
  "ncap" : 500118192,
  "nuse" : 233042000,
  "nsfeat" : 0,
  "nlbaf" : 0,
  "flbas" : 0,
  "mc" : 0,
  "dpc" : 0,
  "dps" : 0,
  "nmic" : 0,
  "rescap" : 0,
  ...
  ]
}
      
      





[70] / nsze /名前空間のサむズ。これは、論理ブロック内のスペヌスの最倧量です。この堎合-500118192512バむトのブロック。ちなみに、blockdevの出力に瀺されおいたす 。



root@thinkpad-e14:~$ sudo blockdev --getsz /dev/nvme0n1
500118192
      
      





[158] / ncap /名前空間容量。これは、珟圚ストレヌゞスペヌスに割り圓おられおいる論理ブロックの数です。



[23:17] / nuse /名前空間の䜿甚。これは、珟圚デヌタによっお占有されおいる論理ブロックの数です。



nszeオプションずncapオプションは同じであるこずに泚意しおください。最倧ボリュヌムず珟圚割り圓おられおいるボリュヌムを指定するポむントは䜕ですかこれは、珟時点で利甚可胜な割り圓およりも割り圓おが少ない可胜性があるこずを意味したすかはい



事実、名前空間はシンプロビゞョニングテクノロゞヌをサポヌトしおいたす。 ..。これは、指定されたボリュヌムの䞀郚のみがスペヌスに割り圓おられるこずを意味したす。他の郚分は共有プヌルに残り、オンデマンドでこのスペヌスたたは他のスペヌスに割り圓おられたす。割り圓おられたボリュヌムがいっぱいになったずき、たたはクリティカルしきい倀に達したずきです。䞀般に、このテクノロゞヌにより、ストレヌゞリ゜ヌスをより効率的に䜿甚できたす。このテクノロゞヌの詳现ず詳现に぀いおは 、この蚘事を参照しおください。



私たちの状況で は、スペヌスは现かい分垃のサポヌトなしで䜜成されたため、nszeずncapは等しくなり たす。ディスク䞊のこのようなスペヌスは次のようになりたす。





ncapず nsizeは、1぀の合蚈スペヌス量を指し たす。ディスク䞊でシンディストリビュヌションを䜿甚する堎合、スペヌスは次のようになりたす。





ここで、 nszeは最倧ボリュヌム、nca p-割り圓お 枈みを瀺し、 nuseはどちらの堎合も占有されおいるもののみを瀺したす。倀ずき nuseに達するには、 NCAP、 NCAPの増加を、ではなく、より nsze。



このテクノロゞヌをサポヌトするには、名前空間の適切な構成ず、コントロヌラヌ偎からのシンディストリビュヌションのサポヌトが必芁であるこずに泚意しおください。



[24:24] / nsfeat /名前空間機胜。このパラメヌタは特に興味深いものです。スペヌスの远加機胜の存圚を瀺したす。これは8ビットで構成されビッグ゚ンディアンにもリストされおいたす、それぞれが特定の機胜を担圓したす。ビット倀が1の堎合、関数はアクティブであり、0ではありたせん。



  • [75]-予玄枈み。
  • [44] -I / Oを最適化するための远加フィヌルドのサポヌト。
  • [33] -NGUIDフィヌルドの再利甚を無効にしたす;
  • [22]-削陀されたブロックず曞き蟌たれおいないブロックのサポヌト「コンテキスト属性」 ;
  • [11]-アトミック蚘録甚の远加フィヌルドのサポヌト「アトミック操䜜」 ;
  • [00]-シンディストリビュヌションのサポヌト。


[26:26] / flbas /フォヌマットされたlbaサむズ。このパラメヌタヌは、LBA構造を指したす。たた、8ビットで構成されおいたす。



  • [75] -予玄枈み。
  • [44] -1に蚭定されおいる堎合、メタデヌタがブロックの最埌に保存されるこずを瀺したす。倀が0の堎合メタデヌタは別のバッファヌに転送されたす。
  • [30] -16の可胜なLBAフォヌマットの1぀を遞択できたす。




[29:29] / dps /゚ンドツヌ゚ンドのデヌタ保護タむプの蚭定。゚ンドツヌ゚ンドのデヌタ保護のタむプを瀺したす。8ビットで構成されたす



  • [74 ]-予玄枈み;
  • [33] -メタデヌタ転送のタむプを瀺したす;
  • [20] -デヌタ保護の存圚ずそのタむプを瀺したす。


[30:30] / nmic /名前空間マルチパスおよび名前空間共有機胜。このフィヌルドは、名前空間ぞのマルチアクセスに関連する機胜のサポヌトを瀺したす。



  • [71] -予玄枈み。
  • [00] -倀1は、このスペヌスがパブリックパブリック名前空間であり、耇数のコントロヌラヌず通信できるこずを瀺したす。倀0は、スペヌスがプラむベヌトプラむベヌト名前空間であり、1぀のみにバむンドされおいるこずを瀺したす。


これで、パラメヌタの抂芁は終わりです。それらの数は膚倧であるため、さたざたなタスクの名前空間を非垞に现かく構成できたす。これに぀いおは、蚘事の最埌で怜蚎したす。各パラメヌタヌの詳现な説明は、NVMExpressリビゞョン1.4仕様に蚘茉されおい たす。



パブリックスペヌスずプラむベヌトスペヌス



この蚘事では、パブリックスペヌスや プラむベヌトスペヌスなどの甚語に぀いおはすでに説明しおい たす。しかし、その意味を明確にしなかったので、少し時間を割く必芁があるず思いたす。



スペヌスを䜜成する手順の1぀は、スペヌスをNVMeコントロヌラヌに割り圓おるこずです。スペヌスぞのアクセスは、割り圓おられおいるコントロヌラヌを介しお実行されたす。ただし、スペヌスは1぀のコントロヌラヌプラむベヌトだけでなく、耇数のコントロヌラヌパブリックにも割り圓おるこずができたす。



プラむベヌトスペヌスが普通ず呌べるなら、面癜いものは䜕も䜜れないので、パブリックスペヌスは名前空間マルチパスのような機䌚を利甚するこずができたす ..。



NVMeずの盞互運甚性



NVMeデバむスずの察話の問題に取り掛かりたしょうコントロヌラヌにさたざたなコマンドを送信する方法、名前空間を䜜成する方法、それらをフォヌマットする方法など。このために、Linuxの䞖界にはナヌティリティnvme-cliがありたす。その助けを借りお、あなたはこれらの操䜜を実行するこずができたす。



nvmeリスト



NVMeデバむスを䞀芧衚瀺するために、次の方法でdevfsにアクセスする必芁はありたせん。



root@thinkpad-e14:~$ ls /dev/ | grep "nvme"
nvme0
nvme0n1
nvme0n1p1
nvme0n1p2
nvme0n1p3
      
      





たたは、lspciを䜿甚しお、マシンに接続されおいるものを確認したす。



root@thinkpad-e14:~$ lspci | grep -E "NVMe|Non-Volatile"
07:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a809
      
      





nvmelistコマンドを䜿甚するだけで十分 です。



root@thinkpad-e14:~$ nvme list -o json
{
  "Devices" : [
    {
      "NameSpace" : 1,
      "DevicePath" : "/dev/nvme0n1",
      "Firmware" : "9L1QFXV7",
      "Index" : 0,
      "ModelNumber" : "SAMSUNG MZALQ256HAJD-000L1",
      "ProductName" : "Non-Volatile memory controller: Samsung Electronics Co Ltd Device 0xa809",
      "SerialNumber" : "00000000000000",
      "UsedBytes" : 38470483968,
      "MaximumLBA" : 500118192,
      "PhysicalSize" : 256060514304,
      "SectorSize" : 512
    }
  ]
}
      
      





䟋ずしおJSON圢匏で情報を出力したした 。ご芧のずおり、ここにはデバむスのリストだけでなく、デバむスに関するさたざたな情報も衚瀺されたす。䞀郚の属性たずえば、DevicePathや ModelNumbe rはコメントを必芁ずしないず思うので、いく぀かの属性に のみ泚意を払いたす。



  • むンデックス-コントロヌラヌ番号;
  • UsedBytes䜿甚されおいるスペヌスの量バむト単䜍。
  • PhysicalSize-バむト単䜍の最倧スペヌス量。
  • SectorSize - LBAたたは論理ブロック圢匏-アドレス可胜な最小のデヌタブロック。
  • MaximumLBAは、論理ブロックの最倧数です。


nvme id-ctrl、nvme id-ns



蚘事の前半で、デバむスに関するメタデヌタを取埗するために、Identifyコマンドをコントロヌラヌに送信したした 。このために、nvmeid-ctrlコマンド を䜿甚しおコントロヌラヌを識別したした。



root@thinkpad-e14:~$ nvme id-ctrl /dev/nvme0
      
      





そしお 、スペヌスを識別するためのnvme id-ns

root@thinkpad-e14:~$ nvme id-ns /dev/nvme0n1
      
      





デバむスコントロヌラヌたたは名前空間を指定する必芁があるこずに泚意しおください。



nvme create-ns、nvme delete-ns



名前空間はいく぀かの段階で䜜成されたす。たず、それを圢䜜る必芁がありたす。これを行うには、nvmecreate-nsコマンドを䜿甚し たす。



root@thinkpad-e14:~$ nvme create-ns /dev/nvme0 --nsze 1875385008 --ncap 1875385008 --flbas 0 --nmic 1 --dps 0
create-ns: Success, created nsid:1
      
      





あなたはすでにこのコマンドに䞎えられた匕数に粟通しおいたす。「NVMeスペヌス蚭定」のセクションでそれらを調べたした。



スペヌスを削陀するには、nvmedelete-nsコマンドを䜿甚したす 。



root@thinkpad-e14:~$ nvme delete-ns /dev/nvme0n1          
delete-ns: Success, deleted nsid:1
      
      





nvme attach-ns、nvme detach-ns



NVMeスペヌスを䜜成する第2段階は、生成されたスペヌスをコントロヌラヌにバむンドするこずです。これを行うには、nvmeattach-nsコマンドを䜿甚したす 。



root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 1
attach-ns: Success, nsid:1
      
      





このコマンドを䜿甚しお、識別子1のスペヌスをコントロヌラヌ / dev / nvme0にバむンドしたす。--controllers匕数にも泚意しおください 。これは、スペヌスをマップできるNVMeコントロヌラヌのIDをリストしたす。この匕数はオプションであり、パブリックスペヌスを䜜成するずきに䜿甚されたす。



䜕らかの理由で、コントロヌラヌの番号付けは1から始たりたす。぀たり、controller / dev / nvme0の識別子は1であり、これは--controllers匕数で指定されたす。うたくいけば、これにより、次の゚ラヌの調査に時間を浪費するこずを回避できたす。



root@thinkpad-e14:~$ nvme attach-ns /dev/nvme0 --namespace-id 1 --controllers 0                            
NVMe Status:CONTROLLER_LIST_INVALID: The controller list provided is invalid(211c)
      
      





スペヌスを解くには、nvmedetach-nsコマンドを䜿甚したす 。



root@thinkpad-e14:~$ nvme detach-ns /dev/nvme0n1 --namespace-id 1 --controllers 1
detach-ns: Success, nsid:1
      
      





その埌、スペヌスはブロックデバむスリストから消え、䜿甚できなくなりたす。たた、-controllers匕数で、スペヌスを分離するコントロヌラヌのみを指定する必芁がありたす。



nvmeリセット



スペヌスがコントロヌラヌにバむンドされるず、通垞は䜜業に䜿甚できたす。ただし、コントロヌラヌがスペヌスを認識できない堎合がありたす。この堎合、再起動する必芁がありたす-nvmersetコマンドを䜿甚し たす。



nvmeフォヌマット



スペヌスのLBA圢匏を倉曎する必芁がある堎合は、nvmeformatコマンドが 圹に立ちたす。



root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --lbaf 0
Success formatting namespace:1
      
      





--lbaf匕数は、LBA圢匏を瀺したす。



ただし、このコマンドを䜿甚しお、NVMeドラむブ䞊のデヌタを安党に消去するこずもできたす。



root@thinkpad-e14:~$ nvme format /dev/nvme0n1 --ses 1 -r
Success formatting namespace:1
      
      





--ses匕数は、グラりトレベルを瀺したす。



  • 1-すべおのデヌタを削陀したす。
  • 2-暗号化されたデヌタを削陀したす。


-r匕数は、コントロヌラヌが安党なグラりトの埌に再起動するこずを瀺したす。



応甚



スペヌスには倚くの甚途がありたす。これらは䞻にパフォヌマンスず冗長性を向䞊させるために䜿甚され、ストレヌゞシステムで䜿甚されたすが、より䞀般的なナヌスケヌスがありたす。



スペア゚リア



かなり䞀般的な䜿甚方法から始めたしょう。スペア゚リア、たたはリザヌブ゚リアは、NVMeの前から発明されたした。これはSSD䞊の特別なスペヌスであり、コントロヌラヌ自䜓が内郚操䜜に䜿甚し、ホストは䜿甚できたせん。



スペヌスのサむズを倉曎するこずで、フォヌルバック領域のサむズも倉曎できたす。実際には、ディスクの党䜓のボリュヌムは、すべおのスペヌスのボリュヌムずスペア領域のボリュヌムの合蚈に等しくなりたす。





したがっお、スペヌスの総量を枛らすず、残りの量はスペア゚リアに有利になりたす。



バックアップ領域に぀いお詳しく知りたい堎合は、この蚘事を参照 しおください。



暗号化ず分離





NVMeドラむブはサポヌト OPALのSEDを。さらに、名前空間ごずに異なる暗号化キヌが䜿甚されたす。



コントロヌラは曞き蟌み保護も提䟛したす。3぀のレベルがありたす



  • 次の再起動たで読み取り専甚。
  • 曞き蟌み保護機胜を無効にした埌、次の再起動たで読み取り専甚。
  • 䜜業党䜓を通しお読み取り専甚。




これは、固定およびモバむルPCでよく䜿甚されたす。たずえば、ブヌトロヌダヌを読み取り専甚スペヌスに配眮しお、損傷を防ぐこずができたす。他の重芁なデヌタも同じ方法で保護できたす。



耇数䜿甚



前述のように、スペヌスはコントロヌラヌレベルのパヌティションであり、゚ンドホストからは別のデバむスずしお衚瀺されたす。倧きなNVMeドラむブをいく぀かのプラむベヌトスペヌスに分割し、それぞれを異なるホストに割り圓おるこずは可胜ですかできるたた、ネットワヌクプロトコル NVMe-oFNVMe Over Fabricsを䜿甚しお、これらのスペヌスを仮想ホストだけでなく物理ホストにも割り圓おるこずができたす。



このドラむブの䜿甚により、パヌティションスキヌムは次のようになりたす。





NVMeコントロヌラヌは、スペヌスが互いに分離されおいるこずを確認したす。デヌタはドラむブの別々の領域に保存され、各ホストには独自のI / Oキュヌがありたす。ただし、 スペア゚リアたたは スペア゚リアは匕き続き共有されたす。



名前空間マルチパスず名前空間共有



名前空間共有、たたはパブリック名前空間は、1぀以䞊のホストが2぀以䞊のコントロヌラヌを介しおスペヌスを共有できるこずを意味したす。





それは䜕のためこの図は、パブリックスペヌスの䜿甚図を瀺しおいたす。はい、興味深いです。NVMeコントロヌラヌ1ずNVMeコントロヌラヌ2を介しおNS Bスペヌスにアクセスできたす。しかし、図が次のようになるたで、これには䜕の有甚性もありたせん。





ここでは、コントロヌラヌが完党に異なるホスト䞊にあり、デヌタぞのいく぀かの独立したパスがあるこずがわかりたす。ホストコントロヌラヌホストA青色のコントロヌラヌずホストB玫色のコントロヌラヌを経由したす。これで、冗長性やパフォヌマンスの向䞊に䜿甚できたす。青いパスの負荷が高い堎合は、玫色のパスを䜿甚したす。



このアプロヌチにより、NVMe-oFを䜿甚しお、埓来のサヌバヌプラットフォヌムから高性胜で信頌性の高い柔軟な゜フトりェアデファむンドストレヌゞシステムを線成できたす。



結果



NVMe名前空間は 、ディスクの論理パヌティションだけでなく、貎重なメカニズムでもありたす。これは非垞に興味深く重芁なテクノロゞヌであり、デヌタストレヌゞ甚の䟿利なむンフラストラクチャ゜リュヌションを構築できたす。冗長性、暗号化、およびディスクの耐甚幎数の延長の機䌚により、高負荷のサヌビスの安定した動䜜を維持できたす。



この蚘事では、名前空間を䜿甚する際のすべおの偎面ず埮劙な点に぀いおは説明しおいたせん。むしろ、レビュヌや知人であるこずが刀明したした。ただし、必芁に応じお、これがテクノロゞヌのより深い研究を開始するのに圹立぀こずを願っおいたす。



あずがき



この蚘事を曞いおいるずき、私はpopabolyuの倚くの問題に盎面し 、仕事を終えるこずができたせんでした。さたざたなNVMe機胜をテストするドラむブを遞択するずきは泚意しおください。問題を解決し、芁件を最小限に満たすディスクを芋぀けたのは初めおではありたせんでした。たた、ディスクメヌカヌはそのような情報を共有するこずに消極的であり、誀解を招くものさえあるため、ランダムに行動する必芁がありたした。具䜓的には、次のような問題が発生したした。



  • 2b2qexe7 / 2b2qexm7ファヌムりェアを搭茉したSamsung970 EVO / 970 EVO Plusドラむブは、リセットコマンドずフォヌマットコマンドを実装しおいたせん。
  • ファヌムりェア2b2qexe7 / 2b2qexm7を搭茉したSamsung970 EVO / 970 EVO Plusドラむブは、create-ns、delete-ns、detach-ns、atach-nsコマンドを䜿甚したスペヌス管理を実装しおいたせん。
  • 9L1QFXV7ファヌムりェアを搭茉したSamsungPM991ドラむブにはバグがあり、resetコマンドを䜿甚しおコントロヌラヌを再起動するず゚ラヌが発生したす。
  • 9L1QFXV7ファヌムりェアを搭茉したSamsungPM991ドラむブにはバグがあり、formatコマンドを䜿甚しおスペヌスをフォヌマットするず゚ラヌが発生したす。
  • ファヌムりェア9L1QFXV7を搭茉したSamsungPM991ドラむブは、create-ns、delete-ns、detach-ns、atach-nsコマンドを䜿甚したスペヌス管理を実装しおいたせん。


䌁業セグメントのディスクにはこれらの問題はないず確信しおいたすが、誰もがそのようなハヌドりェアを賌入できるわけではないので、賌入する際にはディスクずそれらのマニュアルを詳しく調べおください。たた、賌入前にディスクを調べおNVMeコントロヌラヌのパラメヌタヌを確認する機䌚がある堎合は、必ずそれを䜿甚しおください。



圹立぀情報源



  1. SSDデバむス、コンポヌネント、および動䜜原理
  2. NVMExpressのクむックツアヌ
  3. NVMe1.4仕様
  4. NVMe名前空間
  5. Base NVM Express — Part One
  6. NVMe Command Line Interface (NVMe-CLI)
  7. NVMe Over Fabrics





All Articles