У якому сенсі SATA "розмовляє" SCSI? Скільки ділиться між SCSI та ATA?


27

Принаймні, це для мене нічого нового, що SATA насправді "розмовляє" з SCSI, отже чому ці пристрої SATA відображаються як пристрої SCSI в Linux.

Раніше було задано відповідне запитання, наприклад, чому мої пристрої SATA відображаються під / proc / scsi / scsi?

Однак те, що не вдається зазначити, де я бачив це, про яке говорилося раніше, полягає саме в тому, в якому сенсі SATA стосується SCSI, і як вони відрізняються.

Я припускаю, що це зрозуміло, що вони різняться на фізичному рівні, оскільки вони не діляться сумісними кабелями.

Однак як бути вище на стеку? Мені відомо, як Linux представляє диски SATA і навіть IDE на сучасних ядрах як просто SCSI для підсистеми SCSI. Але як щодо власне протоколу, який використовується в шині?

Я також знаю, що ATAPI - це інкапсуляція для SCSI, але що робити з регулярними ATA? Я помітив, що функції SCSI, такі як NCQ, FUA, DPO тощо (якщо я не пам’ятаю неправильно), були прийняті від SCSI. Але незрозуміло, наскільки "значна частина" набору команд SCSI насправді поділяється чи подібною.

Чи сучасні пристрої SATA з їх специфікацією ATA реалізують підмножину набору команд SCSI, але інкапсульовану (як в ATAPI)? Ідентичний набір? Суперсет? Чи, можливо, лише вибрані функції реалізовані у вигляді варіантів, які не є безпосередньо ідентичними?

Де я можу знайти якусь чітку інформацію щодо цього, а особливо, як це стосується ядра Linux? Якийсь посібник для розвитку драйверів був би непоганим, але навіть достатньо лише огляду, який не повністю пропускає всі деталі. Я усвідомлюю, що можу просто прочитати фактичну специфікацію, але це знову дуже детально, важко знайти те, що ви насправді шукаєте, і просто нереально для мене, і, мабуть, для більшості інших користувачів у часовому розумінні.

Відповіді:


42

SCSI та ATA - це абсолютно різні стандарти. В даний час вони розробляються під егідою організації стандартів INCITS, але різними групами. SCSI знаходиться під технічним комітетом T10 , а ATA - під T13 . 1

ATA був розроблений лише на жорстких дисках. SCSI є як більш широким, так і старшим - стандартним способом управління пристроями масового зберігання, магнітофонами, знімними накопичувачами оптичних носіїв (CD, DVD, Blu-Ray ...), сканерами та багатьма іншими типами пристроїв .

У середині 1980-х років, коли IDE був представлений у світі ПК, це було не очевидно, що SCSI буде висунутий на межі обчислювального світу. SCSI був налагодженим та більш дієздатним. Робочі станції Unix та комп’ютери Macintosh постачаються із жорсткими дисководами SCSI протягом десятиліть. ПК високого класу часто мав SCSI-карту як мінімум для периферійних пристроїв, а часто і для системного жорсткого диска. Перші CD-ROM та магнітоли для персональних комп'ютерів вийшли першими у формі SCSI.

Однак галузь ПК є такою, якою вона є, був поштовх використовувати менш дорогий стандарт ATA замість SCSI. Первісний компроміс отримав назву ATAPI - розширення до ATA, що дозволяє пристрою, який розуміє SCSI внутрішньо, отримувати ці команди SCSI через інтерфейс ATA. Детальніше про це нижче.

Через кілька років SCSI отримав функцію пропуску команд ATA , в основному зворотну ATAPI, що дозволяє командам ATA через шину SCSI. Одним із способів використання цього засобу є тунель команд ATA SMART над SCSI. smartmontoolsробить це , наприклад.

Згодом комітет INCITS T10 розробив стандарт під назвою переклад SCSI / ATA (SAT), який переводить команди SCSI на команди ATA і навпаки. 2 Ядро Linux в libataбібліотеці забезпечує реалізацію SAT для Linux, серед іншого .

У протоколах SCSI та ATA є логічне перекриття, оскільки вони обидва керують дисками жорсткого диска. Обом, очевидно, потрібен спосіб шукати певний сектор жорсткого диска, витягувати вміст цього сектора тощо. Тим не менш, формати команд зовсім інші; інакше нам би не потрібні ці механізми перекладу та проходження.

SATA насправді "розмовляє" з SCSI

Це приблизно так само правдиве, як твердження, що "Автомобілі рожеві". Деякі машини рожеві.

ATAPI, ATA прохід і SAT - лише частина історії. Читайте далі.

Я припускаю, що це зрозуміло, що вони різняться на фізичному рівні, оскільки вони не діляться сумісними кабелями.

Це було правдою в старому паралельному світі SCSI , але так само, як SATA замінив PATA, SAS замінив паралельний SCSI.

SAS і SATA мають однакові роз'єми накопичувача, і вони електрично сумісні. Контролер SAS може спілкуватися з пристроями SAS і SATA, але привід SAS не може працювати з контролером, який підтримує лише SATA. Різниця полягає в узгодженні, і в командах, які ви можете використовувати після пристроїв на кожному кінці кабелю, з'ясовуйте, про що вони говорять.

Насправді багато контролерів "SATA RAID" - це дійсно контролери SAS RAID. Такі контролери часто мають один або декілька з'єднувальних роз'ємів SFF-8087 SAS на карті, але ви можете підключити до них накопичувачі SATA за допомогою перемикача SFF-8087 до 4 × SATA. Так, карта SAS / SATA RAID з двома сполучними роз'ємами SFF-8087 керує до 8 приводів. 3

Інша поширена ситуація - це корпус накопичувача з гарячою заміною або корпус комп'ютера з планією SAS . Задній план зазвичай має на ньому роз'єм SFF-8087, що дозволяє використовувати простий кабель від 8087 до 8087 від задньої площини до дискового контролера. Якщо накопичувачі в лотках гарячої заміни є SATA, це не має значення. Контролер SAS може спілкуватися з ними по кабелю SAS, коли вони сидять у приводних санях, які підключають накопичувачі до задньої площини SAS. Диски все ще є дисками SATA, хоча, кажучи протоколом ATA, а не SCSI.

Я також знаю, що ATAPI є інкапсуляцією для SCSI

Правда, але ATAPI використовується лише для інших пристроїв, крім жорстких дисків. Основна причина цього стандарту полягає в тому, щоб дозволити інтерфейс ATA транспортувати команди SCSI, такі як команди потокового передачі даних для стрічкового накопичувача, команда "витягнутий носій" для оптичного дисковода або команда "відтворити доріжку" для аудіодиска CD .

Цей факт стає менш актуальним, оскільки пристрої, що не мають жорсткого диска, які говорили SCSI через ATAPI, зникають або переходять на інші інтерфейси. Пристрої стрічкових накопичувачів низького класу більше не існують, тому стрічкові накопичувачі зараз усі SAS. 4 Сканери в даний час знаходяться лише через USB. Оптичні медіа-накопичувачі переміщуються за межами корпусу комп'ютера для підключення через USB або повністю зникають, залишаючи лише все рідкісні внутрішні оптичні накопичувачі, що говорять про ATAPI.

Незалежно від цього, пристрій SATA, який розуміє SCSI через ATAPI, є "пристроєм SCSI" лише обмеженим чином. Такі пристрої не отримають переваги від більшості переваг SAS над SCSI . Ці можливості роблять SAS виразно цінними порівняно з SATA, незважаючи на ATAPI.

Якщо ви хочете іншої аналогії автомобіля, той факт, що я можу керувати своїм автомобілем по овальній гоночній трасі, не робить його гоночним автомобілем.

Я помітив, що функції SCSI, такі як NCQ, FUA, DPO тощо (якщо я не пам’ятаю неправильно), були прийняті від SCSI. Але незрозуміло, наскільки "значна частина" набору команд SCSI насправді поділяється чи подібною.

Переважно це становить мімікрію низького рівня. NCQ - це не те саме, що , наприклад, TCQ . Ви отримаєте жорсткий диск з TCQ, лише якщо це пристрій SAS. Підключіть накопичувач SATA, керований NCQ, до контролера SAS, і він не раптом отримає можливість TCQ.

Зважаючи на це, сучасний пристрій SATA цілком може бути набагато більш здатним, ніж пристрій SCSI з десятиліття тому. Це, безумовно, здатне бути набагато більш високим рівнем вводу / виводу.

Все це збиває з пантелику та перетинається, оскільки така природа апаратного світу ПК. Немає чітких ліній, оскільки виробники оптичних приводів - просто для вибору однієї підгалузі - насправді не хочуть будувати два абсолютно різних накопичувачів, один говорить SAS на найвищий рівень вираження, а другий говорить SATA. Отже, вони йдуть на компроміс. Вони лобіюють комітети, визначаючи такі стандарти, щоб створити єдиний стандарт, який дозволяє їм скидати SATA на шину SAS, і всі в основному раді.

Де я можу знайти якусь чітку інформацію щодо цього, а особливо, як це стосується ядра Linux?

Зрештою, ви хочете прочитати джерела Linux . Посібник для libATAрозробників також повинен бути корисним.

Я не знаю жодного легкого резюме того, як все це працює. Це було розроблено не просто. Він був розроблений з урахуванням три десятиліття еволюції обладнання, конкуруючих стандартів та різних цілей. Далі він був розроблений без магічних рівнів передбачення. Словом, це безлад. Тільки люди, які дійсно повинні знати, як працює безлад, - це ті, хто створює ядра ОС, ті, хто розробляє обладнання та, меншою мірою, ті, хто пише драйвери для ядер ОС. Для такого невеликого кадра високодієздатних людей достатньо стандартів та робочого коду.

Сьогодні Linux називає більшість перезаписуваних пристроїв масового зберігання /dev/sd?. "SD" колись виступав за "SCSI диск", і існував лише для того, щоб відрізняти від /dev/hd?загального значення "Жорсткий диск", але маючи на увазі PATA в більшості випадків. Ця відмінність - ще одна практична невідповідність сьогодні. Зараз у нас є SSD, USB-накопичувачі, віртуальні жорсткі диски , пристрої iSCSI та багато іншого /dev/sd?. Я пропоную вам почати думати про "SD" як про скорочення "накопичувальний пристрій", а не переживати, чи пристрій говорить ATA через SATA, ATA через Ethernet , SCSI через USB , SCSI через ATAPI, SCSI через SAS, SCSI через IP (iSCSI ), або що у вас є.

Основна проблема полягає в тому, що схеми іменування часто переживають причину, що стоїть за схемою. Ви це бачите в /dev/scd0. У цей час пристрій, підключений до цього /devвузла, швидше за все буде приводом DVD або Blu-Ray, ніж компакт-диском.

Альтернатива - коли ви називаєте кожен /devвузол за точним типом пристрою, який підключений до нього - має свої проблеми. Чи справді було б краще, якби ми назвали /devвузол за протоколом низького рівня, який він використовував? /dev/atapi0, /dev/sas0тощо? А може, ти б віддав перевагу /dev/atapibluray0і таке? Що з мультимедійними накопичувачами? Чи повинен цей же драйвер виставити /dev/atapicd0на випадок, якщо ви вставите компакт-диск у привід Blu-Ray? Це просто замінює одну заплутану схему іншою.

/dev/sd?Абстракція Linux не є досконалою, але вона корисна. Наприклад, ви можете дізнатися той факт, що /dev/sdaшвидше за все завантажувальний привід, не турбуючись про те, які кабелі, протокол інтерфейсу та засоби масової інформації стоять за цим ім'ям. Якщо я скажу вам, що в даному вікні Linux є єдиний системний накопичувач, оптичний привід, а іноді і USB-накопичувач, підключений до нього, ви можете впевнено здогадатися, що вони викликаються /dev/sda, /dev/sdbі /dev/sdcвідповідно.


Виноски :

  1. SCSI та ATA не почали ділитися батьківською організацією зі стандартів. Вони обидва почали працювати як власні контролери жорсткого диска. SCSI еволюціонували від Shugart Associates " Саси і ATA / IDE вийшов з більш пізнього дизайну співпраці між Western Digital, Compaq і CDC.

    Пізніше ANSI стандартизували обидва, а ATA-1 слідував за SCSI-1 приблизно через 8 років.

    INCITS - це сестра організація ANSI . INCITS публікує остаточні стандарти через ANSI у США та ISO / IEC JTC 1 у всьому світі.

  2. В даний час стандарт СБ-3 , опублікований в травні 2015 року, з SAT-4 і SAT-5 в ході , як я пишу це в середині липня 2018. Остання посилання веде проекти версій незавершеного.

  3. Я ігнорую мультиплікатори портів SATA , розширювачі SAS тощо.

  4. За винятком моделей, сумісних із старими паралельними системами SCSI.


мені досі не зрозуміло, чи є деякі функції / набори команд однакові в ATA та SCSI, і наскільки великий цей союз, якщо він взагалі існує. Я погоджуюся, що читання вихідного коду Linux дасть кілька відповідей, але це, мабуть, нарівні з читанням самої специфікації ATA. Джерело Linux, ймовірно, також не дало б дуже чіткого уявлення про те, скільки є спільного та як воно поділяється між ATA та SCSI. Використовувані конвенції про іменування, ймовірно, були б більш просвітленими, прочитавши джерело Linux.
AttributedTensorField

@AttributedTensorField: перегляньте останні зміни.
Воррен Янг

1
Вау, чудова відповідь. Тільки одне; / dev / atapi0, / dev / sas0 тощо; Хіба це не так, як це роблять BSD (принаймні FreeBSD)? А також Solaris IIRC. А в Linux зазвичай / dev / disk / by-path є дещо схожим.
CVn

@ MichaelKjörling: Звичайно. Суть коментаря не в тому, що ці інші способи погляду на речі неправильні, це те, що зміна схеми іменування, щоб краще відповідати тому, що відбувається внизу, не зводить основної проблеми. Я, як один, ціную /dev/sd?абстракцію Linux .
Warren Young

1
Зауважте, що більшість дистрибутивів у цей час виставляють оптичні приводи як / dev / srN, де N - це число.
Перкінс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.