Dans quel sens SATA "parle" SCSI? Combien est partagé entre SCSI et ATA?

Ce n'est rien de nouveau pour moi au less, que SATA parle réellement SCSI, donc pourquoi ces périphériques SATA apparaissent comme des périphériques SCSI sous Linux.

Une question connexe a déjà été posée, par exemple Pourquoi mes périphériques SATA apparaissent-ils sous / proc / scsi / scsi?

Cependant ce qui manque à mentionner où j'ai vu cela discuté avant est exactement dans quel sens SATA se rapporte à SCSI, et comment ils diffèrent.

Je suppose que l'on tient pour acquis qu'ils diffèrent sur la couche physique, car ils ne partagent pas les câbles compatibles.

Mais qu'en est-il plus haut sur la stack? Je suis conscient de la façon dont Linux représente les disques SATA et même IDE sur les kernelx modernes en tant que SCSI seulement au sous-système SCSI. Mais qu'en est-il du protocole utilisé dans le bus?

Je sais aussi que ATAPI est une encapsulation pour SCSI, mais qu'en est-il de l'ATA régulier? J'ai remarqué que les fonctionnalités de SCSI telles que NCQ, FUA, DPO, etc (si je ne me souviens pas correctement) ont été adoptées à partir de SCSI. Mais on ne sait pas comment "beaucoup" de l'set de commands SCSI est réellement partagé ou similaire.

Les périphériques SATA modernes avec leurs spécifications ATA implémentent-ils un sous-set du jeu de commands SCSI, mais encapsulés (comme dans ATAPI)? Un set identique? Un sur-set? Ou peut-être que certaines caractéristiques sont implémentées comme des variantes qui ne sont pas directement identiques?

Où puis-je find des informations claires à ce sujet, et surtout comment cela se rapporte au kernel Linux? Une sorte de tutoriel pour le développement du pilote serait bien, mais même un aperçu qui ne saute pas complètement sur tous les détails suffirait. Je suis conscient que je peux juste lire la spécification actuelle, mais c'est encore beaucoup trop détaillé, difficile de find ce que vous cherchez vraiment, et tout simplement pas réalist pour moi et probablement la plupart des autres users dans le sens temporel.

SCSI et ATA sont des normes entièrement différentes. Ils sont actuellement tous les deux développés sous l'égide de l'organisation des standards INCITS mais par différents groupes. SCSI est sous le comité technique T10 , tandis que ATA est sous T13 . 1

ATA a été conçu avec des disques durs à l'esprit, seulement. SCSI est une norme plus large, capable de contrôler les périphériques de stockage de masse, les lecteurs de bande, les lecteurs de supports optiques amovibles (CD, DVD, Blu-Ray …), les scanners et de nombreux autres types d'appareils .

Il n'était pas évident au milieu des années 80 – quand IDE a été introduit dans le monde des PC – que SCSI serait poussé à la marge du monde de l'informatique. SCSI était bien établi et plus capable. Les posts de travail Unix et les ordinateurs Macintosh livrés avec des disques durs SCSI depuis des décennies. Les PC haut de gamme avaient souvent une carte SCSI pour les périphériques au less, et souvent aussi pour le disque dur du système. Les premiers lecteurs de CD-ROM et de bandes pour ordinateurs personnels sont sortis sous forme SCSI en premier.

L'indussortinge du PC étant ce qu'elle est, cependant, il y avait une pression pour utiliser la norme ATA less chère au lieu de SCSI. Le compromis initial était appelé ATAPI , une extension de l'ATA qui permet à un périphérique qui comprend SCSI en interne de recevoir ces commands SCSI via une interface ATA. Plus sur ceci ci-dessous.

Plusieurs années plus tard, SCSI a obtenu la fonction de transmission de commands ATA , essentiellement l'inverse de ATAPI, autorisant les commands ATA sur un bus SCSI. Une utilisation pour cette fonction est de tuner les commands ATA SMART via SCSI. smartmontools fait cela , par exemple.

Plus tard encore, le comité INCITS T10 a développé une norme appelée la traduction SCSI / ATA (SAT), qui traduit les commands SCSI en commands ATA et vice versa. 2 La librairie libata du kernel Linux fournit une implémentation SAT pour Linux, entre autres .

Il y a un chevauchement logique entre les protocoles SCSI et ATA, car ils contrôlent tous deux les disques durs. Les deux ont évidemment besoin d'un moyen de searchr un secteur de disque dur particulier, de récupérer le contenu de ce secteur, etc. Néanless, les formats de command sont entièrement différents; sinon, nous n'aurions pas besoin de ces mécanismes de traduction et de transmission.

SATA réellement "parle" SCSI

C'est à peu près aussi vrai que l'affirmation que «les voitures sont roses». Certaines voitures sont roses.

ATAPI, ATA-through et SAT ne sont qu'une partie de l'histoire. Continuer à lire.

Je suppose que l'on tient pour acquis qu'ils diffèrent sur la couche physique, car ils ne partagent pas les câbles compatibles.

C'était vrai dans l'ancien monde SCSI parallèle , mais tout comme SATA a remplacé PATA, SAS a remplacé SCSI parallèle.

SAS et SATA partagent les mêmes connecteurs de lecteur, et ils sont élecsortingquement compatibles. Un controller SAS peut communiquer avec des périphériques SAS et SATA, mais un lecteur SAS ne peut pas fonctionner avec un controller SATA uniquement. La différence est dans la négociation et dans les commands que vous pouvez utiliser après que les périphériques situés à chaque extrémité du câble include ce à quoi ils parlent.

En fait, beaucoup de controllers "SATA RAID" sont vraiment des controllers SAS RAID. Ces controllers ont souvent un ou plusieurs connecteurs d'accouplement SAS SFF-8087 sur la carte, mais vous pouvez leur connecter des disques SATA avec un câble de dérivation SFF-8087 à 4 × SATA. Ainsi, une carte RAID SAS / SATA avec deux connecteurs d'accouplement SFF-8087 contrôle jusqu'à 8 disques. 3

Une autre situation fréquente est un boîtier d'unité remplaçable à chaud ou un boîtier d'ordinateur avec un fond de panier SAS. Le fond de panier est généralement équipé d'un connecteur SFF-8087, ce qui permet d'utiliser un simple câble 8087 à 8087 entre le fond de panier et le controller de disque. Si les lecteurs des plateaux remplaçables à chaud sont SATA, cela n'a pas d'importance. Le controller SAS peut leur parler via le câblage SAS, car ils sont assis dans des traîneaux de lecteur qui twigr les disques dans le fond de panier SAS. Les lecteurs sont toujours des lecteurs SATA, cependant, parlant le protocole ATA, pas SCSI.

Je sais aussi que ATAPI est une encapsulation pour SCSI

Vrai, mais ATAPI est uniquement utilisé pour les périphériques autres que les disques durs. La principale raison pour laquelle cette norme existe est de permettre à une interface ATA de transporter des commands SCSI telles que les commands de données en continu d'un lecteur de bande, la command "éjecter le support" d'un lecteur de disque optique ou la command "Lire la piste" .

Ce fait est de less en less pertinent car les périphériques non-HDD qui parlaient SCSI sur ATAPI disparaissent ou passent à d'autres interfaces. Les lecteurs de bandes bas de gamme n'existent plus, donc les lecteurs de bande sont tous SAS maintenant. 4 Les scanners sont à peu près USB seulement ces jours-ci. Les lecteurs de supports optiques se déplacent à l'extérieur du boîtier de l'ordinateur pour être connectés via USB, ou disparaissent entièrement, ne laissant que les lecteurs optiques internes de plus en plus rares parlant ATAPI.

Peu importe, un périphérique SATA qui comprend SCSI sur ATAPI est un "périphérique SCSI" seulement de manière limitée. De tels dispositifs ne bénéficieront pas de la plupart des avantages de SAS sur SCSI . Ces capacités rendent SAS nettement plus utile que SATA, ATAPI nonobstant.

Si vous voulez une autre analogie de voiture, le fait que je puisse conduire ma voiture sur une piste de course ovale ne fait pas une voiture de course.

J'ai remarqué que les fonctionnalités de SCSI telles que NCQ, FUA, DPO, etc (si je ne me souviens pas correctement) ont été adoptées à partir de SCSI. Mais on ne sait pas comment "beaucoup" de l'set de commands SCSI est réellement partagé ou similaire.

Surtout, cela revient à un mimétisme bas de gamme. NCQ n'est pas la même chose que TCQ , par exemple. Vous ne recevrez un disque dur avec TCQ que s'il s'agit d'un périphérique SAS. Branchez un lecteur SATA compatible NCQ dans un controller SAS, et il n'améliore pas soudainement la capacité TCQ.

Cela dit, un périphérique SATA moderne pourrait bien être beaucoup plus capable qu'un périphérique SCSI il y a une décennie. Il va certainement être capable de niveaux d'E / S beaucoup plus élevés.

Tout cela est confus et se chevauchent parce que c'est la nature du monde du matériel PC. Il n'y a pas de lignes claires parce que les fabricants de lecteurs optiques – juste pour choisir un sous-secteur – ne veulent vraiment pas build deux disques totalement différents, l'un parlant SAS à sa plus haute expression et l'autre parlant SATA. Donc, ils compromettent. Ils font pression dans les comités définissant de telles normes pour créer un standard unique qui leur permet de laisser tomber leur disque SATA sur un bus SAS, et tout le monde est généralement heureux.

Où puis-je find des informations claires à ce sujet, et surtout comment cela se rapporte au kernel Linux?

En fin de count, vous voulez lire les sources Linux . Le libATA développeur libATA devrait également être utile.

Je ne suis pas au courant d'un résumé facile de la façon dont tout cela fonctionne. Il n'a pas été conçu pour être facile. Il a été conçu pour s'adapter à trois décennies d'évolution matérielle, de normes concurrentes et d'objectives disparates. En outre, il a été conçu sans niveaux de prévoyance magiques. En bref, c'est un gâchis. Les seules personnes qui doivent vraiment savoir comment fonctionne le mess sont celles qui construisent les kernelx du operating system, ceux qui conçoivent le matériel et, dans une moindre mesure, ceux qui écrivent les pilotes pour les kernelx du operating system. Pour un si petit nombre de personnes hautement compétentes, les normes et le code de travail sont suffisants.

Aujourd'hui, Linux appelle la plupart des périphériques de stockage de masse réinscriptibles /dev/sd? . "SD" était une fois "disque SCSI", et existait simplement pour se différencier de /dev/hd? génériquement signifiant "disque dur", mais impliquant PATA dans la plupart des cas. Cette distinction est un autre manque de pertinence pratique aujourd'hui. Maintenant nous avons des SSD, des keys USB, des disques durs virtuels , des périphériques iSCSI et plus encore appelés /dev/sd? . Je vous suggère de commencer à penser à «SD» comme un raccourci pour «périphérique de stockage», plutôt que de se soucier de savoir si le périphérique parle ATA sur SATA, ATA sur Ethernet , SCSI sur USB , SCSI sur ATAPI, SCSI sur SAS, SCSI sur IP ), ou qu'avez-vous?

Le problème principal est que les schémas de nommage dépassent souvent la raison derrière le schéma. Vous voyez cela dans /dev/scd0 . Le périphérique connecté à ce noeud /dev est plus susceptible d'être un lecteur DVD ou Blu-Ray qu'un lecteur Compact Disc ces jours-ci.

L'alternative – où vous nommez chaque noeud /dev après le type de périphérique qui lui est connecté – a ses propres problèmes. Serait-il vraiment mieux de nommer le nœud /dev après le protocole de bas niveau utilisé? /dev/atapi0 , /dev/sas0 , etc? Ou peut-être préférez-vous /dev/atapibluray0 et ainsi de suite? Qu'en est-il des disques multimédias? Est-ce que le même pilote doit également exposer /dev/atapicd0 au cas où vous /dev/atapicd0 un Compact Disc dans le lecteur Blu-Ray? Cela remplace simplement un schéma déroutant par un autre.

Linux /dev/sd? l'abstraction n'est pas parfaite, mais c'est utile. Par exemple, vous pouvez apprendre le fait que /dev/sda est probablement le lecteur de démarrage sans prendre la peine de s'inquiéter du câblage, du protocole d'interface et des médias derrière ce nom. Si je vous dis qu'une machine Linux donnée a un seul lecteur système, un lecteur optique et a parfois une key USB branché, vous pouvez deviner avec confiance qu'ils sont appelés /dev/sda , /dev/sdb et /dev/sdc , respectivement.


Notes de bas de page :

  1. SCSI et ATA n'ont pas commencé à partager une organisation de normalisation mère. Ils ont tous deux commencé comme controllers de disque dur propriétaires. SCSI a évolué à partir de SASI de Shugart Associates , et ATA / IDE est né d' une collaboration de design beaucoup plus tardive entre Western Digital, Compaq et CDC.

    ANSI a ensuite standardisé les deux, avec ATA-1 après SCSI-1 environ 8 ans plus tard.

    INCITS est une sorte d'organisation soeur à ANSI . INCITS publie des normes finales par ANSI aux États-Unis et ISO / IEC JTC 1 dans le monde entier.

  2. La norme actuelle est SAT-2 , comme je l'écris à la mi-juillet 2014, mais elle devrait être remplacée par SAT-3 plus tard en 2014.

    Un brouillon de SAT-3 est disponible ici pour ceux qui ont rempli le formulaire de notification T10.

  3. J'ignore les multiplicateurs de port SATA , les expandeurs SAS , etc.

  4. Excepté les templates fabriqués pour la compatibilité avec les anciens systèmes SCSI parallèles.