Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Is it possible to build a passive many hosts to a single disk SATA splitter?

+1
−1

I don't find any of such cables, and the discussions on the web revolve around SATA being point-to-point and not designed for networked or shared storage.

However, if one'd build a cable that is just a passive Y cable where only one computer accesses a disk at a time, then is there a technical reason that prohibits such cable from working?

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

1 answer

+1
−0

is there a technical reason that prohibits such cable from working?

Two reasons:

  1. Signal integrity
  2. Data integrity

Signal integrity is reason #1. Basically, cables are not "transparent" to the signals they carry. When the signals are sufficiently fast - as is the case with SATA - the cables are passive electrical circuits that can degrade the signals.

only one computer accesses a disk at a time

The only way to achieve that is to turn the other computers off or physically disconnect them from the drive. That's because SATA is an interface that is constantly active, whether there is a disk access underway or not. Both ends of the SATA connection behave as if they had this connection to themselves, as they are meant to.

When two computers would be attached to a single drive using a passive cable "Y", the SATA link negotiation will fail, since both computers will be stepping on each other's toes, and transmit over each other, resulting in a mess.

What would be possible is a "low-brow" active SATA splitter that makes a single disk appear as two disks. Each PC would see a dedicated drive, but the "splitter" would be emulating a drive with the same parameters as the drive behind it, and writing/reading from the drive as needed to fill/drain the cache in the splitter.


Data integrity is the reason #2, and is just as important. Even if somehow the signal integrity was not a problem - say, by using an active "splitter" device, the data would become corrupted. That's because the computers that would "share" a single drive are always unaware of what the other computers have written to the disk in meantime.

Because SATA is a point-to-point protocol, it has no provisions for signaling the host that disk data has changed. There's no reason for it, since normally that single host initiates the writes, and the drive doesn't magically change the data that's on it. That would be pretty bad.

But, with any sort of a splitter, when one host writes something to the drive, the other host has no idea about until it happens to read the same disk area the other host wrote to. There is no mechanism in SATA to synchronize such accesses. The bus itself could support them, but nobody bothered defining the packets that would need to be sent over the bus to make this work.


But all of this is just complicating a simple problem with a simple solution. Put the drive into an iSATA "enclosure", and then it can be accessed by multiple hosts at the same time. iSATA is a way of sending SATA commands over IP networks (i.e. internet running typically over Ethernet).

The disk can be partitioned so that each client only sees its own partition, so no data corruption results from client stepping on each other's toes. And if data is to be shared for read-only access, then the iSATA "box" can expose the disk as-if it was read-protected. That way any number of clients can be reading the disk in parallel, with no data corruption. But each of those clients has an individual connection to the iSATA server/box/enclosure, and that box then maintains a single connection to the drive. The drive is always accessed by just one client directly (the "box"), and that client forwards the requests from remote clients to the drive.

iSATA works well across 10gbit and faster Ethernet, and the protocol works across the internet, so you could be accessing very remote disks indeed if you wanted to. Even within a single building, iSATA connections can be hundreds or thousands of meters long - they are just Ethernet, after all. The connections can run on twisted copper, fiber optic, even radio links. The SATA bus can't do any of that. It is a very short-haul point-to-point bus.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

Stubs (1 comment)

Sign up to answer this question »