Dalam arti apa SATA "berbicara" SCSI? Berapa banyak dibagi antara SCSI dan ATA?

27

Setidaknya ini bukan hal baru bagi saya, bahwa SATA sebenarnya "berbicara" SCSI, karenanya mengapa perangkat SATA ini muncul sebagai perangkat SCSI di Linux.

Pertanyaan terkait telah diajukan sebelumnya, misalnya Mengapa perangkat SATA saya muncul di bawah / proc / scsi / scsi?

Namun apa yang gagal disebutkan di mana saya telah melihat ini dibahas sebelumnya adalah persis dalam arti apa SATA berhubungan dengan SCSI, dan bagaimana mereka berbeda.

Saya berasumsi bahwa mereka berbeda pada lapisan fisik, karena mereka tidak berbagi kabel yang kompatibel.

Namun bagaimana dengan yang lebih tinggi di stack? Saya sadar bagaimana Linux mewakili disk SATA dan bahkan IDE pada kernel modern hanya sebagai SCSI ke subsistem SCSI. Tetapi bagaimana dengan protokol aktual yang digunakan di bus?

Saya juga tahu bahwa ATAPI adalah enkapsulasi untuk SCSI, tetapi bagaimana dengan ATA biasa? Saya perhatikan bahwa fitur dari SCSI seperti NCQ, FUA, DPO, dll (jika saya tidak salah ingat) telah diadopsi dari SCSI. Tetapi tidak jelas berapa "banyak" dari set perintah SCSI sebenarnya dibagikan atau serupa.

Apakah perangkat SATA modern dengan spesifikasi ATA mereka mengimplementasikan subset dari set perintah SCSI, tetapi dienkapsulasi (seperti pada ATAPI)? Set yang identik? Superset? Atau mungkin hanya fitur yang dipilih yang diimplementasikan sebagai varian yang tidak secara langsung identik?

Di mana saya dapat menemukan beberapa informasi yang jelas tentang ini, dan terutama bagaimana hubungannya dengan kernel Linux? Beberapa jenis tutorial untuk pengembangan driver akan menyenangkan, tetapi bahkan hanya gambaran umum yang tidak sepenuhnya melewatkan semua detail sudah cukup. Saya sadar saya hanya bisa membaca spesifikasi yang sebenarnya, tetapi itu sekali lagi terlalu rinci, sulit untuk menemukan apa yang sebenarnya Anda cari, dan tidak realistis bagi saya dan mungkin sebagian besar pengguna lain dalam pengertian temporal.

AttributedTensorField
sumber

Jawaban:

42

SCSI dan ATA adalah standar yang sama sekali berbeda. Keduanya saat ini dikembangkan di bawah naungan organisasi standar INCIT tetapi oleh kelompok yang berbeda. SCSI berada di bawah komite teknis T10 , sementara ATA di bawah T13 . 1

ATA dirancang dengan mempertimbangkan hard disk drive. SCSI lebih luas dan lebih tua, menjadi cara standar untuk mengendalikan perangkat penyimpanan massal, tape drive, drive media optik yang dapat dilepas (CD, DVD, Blu-Ray ...), pemindai, dan banyak jenis perangkat lainnya .

Itu tidak jelas pada pertengahan 1980-an - ketika IDE diperkenalkan ke dunia PC - bahwa SCSI akan terdorong ke batas dunia komputasi. SCSI mapan dan lebih mampu. Unix workstation dan komputer Macintosh dikirimkan bersama hard disk SCSI selama beberapa dekade. PC kelas atas sering memiliki kartu SCSI untuk periferal setidaknya, dan sering juga untuk HDD sistem. CD-ROM dan tape drive awal untuk komputer pribadi keluar dalam bentuk SCSI terlebih dahulu.

Namun, industri PC menjadi seperti itu, ada dorongan untuk menggunakan standar ATA yang lebih murah daripada SCSI. Kompromi awal disebut ATAPI , ekstensi ke ATA yang memungkinkan perangkat yang memahami SCSI secara internal untuk menerima perintah-perintah SCSI melalui antarmuka ATA. Lebih lanjut tentang ini di bawah ini.

Beberapa tahun kemudian, SCSI mendapat fitur pass-through perintah ATA , pada dasarnya kebalikan dari ATAPI, memungkinkan perintah ATA melalui bus SCSI. Satu kegunaan untuk fasilitas ini adalah untuk tunnel perintah ATA SMART melalui SCSI. smartmontoolslakukan ini , misalnya.

Kemudian, komite INCITS T10 mengembangkan standar yang disebut Terjemahan SCSI / ATA (SAT), yang menerjemahkan perintah SCSI ke perintah ATA dan sebaliknya. 2 libataPustaka kernel Linux menyediakan implementasi SAT untuk Linux, antara lain .

Ada beberapa tumpang tindih logis dalam protokol SCSI dan ATA, karena keduanya mengontrol hard disk drive. Keduanya jelas membutuhkan cara untuk mencari ke sektor hard drive tertentu, mengambil konten sektor itu, dll. Namun demikian, format perintahnya sama sekali berbeda; jika tidak, kita tidak akan membutuhkan mekanisme penerjemahan dan pass-through ini.

SATA sebenarnya "berbicara" SCSI

Itu hampir sama dengan pernyataan bahwa "Mobil berwarna merah muda." Beberapa mobil berwarna merah muda.

ATAPI, ATA pass-through, dan SAT hanya bagian dari cerita. Baca terus.

Saya berasumsi bahwa mereka berbeda pada lapisan fisik, karena mereka tidak berbagi kabel yang kompatibel.

Itu benar di dunia SCSI paralel lama , tetapi sama seperti SATA menggantikan PATA, SAS menggantikan SCSI paralel.

SAS dan SATA berbagi konektor drive yang sama, dan keduanya kompatibel secara elektrik. Pengontrol SAS dapat berbicara dengan perangkat SAS dan SATA, tetapi drive SAS tidak dapat bekerja dengan pengontrol hanya-SATA. Perbedaannya adalah dalam negosiasi, dan dalam perintah yang dapat Anda gunakan setelah perangkat di setiap ujung kabel mengetahui apa yang mereka bicarakan.

Faktanya, banyak pengontrol "SATA RAID" benar-benar pengontrol SAS RAID. Pengontrol seperti itu sering memiliki satu atau lebih konektor kawin SFF-8087 SAS pada kartu, tetapi Anda dapat menghubungkan drive SATA ke mereka dengan kabel pelarian SFF-8087 hingga 4 × SATA. Jadi, kartu SAS / SATA RAID dengan dua konektor kawin SFF-8087 mengontrol hingga 8 drive. 3

Situasi umum lainnya adalah casing hot-swap drive atau casing komputer dengan SAS backplane . Backplane biasanya memiliki konektor SFF-8087 di atasnya, memungkinkan penggunaan kabel 8087-ke-8087 sederhana dari backplane ke pengontrol disk. Jika drive dalam nampan hot-swap adalah SATA, itu tidak masalah. Pengontrol SAS dapat berbicara dengan mereka melalui pemasangan kabel SAS, karena mereka duduk di sleds drive yang menghubungkan drive ke SAS backplane. Drive masih drive SATA, berbicara protokol ATA, bukan SCSI.

Saya juga tahu bahwa ATAPI adalah enkapsulasi untuk SCSI

Benar, tapi ATAPI hanya digunakan untuk perangkat lain selain hard disk drive. Alasan utama standar ini ada adalah untuk memungkinkan antarmuka ATA untuk mengangkut perintah SCSI seperti perintah data streaming untuk tape drive, perintah "eject media" untuk drive disk optik, atau perintah "play track" untuk disk audio CD .

Fakta ini menjadi kurang relevan karena perangkat non-HDD yang digunakan untuk berbicara SCSI melalui ATAPI menghilang atau beralih ke antarmuka lain. Tape drive low-end tidak ada lagi, jadi tape drive semuanya SAS sekarang. 4 Scanner cukup banyak USB-hanya hari ini. Drive media optik bergerak di luar kasing komputer untuk dihubungkan melalui USB, atau menghilang seluruhnya, hanya menyisakan drive optik internal yang semakin jarang berbicara dengan ATAPI.

Apapun, perangkat SATA yang memahami SCSI melalui ATAPI adalah "perangkat SCSI" hanya secara terbatas. Perangkat semacam itu tidak akan mendapat manfaat dari sebagian besar keunggulan SAS dibandingkan SCSI . Kemampuan ini membuat SAS jelas berharga dibandingkan dengan SATA, walaupun ATAPI.

Jika Anda ingin analogi mobil lain, fakta bahwa saya dapat menjalankan mobil saya di lintasan balap oval tidak menjadikannya mobil balap.

Saya perhatikan bahwa fitur dari SCSI seperti NCQ, FUA, DPO, dll (jika saya tidak salah ingat) telah diadopsi dari SCSI. Tetapi tidak jelas berapa "banyak" dari set perintah SCSI sebenarnya dibagikan atau serupa.

Sebagian besar ini sama dengan mimikri kelas bawah. NCQ tidak sama dengan TCQ , misalnya. Anda hanya akan mendapatkan hard drive dengan TCQ jika itu adalah perangkat SAS. Colokkan drive SATA yang berkemampuan NCQ ke controller SAS, dan itu tidak tiba-tiba mendapatkan kemampuan TCQ.

Yang mengatakan, perangkat SATA modern mungkin jauh lebih mampu daripada perangkat SCSI dari satu dekade lalu. Ini tentu akan mampu tingkat I / O yang jauh lebih tinggi.

Semua ini membingungkan dan tumpang tindih karena itulah sifat dunia perangkat keras PC. Tidak ada garis yang jelas karena produsen drive optik - hanya untuk memilih pada satu sub-industri - benar-benar tidak ingin membangun dua drive yang sama sekali berbeda, satu berbicara SAS dengan ekspresi tertinggi, dan yang lain berbicara SATA. Jadi, mereka berkompromi. Mereka melobi di komite yang mendefinisikan standar seperti itu untuk menciptakan standar tunggal yang memungkinkan mereka menjatuhkan drive SATA mereka pada bus SAS, dan kebanyakan orang senang.

Di mana saya dapat menemukan beberapa informasi yang jelas tentang ini, dan terutama bagaimana hubungannya dengan kernel Linux?

Pada akhirnya, Anda ingin membaca sumber-sumber Linux . Panduan libATAPengembang juga harus membantu.

Saya tidak mengetahui ringkasan mudah tentang bagaimana semua ini bekerja. Itu tidak dirancang agar mudah. Itu dirancang untuk mengakomodasi tiga dekade evolusi perangkat keras, standar yang bersaing, dan tujuan yang berbeda. Lebih lanjut, itu dirancang tanpa tingkat pandangan ke depan magis. Singkatnya, ini berantakan. Satu-satunya orang yang benar-benar harus tahu cara kerja kekacauan adalah mereka yang membangun kernel OS, mereka yang merancang perangkat keras, dan pada tingkat lebih rendah, mereka yang menulis driver untuk kernel OS. Untuk kader kecil yang terdiri atas orang-orang berkemampuan tinggi, standar dan kode kerja sudah cukup.

Saat ini, Linux menyebut sebagian besar perangkat penyimpanan massal yang dapat ditulis ulang /dev/sd?. "SD" pernah berdiri untuk "disk SCSI," dan ada hanya untuk membedakan dari yang /dev/hd?secara umum berarti "Hard Disk," tetapi menyiratkan PATA dalam banyak kasus. Perbedaan ini adalah ketidakrelevanan praktis lainnya saat ini. Sekarang kami memiliki SSD, USB thumb drive, hard drive virtual , perangkat iSCSI dan banyak lagi yang disebut /dev/sd?. Saya sarankan Anda mulai menganggap "SD" sebagai kependekan dari "perangkat penyimpanan," daripada mengkhawatirkan apakah perangkat berbicara ATA melalui SATA, ATA melalui Ethernet , SCSI melalui USB , SCSI melalui ATAPI, SCSI melalui SAS, SCSI melalui IP (iSCSI ), atau apa yang Anda miliki.

Masalah intinya adalah bahwa skema penamaan sering kali lebih lama dari alasan di balik skema tersebut. Anda lihat dalam ini /dev/scd0. Perangkat yang terhubung ke /devsimpul itu lebih cenderung berupa drive DVD atau Blu-Ray daripada drive Compact Disc saat ini.

Alternatif - tempat Anda memberi nama setiap /devnode setelah jenis perangkat yang terhubung - memiliki masalah sendiri. Apakah ini benar-benar lebih baik jika kita menamai /devnode tersebut setelah protokol tingkat rendah yang digunakannya? /dev/atapi0,, /dev/sas0dll? Atau mungkin Anda lebih suka /dev/atapibluray0dan semacamnya? Bagaimana dengan drive multi-media? Apakah driver yang sama juga perlu diekspos /dev/atapicd0jika Anda memasukkan Compact Disc ke drive Blu-Ray? Itu hanya menggantikan satu skema yang membingungkan dengan yang lain.

/dev/sd?Abstraksi Linux tidak sempurna, tetapi bermanfaat. Misalnya, Anda dapat mempelajari fakta bahwa /dev/sdakemungkinan besar boot drive tanpa perlu khawatir tentang kabel, protokol antarmuka, dan media apa yang ada di balik nama itu. Jika saya memberi tahu Anda bahwa kotak Linux tertentu memiliki drive sistem tunggal, drive optik, dan kadang-kadang USB thumb drive dicolokkan ke dalamnya, Anda dapat dengan yakin menebak bahwa mereka dipanggil /dev/sda, /dev/sdbdan /dev/sdc, masing-masing.


Catatan kaki :

  1. SCSI dan ATA tidak memulai berbagi organisasi standar induk. Keduanya dimulai sebagai pengontrol hard disk yang dipatenkan. SCSI berevolusi dari Shugart Associates ' SASI , dan ATA / IDE keluar dari kolaborasi desain yang jauh lebih baru antara Western Digital, Compaq dan CDC.

    ANSI kemudian membuat standar keduanya, dengan ATA-1 mengikuti SCSI-1 sekitar 8 tahun kemudian.

    INCIT adalah sejenis organisasi saudara untuk ANSI . INCIT menerbitkan standar akhir melalui ANSI di AS, dan ISO / IEC JTC 1 di seluruh dunia.

  2. Standar saat ini adalah SAT-3 , diterbitkan pada Mei 2015, dengan SAT-4 dan SAT-5 sedang berlangsung saat saya menulis ini pada pertengahan Juli 2018. Tautan terakhir membawa Anda ke konsep versi dalam proses.

  3. Saya mengabaikan pengganda port SATA , ekspander SAS , dll.

  4. Kecuali model yang dibuat untuk kompatibilitas dengan sistem SCSI paralel lama.

Warren Young
sumber
masih belum jelas bagi saya jika beberapa set fitur / perintah identik dalam ATA dan SCSI, dan seberapa besar serikat ini jika ada sama sekali. Saya setuju bahwa membaca kode sumber Linux akan memberikan beberapa jawaban, tetapi mungkin setara dengan membaca spesifikasi ATA itu sendiri. Sumber Linux mungkin juga tidak akan memberikan pandangan yang sangat jelas tentang berapa banyak dibagi dan bagaimana dibagi antara ATA dan SCSI. Konvensi penamaan yang digunakan mungkin akan lebih tercerahkan dengan membaca sumber Linux.
AttributedTensorField
@AttributedTensorField: Lihat hasil edit terbaru.
Warren Young
1
Wow, jawaban yang bagus. Hanya satu hal; / dev / atapi0, / dev / sas0 dll; bukankah itu cukup seperti apa yang dilakukan oleh BSD (setidaknya FreeBSD)? Serta Solaris IIRC. Dan di Linux biasanya ada / dev / disk / by-path yang agak mirip.
CVn
@ MichaelKjörling: Tentu. Maksud dari komentar ini bukanlah bahwa cara-cara lain dalam memandang hal-hal ini salah, tetapi mengubah skema penamaan agar lebih sesuai dengan apa yang terjadi di bawahnya tidak membuat masalah yang mendasarinya hilang. Saya sangat menghargai /dev/sd?abstraksi Linux .
Warren Young
1
Perhatikan bahwa sebagian besar distro hari ini mengekspos drive optik sebagai / dev / srN di mana N adalah angka.
Perkins