GNU/Linux >> Belajar Linux >  >> Linux

Mengapa Linux mencantumkan drive NVMe sebagai /dev/nvme0 bukan /dev/sda?

/dev/sd awalnya digunakan untuk perangkat yang menggunakan sd-bus driver, yang merupakan driver untuk perangkat SCSI (dan sd secara harfiah adalah singkatan dari disk SCSI). Saat ini digunakan untuk disk SCSI, disk SATA, dan disk USB. Alasannya tampaknya karena sekarang hampir semua perangkat menggunakan protokol perintah SCSI di atas bus non-SCSI (kernel memperlakukan semua perangkat ATA secara setara menggunakan libata dan berpura-pura sebagai perangkat SCSI - penghargaan untuk @grawity), dan oleh karena itu kami melihat semua perangkat ini sebagai /dev/sd .

Namun tidak semua perangkat penyimpanan adalah /dev/sd . /dev/hd dan /dev/xvd masih digunakan - yang pertama untuk disk PATA/IDE dan yang terakhir untuk perangkat penyimpanan cloud (disk virtual, dll.) dan semuanya memiliki driver dan penamaan yang berbeda. Anda tidak melihatnya karena penyimpanan virtual hanya ada di cloud/hypervisor (dan Anda mungkin tidak menggunakannya) dan karena disk PATA/IDE menjadi semakin langka dan pada sebagian besar mesin modern, kernel benar-benar menggunakan ide-scsi driver untuk menerjemahkannya ke protokol SCSI (kredit ke @Wumpus Q. Wumbley).

Contoh lain termasuk /dev/mmcblkXpY yang untuk perangkat SD/eMMC/bare NAND/NOR dan memiliki skema penamaan yang sama dengan /dev/nvme dan /dev/vd yang sekali lagi digunakan untuk disk virtual di penyimpanan cloud (kredit ke @Jan Dorniak untuk contoh tambahan).

Dalam kasus Anda , ini disebut /dev/nvme karena disk terhubung melalui port NVME dan menggunakan nvme driver di Linux. Anda cukup memikirkan /dev/<something> sebagai perangkat yang menggunakan <something> pengemudi. Semua driver dan penamaan perangkat memiliki standarnya masing-masing, tidak satu standar untuk semuanya, jadi tidak apa-apa jika penamaan untuk perangkat NVME seperti itu. Dan alasan mengapa nvme tidak diterjemahkan ke scsi juga karena kedua protokol terlalu berbeda dan implementasi seperti itu akan terlalu rumit (lihat komentar oleh @grawity dan @Vality untuk info lebih detail).


Selain jawaban lain, perhatikan bahwa NVMe memiliki konsep ruang nama yang tidak sesuai dengan /dev/sd pola. Misalnya, di sistem saya:

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

Linux
  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Linux – Apa Arti Huruf 'u' Di /dev/urandom?

  3. Cara memetakan perangkat /dev/sdX dan /dev/mapper/mpathY dari perangkat /dev/dm-Z

  1. Apa itu file /dev/zero dan /dev/null di Linux?

  2. Bagaimana cara menyandikan base64 /dev/random atau /dev/urandom?

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Cara membuat kata sandi acak di linux menggunakan /dev/random

  2. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  3. Mengapa < atau > diperlukan untuk menggunakan /dev/tcp