W jakim sensie SATA „mówi” SCSI? Ile jest dzielone między SCSI i ATA?

27

Nie jest to dla mnie niczym nowym, że SATA faktycznie „mówi” SCSI, dlatego te urządzenia SATA pojawiają się jako urządzenia SCSI w Linuksie.

Podobne pytanie zostało już wcześniej zadane, np. Dlaczego moje urządzenia SATA pojawiają się w katalogu / proc / scsi / scsi?

Jednak to, o czym nie wspomniałem, gdy widziałem to omówione wcześniej, jest dokładnie w tym sensie, w jakim SATA odnosi się do SCSI i jak się różnią.

Zakładam, że jest rzeczą oczywistą, że różnią się w warstwie fizycznej, ponieważ nie dzielą kompatybilnych kabli.

A co z wyższym stosem? Zdaję sobie sprawę z tego, jak Linux reprezentuje dyski SATA, a nawet dyski IDE w nowoczesnych jądrach, jako SCSI w podsystemie SCSI. Ale co z faktycznym protokołem używanym w magistrali?

Wiem też, że ATAPI jest enkapsulacją SCSI, ale co ze zwykłym ATA? Zauważyłem, że funkcje SCSI, takie jak NCQ, FUA, DPO itp. (Jeśli nie pamiętam niepoprawnie) zostały przejęte z SCSI. Nie jest jednak jasne, jak „duża” część zestawu poleceń SCSI jest współdzielona lub podobna.

Czy nowoczesne urządzenia SATA ze specyfikacją ATA implementują podzbiór zestawu poleceń SCSI, ale są enkapsulowane (jak w ATAPI)? Identyczny zestaw? Nadzbiór? A może tylko wybrane funkcje są implementowane jako warianty, które nie są bezpośrednio identyczne?

Gdzie mogę znaleźć pewne jasne informacje na ten temat, a zwłaszcza ich związek z jądrem Linuksa? Przydałby się jakiś samouczek dotyczący programowania sterowników, ale wystarczyłby nawet sam przegląd, który nie pomija wszystkich szczegółów. Wiem, że mogę po prostu odczytać aktualną specyfikację, ale to znowu jest zbyt szczegółowe, ciężko znaleźć to, czego naprawdę szukasz, i po prostu nie jest realistyczne dla mnie i prawdopodobnie dla większości innych użytkowników w sensie czasowym.

AtrybutTensorField
źródło

Odpowiedzi:

42

SCSI i ATA to zupełnie inne standardy. Oba są obecnie opracowywane pod egidą organizacji normalizacyjnej INCITS , ale przez różne grupy. SCSI podlega komitetowi technicznemu T10 , zaś ATA - T13 . 1

ATA zostało zaprojektowane wyłącznie z myślą o dyskach twardych. SCSI jest zarówno szerszy, jak i starszy, będąc standardowym sposobem kontrolowania urządzeń pamięci masowej, napędów taśm, wymiennych napędów nośników optycznych (CD, DVD, Blu-Ray ...), skanerów i wielu innych typów urządzeń .

W połowie lat 80. XX wieku - kiedy wprowadzono IDE do świata komputerów PC - nie było oczywiste, że SCSI zostanie zepchnięty na margines świata komputerów. SCSI miał ugruntowaną pozycję i był bardziej zdolny. Stacje robocze Unix i komputery Macintosh są dostarczane z dyskami twardymi SCSI od dziesięcioleci. Komputery klasy wyższej często miały kartę SCSI przynajmniej dla urządzeń peryferyjnych, a często także dla systemowego dysku twardego. Wczesne dyski CD-ROM i napędy taśm do komputerów osobistych pojawiły się najpierw w formie SCSI.

Jednak w branży komputerów osobistych istniał nacisk na użycie tańszego standardu ATA zamiast SCSI. Początkowy kompromis nazwano ATAPI , rozszerzenie ATA, które umożliwia urządzeniu, które wewnętrznie rozumie SCSI, odbieranie tych poleceń SCSI przez interfejs ATA. Więcej na ten temat poniżej.

Kilka lat później SCSI otrzymało funkcję przekazywania poleceń ATA , w zasadzie odwrotność ATAPI, umożliwiającą polecenia ATA przez szynę SCSI. Jednym z zastosowań tego narzędzia jest tunelowanie poleceń ATA SMART przez SCSI. smartmontoolsrobi to na przykład.

Później komitet INCITS T10 opracował standard o nazwie Tłumaczenie SCSI / ATA (SAT), który tłumaczy polecenia SCSI na polecenia ATA i odwrotnie. 2 jądra Linux jest libatabiblioteka dostarcza implementację SAT dla systemu Linux, między innymi .

W protokołach SCSI i ATA występuje logiczne nakładanie się, ponieważ oba kontrolują dyski twarde. Oba oczywiście potrzebują sposobu na wyszukanie określonego sektora dysku twardego, odzyskanie zawartości tego sektora itp. Niemniej jednak formaty poleceń są zupełnie inne; w przeciwnym razie nie potrzebowalibyśmy tych mechanizmów tłumaczenia i przekazywania.

SATA faktycznie „mówi” SCSI

Jest to tak samo prawdziwe, jak twierdzenie, że „samochody są różowe”. Niektóre samochody są różowe.

ATAPI, tranzyt ATA i SAT to tylko część historii. Czytaj.

Zakładam, że jest rzeczą oczywistą, że różnią się w warstwie fizycznej, ponieważ nie dzielą kompatybilnych kabli.

Tak było w starym świecie równoległych SCSI , ale podobnie jak SATA zastąpił PATA, SAS zastąpił równoległy SCSI.

SAS i SATA dzielą te same złącza dysków i są one elektrycznie kompatybilne. Kontroler SAS może komunikować się z urządzeniami SAS i SATA, ale dysk SAS nie może współpracować z kontrolerem tylko SATA. Różnica polega na negocjacjach, a w poleceniach, których można użyć po tym, jak urządzenia na każdym końcu kabla dowiedzą się, z czym rozmawiają.

W rzeczywistości wiele kontrolerów „SATA RAID” to tak naprawdę kontrolery SAS RAID. Takie kontrolery często mają jedno lub więcej odpowiednich gniazd SFF-8087 SAS na karcie, ale można do nich podłączyć dyski SATA za pomocą kabla SFF-8087 do 4 × SATA. Tak więc karta SAS / SATA RAID z dwoma odpowiednimi złączami SFF-8087 steruje maksymalnie 8 dyskami. 3)

Inną częstą sytuacją jest obudowa napędu typu hot-swap lub obudowa komputera z płytą montażową SAS . Płyta montażowa zwykle ma złącze SFF-8087, co pozwala na użycie prostego kabla 8087 do 8087 od płyty montażowej do kontrolera dysku. Jeśli dyski w zasobnikach wymienianych podczas pracy to SATA, nie ma to znaczenia. Kontroler SAS może rozmawiać z nimi za pomocą okablowania SAS, gdy siedzą w saniach napędowych, które podłączają dyski do płyty montażowej SAS. Dyski wciąż są jednak dyskami SATA, mówiąc w protokole ATA, a nie SCSI.

Wiem również, że ATAPI jest enkapsulacją SCSI

To prawda, ale ATAPI jest używany tylko dla urządzeń innych niż dyski twarde. Głównym powodem istnienia tego standardu jest umożliwienie interfejsowi ATA transportowania poleceń SCSI, takich jak polecenia przesyłania strumieniowego danych dla napędu taśmowego, polecenie „wysuwania nośnika” dla napędu optycznego lub polecenie „odtwarzania ścieżki” dla dysku CD audio .

Fakt ten staje się coraz mniej istotny, ponieważ urządzenia inne niż HDD, które mówiły SCSI przez ATAPI, znikają lub przechodzą na inne interfejsy. Napędy taśmowe niskiej klasy już nie istnieją, więc wszystkie napędy taśmowe są teraz SAS. 4 Skanery są w dzisiejszych czasach w zasadzie tylko USB. Napędy dysków optycznych przemieszczają się poza obudową komputera, aby je podłączyć przez USB, lub całkowicie znikają, pozostawiając tylko coraz rzadsze wewnętrzne napędy optyczne z komunikacją ATAPI.

Niezależnie od tego, urządzenie SATA, które rozumie SCSI przez ATAPI, jest „urządzeniem SCSI” tylko w ograniczonym zakresie. Takie urządzenia nie skorzystają z większości zalet SAS nad SCSI . Te możliwości sprawiają, że SAS jest szczególnie cenny w porównaniu do SATA, pomimo ATAPI.

Jeśli chcesz innej analogii samochodu, fakt, że mogę prowadzić samochód na owalnym torze wyścigowym, nie czyni z niego samochodu wyścigowego.

Zauważyłem, że funkcje SCSI, takie jak NCQ, FUA, DPO itp. (Jeśli nie pamiętam niepoprawnie) zostały przejęte z SCSI. Nie jest jednak jasne, jak „duża” część zestawu poleceń SCSI jest współdzielona lub podobna.

Przeważnie jest to mimikra niskiej klasy. Na przykład NCQ to nie to samo, co TCQ . Dostaniesz dysk twardy z TCQ tylko wtedy, gdy jest to urządzenie SAS. Podłącz dysk SATA z obsługą NCQ do kontrolera SAS i nie uzyska on nagle możliwości TCQ.

To powiedziawszy, nowoczesne urządzenie SATA może być znacznie bardziej wydajne niż urządzenie SCSI sprzed dekady. Z pewnością będzie w stanie obsługiwać znacznie wyższe poziomy I / O.

Wszystko to jest mylące i nakładające się, ponieważ taka jest natura świata sprzętu komputerowego. Nie ma wyraźnych granic, ponieważ producenci napędów optycznych - po prostu dla jednej branży - naprawdę nie chcą budować dwóch zupełnie różnych napędów, jednego mówiącego SAS z najwyższą ekspresją, a drugiego mówiącego SATA. Więc idą na kompromis. Lobbują w komitetach, definiując takie standardy, aby stworzyć jeden standard, który pozwoli im upuścić dysk SATA na magistrali SAS i wszyscy są w większości zadowoleni.

Gdzie mogę znaleźć pewne jasne informacje na ten temat, a zwłaszcza ich związek z jądrem Linuksa?

Ostatecznie chcesz przeczytać źródła Linuksa . Przewodnik libATAprogramisty również powinien być pomocny.

Nie znam żadnego łatwego podsumowania tego, jak to wszystko działa. To nie było łatwe. Został zaprojektowany, aby uwzględnić trzy dekady ewolucji sprzętu, konkurujących standardów i różnych celów. Co więcej, został zaprojektowany bez magicznych poziomów przewidywania. Krótko mówiąc, to jest bałagan. Jedynymi osobami, które naprawdę muszą wiedzieć, jak działa ten bałagan, są ci, którzy budują jądra systemu operacyjnego, projektują sprzęt i, w mniejszym stopniu, piszą sterowniki dla jąder systemu operacyjnego. Dla tak małej kadry wysoce zdolnych ludzi wystarczą standardy i działający kodeks.

Dzisiaj Linux nazywa większość urządzeń pamięci masowej wielokrotnego zapisu /dev/sd?. „SD” kiedyś oznaczało „dysk SCSI” i istniało jedynie po to, aby odróżnić się od /dev/hd?ogólnego znaczenia „dysku twardego”, ale w większości przypadków oznaczało PATA. To rozróżnienie jest kolejną praktyczną nieistotnością dzisiaj. Teraz mamy dyski SSD, napędy USB, wirtualne dyski twarde , urządzenia iSCSI i wiele innych /dev/sd?. Sugeruję, abyś zaczął myśleć o „SD” jako o „urządzeniu pamięci”, zamiast martwić się, czy urządzenie mówi ATA przez SATA, ATA przez Ethernet , SCSI przez USB , SCSI przez ATAPI, SCSI przez SAS, SCSI przez IP (iSCSI ) lub co masz.

Podstawowym problemem jest to, że schematy nazewnictwa często przewyższają przyczynę tego schematu. Widzisz to w /dev/scd0. Obecnie urządzenie podłączone do tego /devwęzła jest bardziej napędem DVD lub Blu-Ray niż napędem Compact Disc.

Alternatywa - w której nazywasz każdy /devwęzeł według dokładnego typu podłączonego do niego urządzenia - ma swoje własne problemy. Czy naprawdę byłoby lepiej, gdybyśmy nazwali /devwęzeł na podstawie protokołu niskiego poziomu, którego używał? /dev/atapi0, /dev/sas0Itp? A może wolisz /dev/atapibluray0i takie? Co z dyskami multimedialnymi? Czy ten sam sterownik musi również zostać ujawniony /dev/atapicd0na wypadek, gdyby włożyć dysk CD do napędu Blu-Ray? To tylko zastępuje jeden mylący schemat innym.

/dev/sd?Abstrakcja Linuksa nie jest doskonała, ale jest przydatna. Na przykład możesz dowiedzieć się, że /dev/sdanajprawdopodobniej jest to dysk rozruchowy, nie martwiąc się o to, jakie okablowanie, protokół interfejsu i nośnik kryją się za tą nazwą. Jeśli wam powiem, że dany box Linux ma pojedynczy dysk systemowy, napęd optyczny, a czasami ma dysku USB podłączonego do niego, można pewnie domyślić, że są one nazywane /dev/sda, /dev/sdbi /dev/sdc, odpowiednio.


Przypisy :

  1. SCSI i ATA nie zaczęły dzielić nadrzędnej organizacji normalizacyjnej. Obaj zaczynali jako zastrzeżone kontrolery dysków twardych. SCSI ewoluowała od Shugart Associates ' SASI i ATA / IDE wyszedł znacznie późniejszym współpracy projektowej pomiędzy Western Digital, Compaq i CDC.

    ANSI później znormalizowała oba, z ATA-1 po SCSI-1 około 8 lat później.

    INCITS jest rodzajem siostrzanej organizacji ANSI . INCITS publikuje ostateczne standardy za pośrednictwem ANSI w USA oraz ISO / IEC JTC 1 na całym świecie.

  2. Obecny standard to SAT-3 , opublikowany w maju 2015 r., Z SAT-4 i SAT-5 w toku, gdy piszę to w połowie lipca 2018 r. Ten ostatni link prowadzi do szkiców wersji w toku.

  3. Ignoruję mnożniki portów SATA , ekspandery SAS itp.

  4. Z wyjątkiem modeli wykonanych w celu zapewnienia zgodności ze starymi równoległymi systemami SCSI.

Warren Young
źródło
nadal nie jest dla mnie jasne, czy niektóre funkcje / zestawy poleceń są identyczne w ATA i SCSI i jak duży jest ten związek, jeśli w ogóle istnieje. Zgadzam się, że odczytanie kodu źródłowego Linuksa dałoby kilka odpowiedzi, ale prawdopodobnie odpowiada on odczytowi samej specyfikacji ATA. Źródło Linuksa prawdopodobnie również nie dałoby bardzo jasnego obrazu na temat tego, ile jest współużytkowane i jak jest dzielone między ATA i SCSI. Zastosowane konwencje nazewnictwa byłyby jednak prawdopodobnie bardziej pouczające, czytając źródło Linuksa.
AttributeTensorField
@AttributTensorField: Zobacz najnowsze zmiany.
Warren Young,
1
Wow, świetna odpowiedź. Jeszcze jedna rzecz; / dev / atapi0, / dev / sas0 itp .; czy to nie jest właściwie to, co robią BSD (przynajmniej FreeBSD)? Jak również Solaris IIRC. W Linuksie jest zwykle / dev / disk / by-path, który jest nieco podobny.
CVn
@ MichaelKjörling: Jasne. Komentarz nie polega na tym, że te inne sposoby patrzenia na rzeczy są złe, ale na tym, że zmiana schematu nazewnictwa w celu lepszego dopasowania do tego, co dzieje się poniżej, nie powoduje zniknięcia problemu. Doceniam /dev/sd?abstrakcję Linuksa .
Warren Young,
1
Zauważ, że większość dystrybucji obecnie pokazuje dyski optyczne jako / dev / srN, gdzie N jest liczbą.
Perkins,