web-dev-qa-db-ja.com

SATAを使用してコンピューターを接続できますか?

クロスオーバーイーサネットケーブルと同じように、SATAを使用して2台のコンピューターを接続できますか?

SATAには「ネットワーク」機能がなく、コントローラーに複数のポートがある場合でも、ドライブは相互に「認識」しません。SATAでは、一方のデバイスがホスト(コンピューター)として機能し、もう一方のデバイスは一部です。一種の「クライアント」(ストレージドライブ)。

しかし、それでも、1台のコンピューターを「クライアント」として表示するカーネルモジュールを作成して(ホストのSATAコントローラーがそれを標準のハードドライブとして検出するように)、疑似イーサネットリンクまたは非常に高速シリアルリンク(そして、その上でpppdを実行し、ネットワーキングを行います)?

注:これは専門家ではなく、まったく愚かな考えだと思います。好奇心から質問しているだけです。

9
user256743

SATAの仕様を簡単に見て、SATAはディスクデバイスと通信するだけでなく、ドライブエンクロージャーとも通信できるので、最初は期待していました。

ただし、主にホスト/デバイストポロジであるため、SATAを使用して2台のコンピューターを接続することはできないようです。これは、ホストが特別な「Host-to-device」コマンドを送信し、デバイスがさまざまな「device-to-Host」コマンドを送り返すことを意味します。

パケットの交換に使用できる一般的な双方向の「データ」コマンドがありますが、これらの前に正しい「ホストからデバイス」の要求と適切な「デバイスからホスト」の応答を付ける必要があると思います。 PCは(ホストであるため)「デバイスからホストへ」のメッセージを送信できないと推測していますが、これは必要なことですが、この点で間違っている可能性があります。 PCがdevice-to-Hostコマンドを送信できる場合は、はい、SATA経由でHost-to-Hostリンクを確立できます。

ただし、これができたとしても、カスタムケーブルが必要になることは間違いありません。標準のSATAケーブルを使用すると、両方のPCが同じワイヤペアで送信し、両方が同じワイヤペアで受信することになります(誰も送信していないため、データを受信することはありません!)TXラインとRXラインを交換するイーサネットクロスオーバーケーブルに相当するSATAをハックする必要があります。

この問題はUSBの問題とよく似ていると思います。 2台のコンピューターは両方とも通信するデバイスがないホストであるため、裸のUSBケーブルで2台のコンピューターを接続することはできません。ただし、両方のホストからデータを受信して​​渡すUSBデバイスがあり、各ホストのUSBコントローラーはデバイスと通信していると見なし(技術的にはそうです)、USBを介したホスト間の通信を可能にします。

両方のホストコントローラーが接続するデバイスがあり、それぞれがデバイスと通信していると見なすSATAについても同じことが可能です。 SATAデバイスをネットワークデバイスとして表示するには、カスタムドライバーが必要ですが、機能します。

ただし、SATAの最大ケーブル長は1メートルであるため、これは非常に短距離の接続にのみ役立ちます。したがって、特別なSATAトランスレータデバイスを中央に配置すると、2つのSATAポートの距離が2メートル未満になる必要があります(マザーボードまたは拡張カードからケースの外側までの距離を含む)。

3
Malvineous

いいえ、それはストレージプロトコルなので。 しかしPATAはできます (一種の)。そして PCI Express缶

4
Mark Henderson

私の知る限り、これは行われていません。それが可能かどうかは言えませんが、そのような目標を達成するには、多大な労力とコードが必要になると言えます。

SATAのホストクライアントのセットアップはストレージ専用であり、ネットワーク用ではありません。だから、あなたはどちらかをする必要があります

  1. ネットワークドライバを自分で作成する
  2. 新しいインターフェイスの既存のドライバーをラップする方法を見つけます。または
  3. 従来のネットワークを放棄し、代わりにクライアントのストレージをミラーリングするドライバーを作成して、ホストがそれを認識できるようにします。

理論的には実行可能だと思いますが、3つの方法すべてに大きな落とし穴があります。最終的な結果は、想像しているほど速くはないでしょう。でもそれは楽しいアイデアです。

1
HalosGhost