GNU/Linux >> Linux の 問題 >  >> Linux

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

/dev/sd 元々は sd-bus を使用するデバイスに使用されていました SCSI デバイス用のドライバー (および 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 の功績)。

他の例には /dev/mmcblkXpY が含まれます これは SD/eMMC/bare NAND/NOR デバイス用であり、/dev/nvme と同じ命名スキームを持っています そして /dev/vd これは、クラウド ストレージの仮想ディスクに再び使用されます (追加の例については、@Jan Dorniak の功績によるものです)。

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


他の回答に加えて、NVMe には /dev/sd に収まらない名前空間の概念があることに注意してください。 パターン。たとえば、私のシステムでは:

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

Linux
  1. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  2. /dev/sda と /dev/sdb をどのように交換しますか?

  3. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  1. Linux:/dev/console 、 /dev/tty 、 /dev/tty0 の違い

  2. Linux が /dev/tty と /dev/tty0 を使用する方法

  3. Linux で /dev/random を /dev/urandom にリンクするのは間違っていますか?

  1. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  2. echo または print /dev/stdin /dev/stdout /dev/stderr

  3. /dev/tcp を使用するために < または > が必要な理由