web-dev-qa-db-ja.com

LinuxがNVMeドライブを/ dev / sdaではなく/ dev / nvme0としてリストするのはなぜですか?

最近、LinuxコンピューターにNVMeドライブをインストールしましたが、/dev/nvme0と表示されていて、そのパーティションが/dev/nvme0p1であることに気付きました。 SATAドライブとは異なるインターフェイスであることは知っていますが、このように記載されている理由は何ですか?ドライブの呼び出しは/dev/sd$LETTER$PARTITIONNUMBERが標準のようです。これは、SCSIのように規格が異なる場合でも標準です。これにより、ドライブ名を表す文字の代わりに数字を使用し、パーティション名の前にapを​​付けることで、名前が異なります。 。

50
user1030296

/dev/sdは、当初、SCSIデバイスのドライバーであるsd-busドライバーを使用するデバイスに使用されていました(sdは、SCSIディスクを表します)。最近では、SCSIディスク、SATAディスク、USBディスクに使用されています。その理由は、現在、ほとんどすべてのデバイスが非SCSIバス上でSCSIコマンドプロトコルを使用しているためです(カーネルはlibataを使用してすべてのATAデバイスを同等に扱い、それらがSCSIデバイスであるように見せかけます-@grawityへのクレジット)。これらのデバイスはすべて/dev/sdとして表示されます。

ただし、すべてのストレージデバイスが/dev/sdであるとは限りません。 /dev/hd/dev/xvdは引き続き使用されます。前者はPATA/IDEディスク用で、後者はクラウドストレージデバイス(仮想ディスクなど)用で、それらはすべて異なるドライバーと名前を持っています。仮想ストレージはクラウド/ハイパーバイザー上にのみ存在し(そしておそらく使用しない)、PATA/IDEディスクはますます珍しくなり、最新のマシンではカーネルが実際にide-scsiドライバーを使用して変換するため、これらは表示されませんこれはSCSIプロトコルに対応しています(@Wumpus Q. Wumbleyのクレジット)。

他の例には、SD/eMMC /ベアNAND/NORデバイス用であり、/dev/mmcblkXpYと同じ命名体系を持つ/dev/nvmeと、クラウドストレージ内の仮想ディスクに再び使用される/dev/vdが含まれます(追加の例については@Jan Dorniakのクレジット)。


あなたの場合、これは/dev/nvmeと呼ばれます。これは、ディスクがNVMEポートを介して接続され、Linuxでnvmeドライバーを使用するためです。 /dev/<something>は、<something>ドライバーを使用するデバイスと考えることができます。すべてのデバイスドライバーとネーミングには独自の標準があり、それらすべての1つの標準ではないため、NVMEデバイスのネーミングがそのようになっている場合は完全に問題ありません。また、nvmescsiに変換されない理由は、2つのプロトコルが非常に異なり、そのような実装が複雑すぎるためです(@grawityおよび@Valityのコメントを参照)。詳細については)。

65
Fanatique

他の回答に加えて、NVMeには/ dev/sd <letter(s)> <number>パターンに適合しない名前空間の概念があることに注意してください。たとえば、私のシステムでは:

$ ls -1 /dev/nvme*
/dev/nvme0
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2
5
Roman Odaisky