While in the past RAID-0 helped to speed up the physical limitations caused by older rotational hard disks, on SSD drives with their faster read/write speeds, It is usually the SATA port of the controller that becomes the bottle neck, and splitting that bandwidth up can have dramatic results for some people. Picking which controller or controllers to use is a major factor in what your final results will be, and any controller that is buggy, ejects drives randomly or causes any headaches now, don't use it or you'll probably regret it. Although I don't recommend swapping your configured RAID array drives around to different ports, one benefit of software RAID is you can with little chance of a problem, unlike HW RAID where it's bound to that controller. So...
First we need something to put onto our array once we make it, and using the Mountain Lion Installer to do a clean install to your RAID, will result in an installation failure when the installer complains about not being able to make a recovery partition on a RAID. I've been able to instead restore from a Time Machine backup onto the new array by booting into the Mountain Lion Installer, but others have received the same Recovery Partition error when trying this as well. You also wan't to only make your Mountain Lion RAID while booted into Mountain Lion, as Lion or older versions will not know how to properly make the kernel caches and the array will not be bootable. So you'll need an extra drive with Mountain Lion installed. Boot into that drive.
Build array in disk utility. When prompted, choose whatever block size you want to use, default value recommended.
ST31500541AS Media-1.jpg 176.44KB 368 downloads
Here's how it should look, I enabled Disk Utility to show hidden partitions not normally visible.
Mikuru-1.jpg 173.89KB 412 downloads
Now use CarbonCopyCloner or similar to clone your working Mountain Lion install over to the RAID array.
Chameleon will need to be installed to each drives hidden "boot OSX" partition along with /Extra on each and kernel cache will be built on each. OSX cannot boot without kernel cache, i.e. -f, or will get error "mach_kernel not found". In /Extra folder of each "boot OSX" partition, in org.chameleon.boot.plist, you must include additional kernel flag
rd=uuid boot-uuid="UUID of your RAID array here, use Disk Utility and select array then Get Info"Get UUID here:
Mikuru.jpg 127.28KB 413 downloads Information_ Mikuru.jpg 89.7KB 506 downloads
Most the boot process takes place from the cache, then once the soft raid kexts are loaded, system can then find the array to finish booting, without this you will get "still waiting on root device"
Here is my entire org.chameleon.Boot.plist so you can get an idea of how it should look:
org.chameleon.Boot.plist.jpg 89.94KB 639 downloads
As mentioned, Chameleon, along with your Extra folder and updated org.chameleon.Boot.plist all need to be installed onto the boot helper partitions, which are hidden by default and called "Boot OS X", I have seen them without space too like "Boot OSX". They are not striped and are not part of the RAID array, making them readable by the BIOS and by Chameleon. To install Chameleon to the "Boot OS X" helper partitions, First find out the disk # for each one using Terminal and diskutil command and make note of the Disk #, the partition #'s will always follow the same layout where "Boot OS X" will be partition 3( s3 ):
diskutil listMake note of the disk # for each drive that will make up your array ( rdiskX ) where X is the drive #
Rather than run the Chameleon installer, install the 3 needed Chameleon boot files manually. They are; boot, boot0 and boot1h. If you have Chameleon package installer, they can be extracted to the desktop with Pacifist, or if you grab the binary you can just copy them right over. Either way, put them on the desktop for now along with Extra folder and edited org.chameleon.Boot.plist inside of it along with usual contents like DSDT. The last bit will all be done in terminal. For demonstration purposes, I assume my first hard drive of the array is rdisk1 and the 2nd is rdisk2, substitute with your own BSD drive number obtained via diskutil above.
cd to desktop:
cd ~/Desktopenter root
sudo -sinstall boot0 to MBR, we don't need to worry about partition # here, just the disk #:
fdisk -f boot0 -u -y /dev/rdisk1
fdisk -f boot0 -u -y /dev/rdisk2Then to install boot1h
dd if=boot1h of=/dev/rdisk1s3
dd if=boot1h of=/dev/rdisk2s3then need to mount one of the helper partitions to copy our remaining files over, and once done, unmount it then repeat the process for the 2nd helper partition:
diskutil mount disk1s3
cp boot /Volumes/Boot\ OS\ X/
cp -R Extra /Volumes/Boot\ OS\ X/
diskutil unmount disk1s3Be sure to unmount the Boot OS X partition before mounting the next one, because if 2 are mounted at the same time, the system will rename one of them to Boot OS X 1, possibly causing some problems for you. Repeat for other partition, will condense into short version cause this post is getting long:
diskutil mount disk2s3 cp boot /Volumes/Boot\ OS\ X/ cp -R Extra /Volumes/Boot\ OS\ X/ diskutil unmount disk2s3Here's what mounted Boot OSX partition should look like:
Boot OS X.png 885.71KB 532 downloads
Now you can have either drive listed as your boot device in BIOS, and pick either Boot OSX partition from Chameleon's boot menu, and your RAID will boot either way. That's it, if done right you should have working, bootable RAID-0.
Picking which controllers to put your drives on will largely depend on your hardware. Keep in mind, since they are both read and written to at the same time, your bandwidth will be limited to that of your slowest connection, but since they are both reading and writing at the same time, the combined load on that bus can also be a factor. So as an example, I have Intel SATA 2, Marvell SATA 3 on-board and PCIe 2.0 x1 ASMedia SATA 3 card. With a single SSD hooked up, the ASMedia is the faster of the three, but when using both drives of the array on that same ASMedia card, there is almost no increase in performance, because a single SATA 3 connection running full tilt is enough to use all the bandwidth available via the x1 PCIe 2.0 connection. The Marvell, which normally falls in between the ASMedia and the Intel, suffers from similar over saturation with both drives, so putting both on the Intel SATA 2 control is actually faster due to it's overall bandwidth. What ended up being the best for me, was to split that bandwidth by putting 1 drive on the ASMedia controller and the second on the Marvell Controller, allowing both to run at the full speed of the slowest link, so both are running at what would be the Marvell's max speed with just one drive. The difference in read speeds is pretty dramatic, where both drives together on any of the controller's would max at around 500mb/s, this combination will max out at 800mb/s and has added benefit of leaving Intel controller available for other uses like a possible Windows Hardware RAID.
Mac Pro.jpg 164.79KB 396 downloads
iCloud, iMessage or other Apple server login errors:
This should not be needed as it was fixed in Chameleon 2+ years ago, but I have seen a few instances in ML where it's been required and even a bit more common on a RAID-0 setup. Chances are if your having trouble logging into iCloud, the Appstore or any other apple run services, this is not the reason why and following the usual how-to for iCloud fix will be what is required, but if everything else has been set up perfectly and you are still having issues logging into iCloud, follow the pictures and see if it helps
IODeviceTree1 — platform.jpg 131.46KB 417 downloads
Copy to Text Edit then get your ethernet MAC address
Mac Pro en0.jpg 172.67KB 418 downloads Untitled 3.jpg 85.4KB 382 downloads
Changes will need to be applied to org.chameleon.Boot.plist in both your Boot OS X partitions
Now after rebooting, if done right you should now see this
IODeviceTree — platform.jpg 128.32KB 266 downloads
disclaimer #2: Everything in this guide, I read somewhere, sometime, someplace at some point and did not invent any of it myself. Most the words used can also be found in any English dictionary, with only a few exceptions patent pending such as the word "the", which I will be registering as trademarked once the paperwork arrives, until which time I will permit it's use as open source under the GNU general public license.