GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi Linux répertorie-t-il les lecteurs NVMe comme /dev/nvme0 au lieu de /dev/sda ?

/dev/sd était à l'origine utilisé pour les appareils utilisant le sd-bus pilote, qui est le pilote des périphériques SCSI (et sd signifie littéralement disque SCSI). De nos jours, il est utilisé pour les disques SCSI, les disques SATA et les disques USB. La raison semble être que maintenant presque tous les périphériques utilisent le protocole de commande SCSI au-dessus du bus non SCSI (le noyau traite tous les périphériques ATA de la même manière en utilisant libata et il prétend qu'il s'agit de périphériques SCSI - crédit à @grawity), et donc nous voyons tous ces appareils comme /dev/sd .

Mais tous les périphériques de stockage ne sont pas /dev/sd . /dev/hd et /dev/xvd sont toujours utilisés - le premier pour les disques PATA/IDE et le second pour les périphériques de stockage en nuage (disques virtuels, etc.) et ils ont tous des pilotes et des noms différents. Vous ne les voyez pas car le stockage virtuel est uniquement sur les clouds/hyperviseurs (et vous n'en utilisez probablement aucun) et parce que les disques PATA/IDE se font de plus en plus rares et que sur la plupart des machines modernes le noyau utilise en fait ide-scsi pilote pour le traduire en protocole SCSI (crédit à @Wumpus Q. Wumbley).

D'autres exemples incluent /dev/mmcblkXpY qui est pour les appareils SD/eMMC/bare NAND/NOR et a le même schéma de nommage que /dev/nvme et /dev/vd qui est à nouveau utilisé pour les disques virtuels dans le stockage en nuage (crédit à @Jan Dorniak pour les exemples supplémentaires).

Dans votre cas , il s'appelle /dev/nvme car le disque est connecté via un port NVME et utilise le nvme pilote sous Linux. Vous pouvez juste penser à /dev/<something> en tant qu'appareil qui utilise <something> chauffeur. Tous les pilotes de périphériques et les dénominations ont leurs propres normes, ce n'est pas une norme pour tous, donc c'est tout à fait correct si la dénomination des périphériques NVME est comme ça. Et la raison pour laquelle nvme n'est pas traduit en scsi de plus, les deux protocoles sont trop différents et une telle implémentation serait trop complexe (reportez-vous aux commentaires de @grawity et @Vality pour des informations plus détaillées).


En plus de l'autre réponse, notez que NVMe a le concept d'espaces de noms qui ne rentreraient pas dans le /dev/sd motif. Par exemple, sur mon système :

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

Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Que sont les fichiers /dev/zero et /dev/null sous Linux

  3. Comment échanger /dev/sda avec /dev/sdb ?

  4. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  5. Comment Linux utilise /dev/tty et /dev/tty0

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Comment encoder en base64 /dev/random ou /dev/urandom ?

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0

Est-ce une erreur de lier /dev/random à /dev/urandom sous Linux ?

echo ou print /dev/stdin /dev/stdout /dev/stderr

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp