nvme名前空間とは何ですか?彼らはどのように機能しますか?


18

最近、nvme ssdsが組み込まれたデバイスにインストールされたLinuxのサポートを開始しました。デバイスファイルには、ドライブ番号とパーティション番号を識別する番号以外の余分な番号があることに気付きました。IDE / SATA / SCSIドライブには通常、ドライブ文字とパーティション番号のみがあります。

例:/ dev / nvme0n1p2

私はn1の部分が何であるか疑問に思うようになりました。少し検索した後、それはnvmeの「名前空間」を識別するように見えます。「NVMe名前空間とは、論理ブロックにフォーマットできる不揮発性メモリ(NVM)の量です」

それで、これはハードウェアコントローラレベルで定義されたパーティションのように機能し、MBRまたはGPTパーティションテーブルでは機能しませんか?名前空間は複数の物理nvme ssdにまたがることができますか?たとえば、RAID 0と同様に、複数のssdのストレージを単一の論理ネームスペースにプールするネームスペースを作成できますか?

パーティションテーブルやLVM、または複数のボリューム(ZFS、Btrfsなど)を管理できるファイルシステムを使用して、まだ達成できないNVME名前空間で何をしますか?

また、名前空間の番号付けが0ではなく1から始まるように見えるのはなぜですか?これは、NVMEが名前空間番号を低レベルで追跡する方法と関係があるだけです(たとえば、パーティション番号の標準が設定されているため、パーティションも0ではなく1で始まるため、Linuxカーネルはパーティション番号を使用します)それはディスクに保存されています-nvmeは同じように動作すると思いますか?)

回答:


17

NVM Expressおよび関連標準では、コントローラーは1つ以上のネームスペースに分割されたストレージへのアクセスを提供します。名前空間は、それらに余裕がある限り(または基盤となるストレージがシンプロビジョニングをサポートしている場合)、コントローラーを介して作成および削除でき、複数のコントローラーが共有名前空間へのアクセスを提供できます。基になるストレージの編成方法は、私が知る限り、標準では指定されていません。

彼らそれぞれがPCI Expressポートに取り付けられた独自の貯蔵及び制御装置を提供し、アクセスポイントは、名前空間の上方に、コントローラであるので、典型的なのNVMe SSDは、組み合わせることができない-このように名前空間ができていないグループ複数のコントローラ(複数のコントローラ共有名前空間へのアクセスを提供します)。名前空間は、エンタープライズストレージ(SANなど)で使用されるSCSI LUNに似たものと考える方が適切です。

名前空間の番号付けは1から始まります。これは、コントローラごとの名前空間識別子が機能する方法だからです。名前空間には、より長く、グローバルに一意の識別子もあります。

次のようなnvme低レベルのNVMe機能のサポートを提供するコマンドを使用して、名前空間を操作できます。

  • 低レベルのフォーマットを実行し、さまざまな機能を使用できるようにするフォーマット(セキュア消去、LBAフォーマット選択...);
  • アタッチとデタッチ。これにより、コントローラをネームスペースにアタッチしたり、ネームスペースからデタッチしたりできます(サポートしている場合、ネームスペースで許可されている場合)。

ラップトップまたはデスクトップNVMeドライブで遭遇することは、アタッチとデタッチではありません。過去のiSCSI SANに代わる、Dell EMCが販売しているNVMeストレージベイで使用します。

詳細についてはNVM Express標準を参照してください(比較的読みやすくなっています)。また、入門としてこのNVM Expressチュートリアルプレゼンテーションを参照してください


Linuxの「nvme」コマンドは、ネームスペースの削除/作成のサポートに加えて、アタッチ/デタッチの概念を提供し、ネームスペースをフォーマットすることにも気づきました(ネームスペースに書き込むファイルシステムのフォーマット操作とは別のようです)。これらの操作が何であるかについての情報を提供できますか?
-JeffFromOhio

3
更新された回答をご覧ください。
スティーブンキット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.