nvme名前空間とは何ですか?どのように動作しますか?

nvme名前空間とは何ですか?どのように動作しますか?

最近、nvme SSDを搭載したデバイスでLinuxのインストールをサポートし始めました。デバイスファイルにドライブ文字とパーティション番号を識別する番号に加えて、追加の番号があることがわかりました。 IDE/SATA/SCSI ドライブには通常、ドライブ文字とパーティション文字のみがあります。

例: /dev/nvme0n1p2

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

それでは、これはMBRやGPTパーティションテーブルではなく、ハードウェアコントローラレベルで定義されているパーティションと似ていますか?名前空間が複数の物理NVME SSDにまたがる可能性がありますか?たとえば、RAID 0と同様に、複数のSSDのストレージを論理ネームスペースに集約するネームスペースを作成できますか?

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

また、名前空間番号がゼロではなく1から始まるように見えるのはなぜですか?これは、NVMEが低レベルでネームスペース番号を追跡する方法に関連しています(パーティションもゼロではなく1から始まります。パーティション番号の標準が設定されているため、Linuxカーネルはディスクに保存されているすべてのパーティション番号を))はい - nvmeも同じように動作するようですが? )

ベストアンサー1

NVM Expressおよび関連規格では、コントローラは1つ以上の名前空間に分割されたストレージへのアクセスを提供します。名前空間を作成して削除できます。渡すスペースがある場合(またはプライマリストレージがシンプロビジョニングをサポートしている場合)、複数のコントローラが共有ネームスペースへのアクセスを提供できる限り、コントローラです。私が知っている限り、標準はデフォルトのリポジトリの構成方法を指定しません。

ただし、一般的なNVMe SSDはそれぞれPCI Expressポートに接続されている独自のストレージとコントローラを提供し、アクセスポイントはネームスペースの上にあるコントローラなので、グループ化することはできません。したがって、名前空間は複数のコントローラ(複数のコントローラ)をグループ化できません。できる共有名前空間へのアクセスを提供します。エンタープライズストレージ(SANなど)で使用されるSCSI LUNに似た名前空間を考えるのが最善です。

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

次のコマンドを使用して名前空間を操作できます。nvme以下を含む低レベルのNVMe機能をサポートするコマンド。

  • 低レベルのフォーマットを実行し、さまざまな機能(セキュリティ削除、LBAフォーマットの選択...)を使用できるようにするフォーマット
  • 接続と分離により、コントローラはネームスペースに接続したり、ネームスペースから分離したりできます(サポートしてネームスペースで許可する場合)。

ノートブックまたはデスクトップNVMeドライブでは接続と切断は行われません。過去のiSCSI SANに代わるDell EMCで販売されているようなNVMeストレージベイで使用できます。

バラよりNVM Express標準詳細は(比較的読みやすい)この NVM Express チュートリアルでは良い紹介です。

おすすめ記事