最近、LinuxコンピューターにNVMeドライブをインストールしましたが、/dev/nvme0
と表示されていて、そのパーティションが/dev/nvme0p1
であることに気付きました。 SATAドライブとは異なるインターフェイスであることは知っていますが、このように記載されている理由は何ですか?ドライブの呼び出しは/dev/sd$LETTER$PARTITIONNUMBER
が標準のようです。これは、SCSIのように規格が異なる場合でも標準です。これにより、ドライブ名を表す文字の代わりに数字を使用し、パーティション名の前にapを付けることで、名前が異なります。 。
/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デバイスのネーミングがそのようになっている場合は完全に問題ありません。また、nvme
がscsi
に変換されない理由は、2つのプロトコルが非常に異なり、そのような実装が複雑すぎるためです(@grawityおよび@Valityのコメントを参照)。詳細については)。
他の回答に加えて、NVMeには/ dev/sd <letter(s)> <number>パターンに適合しない名前空間の概念があることに注意してください。たとえば、私のシステムでは:
$ ls -1 /dev/nvme*
/dev/nvme0
/dev/nvme0n1
/dev/nvme0n1p1
/dev/nvme0n1p2