I have always used Software RAIDs, either Apple-provided, or via SoftRAID, etc. I am about to re-zhuzh my arrays and decided to do a little research beforehand… and On Apple's site, there is a statement, clear as day…

RAID 1 (mirroring) for disk redundancy

Mirroring improves reliability by writing the same data to two or more disks. If one hard drive mechanism should fail, the second disk still contains all the data. At least two hard drives are required for mirroring. Mirroring does not provide performance improvements. If the hard disks are not the same capacity, the smaller size will be the amount of disk space used on both drives. Disk Utility determines this automatically.

I was always under the impression that, as there are TWO platters for READ operations, that READ performance with a 2-Drive RAID1 mirror would be somewhat improved. This contrasts with write speed, which remains the SAME, as the drives have to both write the same data at commit-time, so as to sustain a mirrored copy of the data. However, when reading I had thought that the array acted similarly to a RAID0, striping the reads accross both drives.

How is RAID1 is supposed to work? If so, is Apple..

  1. just saying there is no improvemnet to cover their asses, or
  2. are they actually not implementing RAID 1 to its full extenent? (Does SoftRaid 4.3 claim to do this?)

According to Wikipedia…

In RAID 1 (mirroring without parity or striping), data is written identically to two drives, thereby producing a "mirrored set"; … The array continues to operate as long as at least one drive is functioning. With appropriate operating system support, there can be increased read performance, and only a minimal write performance reduction;…

So it is Possible, but Apple says there's does not see any speed benefit… But in practice, is there any measurable increase in speed for reads with Software Raid 1 (via Disk Utility)?


My guess would be that Apple prefers to have one drive handle only write processes as a backup and read/write from whichever one it considers the main drive. As to why this is, I have absolutely no clue. Seems kind of like a big oversight on their part. I've always kind of gotten the feeling that software RAID is pretty low on Apple's priority list.


These are what we call implementation details.

You can implement RAID 1 in a variety of ways, Apple choose to implement it in a way without any speed gains.

  • It IS an omission of a "feature" that is "usually implemented" with RAID1.. but this is not an "implementation detail" it's a "design decision". – alex gray Jan 6 '14 at 5:40

For redundancy and performance Apple steers you towards RAID 10. I built a 4 disk array by doing a mirrored pair of striped disks which I then converted to a core storage volume to facilitate easier expansion later and FileVault.

I can watch data be written to both stripes with iostat but when I read, presumably this is abstracted by cs, as I see zero bytes coming off the same devices on read. Activity Monitor shows the throughput of reads and writes across all volumes, iostat doesn't seem to let me use a cs volume as a device.

If you're curious how I set up my RAID set, my final volume name will be 'cornballer' so I named the striped devices 'cb1' and 'cb2'.

Disk Utility RAID stuff

AppleRAID sets (3 found)                                                                                                                                                                                                             [16/1799]
Name:                 cbs1
Unique ID:            1E127495-1FDE-4521-A941-5E5DC31245DD
Type:                 Stripe
Status:               Online
Size:                 2.0 TB (1999721791488 Bytes)
Rebuild:              manual
Device Node:          -
#  DevNode   UUID                                  Status     Size
0  disk5s2   AA501823-4955-473B-A27E-0EEA9E75072A  Online     999860895744
1  disk6s2   A6486548-3E07-4C0F-8F88-BE909D23DC22  Online     999860895744
Name:                 Untitled
Unique ID:            C9E220C8-418B-4BF4-81A2-627CC95AB7B4
Type:                 Mirror
Status:               Online
Size:                 2.0 TB (1999721758720 Bytes)
Rebuild:              automatic
Device Node:          disk9
#  DevNode   UUID                                  Status     Size
0  -none-    1E127495-1FDE-4521-A941-5E5DC31245DD  Online     1999721758720
1  -none-    2B52C67D-801E-4481-A76B-F98FF28C13B5  Online     1999721758720
Name:                 cbs2
Unique ID:            2B52C67D-801E-4481-A76B-F98FF28C13B5
Type:                 Stripe
Status:               Online
Size:                 2.0 TB (1999721791488 Bytes)
Rebuild:              manual
Device Node:          -
#  DevNode   UUID                                  Status     Size
0  disk7s2   890A3BB9-94CB-4E02-8580-5F16D94890FF  Online     999860895744
1  disk8s2   71C4DE7E-6EC2-4660-9CDA-0ED31574925D  Online     999860895744

Core Storage Stuff:

CoreStorage logical volume groups (2 found)
+-- Logical Volume Group FA60C2D3-1129-46B1-BE53-5BC7882904EB
|   =========================================================
|   Name:         lindsayLVG
|   Status:       Online
|   Size:         1999721758720 B (2.0 TB)
|   Free Space:   0 B (0 B)
|   |
|   +-< Physical Volume C9E220C8-418B-4BF4-81A2-627CC95AB7B4
|   |   ----------------------------------------------------
|   |   Index:    0
|   |   Disk:     disk9
|   |   Status:   Online
|   |   Size:     1999721758720 B (2.0 TB)
|   |
|   +-> Logical Volume Family 135BA843-4D11-4DBE-82A4-4155B38FCC9D
|       ----------------------------------------------------------
|       Encryption Status:       Unlocked
|       Encryption Type:         AES-XTS
|       Conversion Status:       Complete
|       Conversion Direction:    -none-
|       Has Encrypted Extents:   Yes
|       Fully Secure:            Yes
|       Passphrase Required:     Yes
|       |
|       +-> Logical Volume CC7C3863-D3EE-495C-BDD5-06223560E072
|           ---------------------------------------------------
|           Disk:               disk16
|           Status:             Online
|           Size (Total):       1999402983424 B (2.0 TB)
|           Size (Converted):   -none-
|           Revertible:         No
|           LV Name:            cornballer
|           Volume Name:        cornballer
|           Content Hint:       Apple_HFS
  • Hi. You seems to be pretty familiar with all these CoreStorage stuff. Can you please check out my question and provide some suggestions? apple.stackexchange.com/questions/95955/… – Shane Hsu Jul 9 '13 at 15:56
  • Your question doesn't indicate that you're using Core Storage. If you are using Core Storage you can add devices to a logical volume family without rebooting, if that's what you're asking. – incumbent Jul 9 '13 at 16:22
  • Yes, my setup didn't implement CoreStorage. And yes, I'm asking if CoreStorage would help. And it seems it might. Thanks. I will dig deeper into CoreStorage. I got a two-month-long vacation, that will do. Thanks again! – Shane Hsu Jul 9 '13 at 17:26

This lack of performance of Read improvement from a 2-disk RAID-1 is most definitely a design decision. I have, for literally decades, measured nearly double the read throughput on OpenVMS systems with software RAID-1, particularly with separate controllers for each member of the Mirror set (which, FYI, OpenVMS calls a Shadow-set).

FYI: If your objective is solely improving Read throughput, you can do so with a single controller (or I/O channel) that is more than twice as fast as the individual drives in a Mirror (RAID-1); however, with separate controllers (I/O channels) you also get a bit better fault-tolerance as well ... as long as the operating system supports continued operations when one controller fails.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .