Complete rewrite
Basic assumptions
- USB2 throughput is limited to about 30-40MB/sec.
- Any 3TB harddisk is faster then that.
- you actually have two separate USB controllers.
1) Is a known fact. There is some variation based on drivers, USB-to-SATA chips in the external cases etc. But unless you have an exceptionally poor setup you will get about 35MB/sec per USB bus.
2) Harddisk speed varies per model. Put a 3TB model is a modern drive and I expect its slower sequential throughput to be at least 90MB/sec.
3) is based on your own post.
The MacBook has two USB 2.0 controllers (let's call them Controller-A and -B).
If you happen to have two USB connectors which are connected to the same internal USB hub then you effectively have one controller. No matter what combination you use with the drives, you will never exceed the speed of the single controller.
RAID information
The canonical post on RAID levels over on our sister site ServerFault has a good explanation what RAID levels 0 (Stripe), 1 (mirror) and 10 are.
Please read it, the explanation are clear.
They are also not 1:1 applicable for you. All of those assume that speed is limited at the drive. That is, information is fed to and from the drives at a much faster rate than the drive can sustain. Using two drives in a stripe would be twice a fast because you could use the speed of two drives simultaneously.
If you put two drives on the same USB bus then you are still limited to the speed of that bus and you do not gain any speed when doing sequential reading or writing.
What does this mean for me?
If you set up two independent drives on controller A you would get this situation.
Controller-A --------- [Drive1] ----- [Drive2]
Read and write speed would be about 35MB/sec on each drive. Or half of that if you used both drives at the same time.
If I stripe (RAID 0) the drives then it appears as a single double sized drive.
Controller-A --------- ([Drive1][Drive2])
Speed is still limited by the USB2 bus. Sequential throughput is still limited to about 35MB/sec. You did not gain speed. You however got the easy of a virtual single 6TB drive rather then two 3TB drives.
Mirroring (RAID 1) the drives usually results in twice the read speed (since the limiting factor would be disc read speed and you can read simultaneously from both of them) and usually no loss in write speed.
Not in this case.
Controller-A --------- [Drive1]
[Drive2]
Read speed of a single drive will saturate the bus. Twp drives will not double it. The result will still be the same 35MB/sec.
In the case of writing to the mirror it is even worse. You are writing to both drives. You will pass the same data twice though the same limiting USB2 bus. Write speed will be halved!
We can do the same for the disks connected via USB Controller-B and get the same results. Clearly using two disk on the same USB bus will not increase throughput. It may even make things worse.
The alternative is to use two disks on different controllers.
Controller-A --------- ( [Drive1]
Controller-B --------- [Drive3] )
If you mirror these then you gain twice the read speed. This because reading will happen from both disks and fill both USB2 busses. Read speed will be about 70MB/sec.
Writes will have to go to both drives. You still write twice as much. You have twice as much bandwidth. Nett result is no change.
You will gain the additional redundancy of a mirror. (If one drive fails you still can read all the data).
Now for striping:
Controller-A --------- ( [Drive1]
Controller-B --------- [Drive3] )
Reads and writes can be done simultaneously from both drives. Read and write speed is doubled. Yay! :)
However you are now using all the bandwidth on both USB2 busses. Adding any more drives will not increase throughput. No matter if you combine them in RAID10 or RAID01.
So I am limited to 70MB/sec regardless?
Yes.
Best speed possible with this setup is 70MB/sec. using two drives on separate controllers.
You can set up two stripes. As long as you do not use both of them at the same time both of them will yield maximum throughput. If you use both at the same time both will drop to about half speed.
Throughput? Not speed?
I have been very careful to use sequential throughput as much as possible. Not speed.
You can bring a disk down to its knees by doing lots of small IO requests. Drive performance under such extreme situations can drop as low as 5 MB/second (even on 15k RPM 2½ inch SAS drives).
This is not the situation you will get with normal NAS use. Mostly a NAS stores movies, music, photos, documents of a few MB size. In that case the disk will read these at high speed (about 100MB/sec) and then wait 2/3rd of its time until it can push it over the USB bus.
If you access a lot of small files all over the disk (e.g. during a compile job on a heavily fragmented volume) then effective disk speed will be much lower. Should it drop below USB2 bus speed then you will gain the normal advantages of RAIDing the drives.
However this should be extremely rare, and you question was:
My question is which configuration will yield the best throughput?
What would you do?
Two drives in a stripe, one drive per controller, yielding a nice 6TB drive. Use the other drives as off-line backup.
The RAID mantra
RAID is not backup. RAID is not backup. RAID is not backup.
- If you have a fire, RAID will not save your data.
- If you there is a theft, RAID will not save your data.
- If there is a serious power failure, RAID will not save your data.
- Etc. etc. The only backup if an off-site backup. Lacking that an off-line backup.