SATAはどのような意味でSCSIと「対話」しますか?SCSIとATAの間でどれくらいの量が共有されますか?


27

これは少なくとも私にとって新しいことではありません。SATAは実際にSCSIと「通信」するため、これらのSATAデバイスがLinuxでSCSIデバイスとして表示されるのはなぜですか。

関連する質問が以前に尋ねられました。たとえば、/ proc / scsi / scsiの下にSATAデバイスが表示されるのはなぜですか?

ただし、これまでに説明したところで言及しなかったのは、SATAがSCSIとどのような意味で、どのように異なるかということです。

互換性のあるケーブルを共有していないため、物理層で異なることは当然と考えられます。

しかし、スタックの上位はどうでしょうか?Linuxは、SATAおよびSCSIサブシステムへの単なるSCSIとしての最新のカーネル上のIDEディスクを表すことを認識しています。しかし、バスで使用される実際のプロトコルはどうでしょうか?

ATAPIはSCSIのカプセル化であることも知っていますが、通常のATAはどうですか?NCQ、FUA、DPOなどのSCSIの機能(間違って覚えていない場合)がSCSIから採用されていることに気付きました。しかし、実際にどのくらいのSCSIコマンドセットが共有されているか、類似しているのかは不明です。

ATA仕様の最新のSATAデバイスは、SCSIコマンドセットのサブセットを実装していますが、カプセル化されています(ATAPIのように)。同じセット?スーパーセット?または、選択された機能のみが直接同一ではないバリアントとして実装されているのでしょうか?

これに関する明確な情報、特にLinuxカーネルとの関係はどこで見つけることができますか?ドライバー開発のためのある種のチュートリアルはいいでしょうが、すべての詳細を完全にスキップしない概要だけでも十分でしょう。私は実際の仕様を読むことができることを知っていますが、それもまた非常に詳細であり、あなたが本当に探しているものを見つけるのは難しく、私やおそらく一時的な意味で他のほとんどのユーザーにとっては現実的ではありません。

回答:


42

SCSIとATAはまったく異なる標準です。現在、これらは両方ともINCITS標準化団体の支援の下で、異なるグループによって開発されています。SCSIは技術委員会T10の下にあり、ATAはT13の下にあります。1

ATAは、ハードディスクドライブのみを考慮して設計されました。SCSIはより広範かつ古く、大容量記憶装置、テープドライブ、リムーバブル光学メディアドライブ(CD、DVD、Blu-Ray ...)、スキャナー、およびその他の多くのデバイスタイプを制御する標準的な方法です。

IDEがPCの世界に導入された1980年代半ばには、SCSIがコンピューティングの世界の端に押し出されることは明らかではありませんでした。SCSIは十分に確立されており、より能力がありました。UnixワークステーションMacintoshコンピューターには、SCSIハードディスクドライブが何十年も出荷されていました。ハイエンドPCには、少なくとも周辺機器用のSCSIカードが搭載されていることが多く、システムHDDにも搭載されていることがよくあります。初期のパーソナルコンピュータ用のCD-ROMおよびテープドライブは、最初にSCSI形式で登場しました。

しかし、PC業界はその通りであるため、SCSIの代わりに安価なATA標準を使用するよう求められました。最初の妥協案はATAPIと呼ばれ、ATAの拡張機能であり、SCSIを内部的に理解しているデバイスがATAインターフェイスを介してこれらのSCSIコマンドを受信できるようにします。詳細については、以下をご覧ください。

数年後、SCSIは、基本的にATAPIの逆であるATAコマンドパススルー機能を取得し、SCSIバスを介したATAコマンドを許可しました。この機能の用途の1つは、SCSIを介してATA SMARTコマンドをトンネリングすることです。たとえば、smartmontoolsこれを行います。

その後、INCITS T10委員会はSCSIコマンドをATAコマンドに、またはその逆に変換するSCSI / ATA変換(SAT)と呼ばれる標準を開発しました。2のLinuxカーネルのlibataライブラリが間、Linux用の土の実装を提供し、他のもの

SCSIとATAプロトコルは両方ともハードディスクドライブを制御するため、これらのプロトコルには論理的なオーバーラップがあります。どちらも明らかに特定のハードドライブセクターを検索する方法、そのセクターのコンテンツを取得する方法などを必要とします。それにもかかわらず、コマンド形式はまったく異なります。そうでなければ、これらの変換およびパススルーメカニズムは必要ありません。

SATAは実際にSCSIと「対話」します

これは、「車はピンクです」という主張とほぼ同じです。一部の車はピンクです。

ATAPI、ATAパススルー、およびSATは、ストーリーの一部にすぎません。読む。

互換性のあるケーブルを共有していないため、物理層で異なることは当然と考えられます。

古いパラレルSCSIの世界ではそうでしたが、SATAがPATAに取って代わり、SASがパラレルSCSIに取って代わりました。

SASとSATAは同じドライブコネクタを共有し、電気的に互換性があります。SASコントローラーはSASおよびSATAデバイスと通信できますが、SASドライブはSATA専用コントローラーでは機能しません。違いはネゴシエーションにあり、ケーブルの両端のデバイスが何と通信しているかを把握した後に使用できるコマンドにあります。

実際、多くの「SATA RAID」コントローラーは実際にはSAS RAIDコントローラーです。このようなコントローラには、多くの場合、カードに1つ以上のSFF-8087 SAS嵌合コネクタがありますが、SFF-8087から4x SATAブレイクアウトケーブルを使用してSATAドライブを接続できます。したがって、2つのSFF-8087嵌合コネクタを備えたSAS / SATA RAIDカードは、最大8台のドライブを制御します。3

別の一般的な状況は、ホットスワップドライブエンクロージャまたはSAS バックプレーンを備えたコンピューターケースです。通常、バックプレーンにはSFF-8087コネクタがあり、バックプレーンからディスクコントローラーへの単純な8087-to-8087ケーブルを使用できます。ホットスワップトレイのドライブがSATAである場合、それは問題ではありません。SASコントローラは、SASバックプレーンにドライブを接続するドライブスレッドに座っているため、SASケーブルを介して通信できます。ただし、SCSIプロトコルではなく、ATAプロトコルについて言えば、ドライブはまだSATAドライブです。

ATAPIはSCSIのカプセル化であることも知っています

確かに、しかし、ATAPIはデバイスだけのために使用されている他のハードディスクドライブより。この標準が存在する主な理由は、ATAインターフェイスがテープドライブのストリーミングデータコマンド、光ディスクドライブの「メディアの取り出し」コマンド、CDオーディオディスクの「トラックの再生」コマンドなどのSCSIコマンドを転送できるようにするためです。 。

ATAPIを介してSCSIを使用していた非HDDデバイスが消えるか、他のインターフェイスに移行するにつれて、この事実は重要性を失います。ローエンドのテープドライブはもはや存在しないため、テープドライブはすべてSASになりました。4最近のスキャナーは、ほとんどUSB専用です。光学式メディアドライブは、USB経由で接続するためにコンピューターケースの外に移動するか、完全に消えて、ATAPIを話すますます希少な内部光学式ドライブを残しています。

いずれにしても、SCSI over ATAPIを理解するSATAデバイスは、限られた方法でのみ「SCSIデバイス」です。そのようなデバイスは、SCSIを介したSAS利点のほとんどから恩恵を受けません。これらの機能により、SASはSATA、ATAPIに比べて明らかに価値があります。

別の車のアナロジーが必要な場合、楕円形のレーストラックで自分の車を走らせることができるという事実は、レースカーにはなりません。

NCQ、FUA、DPOなどのSCSIの機能(間違って覚えていない場合)がSCSIから採用されていることに気付きました。しかし、実際にどのくらいのSCSIコマンドセットが共有されているか、類似しているのかは不明です。

ほとんどこれはローエンドの模倣になります。たとえば、NCQはTCQと同じものではありません。SASデバイスの場合、TCQを備えたハードドライブのみを取得できます。NCQ対応のSATAドライブをSASコントローラーに接続すると、突然TCQ機能が得られません。

とはいえ、最近のSATAデバイスは10年前のSCSIデバイスよりもはるかに優れた機能を備えている可能性があります。確かに、はるかに高いレベルのI / Oが可能になるでしょう。

これはすべて、PCハードウェアの世界の性質であるため、混乱を招き、重複しています。オプティカルドライブメーカーは、1つのサブ業界を選択するだけで、完全に異なる2つのドライブを構築したくないため、明確なラインはありません。だから、彼らは妥協します。彼らは、そのような標準を定義する委員会に働きかけて、SATAドライブをSASバスにドロップできる単一の標準を作成しました。

これに関する明確な情報、特にLinuxカーネルとの関係はどこで見つけることができますか?

最終的には、Linuxソース読みたいと思いますlibATA開発者ガイドも参考にする必要があります。

これがどのように機能するかについての簡単な要約は知りません。簡単に設計されていません。30年にわたるハードウェアの進化、競合する標準、異なる目標に対応するように設計されました。さらに、魔法のようなレベルの先見性なしに設計されました。要するに、それは混乱です。混乱の仕組みを本当に知っている必要があるのは、OSカーネルを構築している人、ハードウェアを設計している人、そしてそれほどではないがOSカーネルのドライバを書いている人だけです。そのような非常に有能な人々の小さな幹部にとっては、標準と作業コードで十分です。

今日、Linuxはほとんどの書き換え可能な大容量記憶装置を呼び出しています/dev/sd?。「SD」はかつて「SCSIディスク」の略で、単に/dev/hd?「ハードディスク」という一般的な意味と区別するために存在していましたが、ほとんどの場合PATAを意味します。この区別は、今日のもう1つの実用的な無関係です。現在、SSD、USBサムドライブ、仮想ハードドライブiSCSIデバイスなど、すべてが呼び出されてい/dev/sd?ます。デバイスが「ATA over SATA」、「ATA over Ethernet」、「SCSI over USB」、「SCSI over ATAPI」、「SCSI over SAS」、「SCSI over IP(iSCSI )、またはあなたは何を持っています。

中心的な問題は、多くの場合、命名スキームがスキームの背後にある理由より長引くことです。これはにあり/dev/scd0ます。その/devノードに接続されているデバイスは、最近ではコンパクトディスクドライブよりもDVDまたはブルーレイドライブである可能性が高くなります。

別の方法(/devノードに接続されている正確なデバイスタイプに基づいて各ノードに名前を付ける)には、独自の問題があります。/dev使用した低レベルプロトコルに基づいてノードに名前を付けると本当に良いでしょうか?/dev/atapi0/dev/sas0など?それとも、あなたはそれを好む/dev/atapibluray0でしょうか?マルチメディアドライブはどうですか?/dev/atapicd0コンパクトディスクをBlu-Rayドライブにスライドさせる場合、同じドライバーも公開する必要がありますか?これは、混乱を招くスキームを別のものに置き換えるだけです。

Linuxの/dev/sd?抽象化は完璧ではありませんが、便利です。たとえば、/dev/sdaその名前の背後にあるケーブル、インターフェイスプロトコル、およびメディアを気にすることなく、ほとんどの場合ブートドライブであるという事実を知ることができます。特定のLinuxボックスに単一のシステムドライブ、オプティカルドライブがあり、USBサムドライブが接続されている場合があることを伝えると、それぞれ/dev/sda/dev/sdbおよびが呼び出されていると自信を持って推測でき/dev/sdcます。


脚注

  1. SCSIとATAは、親標準組織の共有を開始しませんでした。どちらも独自のハードディスクコントローラーとしてスタートしました。SCSIはShugart AssociatesSASIから発展し、ATA / IDEは、Western Digital、Compaq、およびCDCの間の設計コラボレーションから生まれました。

    ANSIは後に両方を標準化し、約1年後にATA-1をSCSI-1に準拠させました。

    INCITSはANSIの一種の姉妹組織です。INCITSは、米国のANSIおよび世界中のISO / IEC JTC 1を通じて最終標準を公開しています。

  2. 現在の標準であるSAT-3 SAT-4で、2015年5月に発表された、とSAT-5 進行中で、私は七月中旬2018でこれを書いている後者のリンクは、進行中のバージョンのドラフトが表示されます。

  3. SATAポートマルチプライヤSASエクスパンダなどを無視しています

  4. 古いパラレルSCSIシステムとの互換性のために作られたモデルを除きます。


一部の機能/コマンドセットがATAとSCSIで同一であるかどうか、およびこのユニオンが存在する場合の大きさは、まだはっきりしていません。Linuxのソースコードを読むことでいくつかの答えが得られることに同意しますが、おそらくATA仕様自体を読むことと同等です。Linuxのソースでは、ATAとSCSIの間でどれだけ共有されているか、またどのように共有されているかについての明確な見解もおそらく得られないでしょう。ただし、使用されている命名規則は、おそらくLinuxソースを読むことでより明確になります。
AttributedTensorField 14

@AttributedTensorField:最新の編集を参照してください。
ウォーレンヤング

1
うわー、素晴らしい答え。たった一つ; / dev / atapi0、/ dev / sas0など。BSD(少なくともFreeBSD)がやっていることではないでしょうか?Solaris IIRCと同様。また、Linuxでは通常、/ dev / disk / by-pathがあり、これは多少似ています。
CVn

@MichaelKjörling:もちろん。コメントのポイントは、これらの他の物事の見方が間違っているということではなく、下にあるものとよりよく一致するように命名スキームを変更しても、根本的な問題がなくなるわけではないということです。Linuxの/dev/sd?抽象化に感謝します。
ウォーレンヤング14

1
最近のほとんどのディストリビューションでは、光学ドライブが/ dev / srN(Nは数字)として公開されていることに注意してください。
パーキンス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.