What is fakeRAID?
In the last few years, a number of hardware products have come onto the market claiming to be IDE or SATA RAID controllers. These have shown up in a number of desktop/workstation motherboards and lower-end servers such as the HP DL360 G5, if ordered without the optional RAID card. Virtually none of these are true hardware RAID controllers. Instead, they are simply multi-channel disk controllers combined with special BIOS configuration options and software drivers to assist the OS in performing RAID operations. This gives the appearance of a hardware RAID, because the RAID configuration is done using a BIOS setup screen, and the operating system can be booted from the RAID. With the advent of Terabyte disk drives, FakeRAID is becoming a popular option for entry-level small business servers to simply mirror 2 1.5 TB drives, and dispense with an expensive hardware RAID 5 array.
Older Windows versions required a driver loaded during the Windows install process for these cards, but that is changing as it has already changed in FreeBSD (which has FakeRAID support built into the ATAPI disk driver). Under Linux, which has built-in softRAID functionality that pre-dates these devices, the hardware is normally seen for what it is — multiple hard drives and a multi-channel IDE/SATA controller. Hence, fakeRAID.
Why not use a linux software RAID?
If you have arrived here after researching this topic on the Internet, you know that a common response to this question is, "I don't know if you can actually do that, but why bother — Linux has built-in softRAID capability." Also, it's not clear that there is any performance gain using hardware fakeRAID under Linux instead of the built-in softRAID capability; the CPU still ends up doing the work. The most common reason for using fakeRAID is in a dual-boot environment, where both Linux and Windows must be able to read and write to the same RAID partitions. Multiboot configurations are common among users who need multiple operating systems available on the same machine. These people shouldn't have to add a separate hard drive just so they can boot Linux. FakeRAID allows these users to access partitions interchangeably from either Linux or Windows. Another reason for using FakeRAID is if you define a disk mirror and a hard drive crashes, you can down the system and replace the failed drive and rebuild the mirror from the BIOS without having to boot into the operating system.
That said, linux software raid is more robust and better supported and thus, recommended over fakeraid if you do not need to dual boot with Windows.
This wiki describes how to get Linux to see the RAID as one disk and boot from it in the same way that windows will install on this type of device. This document is constantly updated by users like you and is a "living" document to which your contributions are welcome.
nVidia nForce RAID
When nVidia was still producing the nForce chipsets on now older motherboards, Linux gained inbuilt support for both the dmraid target and for Grub2 support for booting from the array, and to this day there is great support for this chipset compared to other FakeRaid solutions.
Grub2 contains the dm_nv.mod module that allows it to read Grub files from your boot partition on nVidia RAID
- nVidia arrays are automatically activated on live installer images from at least 14.04 up to this day and probably long before.
- with appropriate manual 'fixes' your pre-boot environment (initramfs) will also support activating the array and all its partitions.
Other cards may have less support. For example, the RocketRaid cards from HighPoint are notoriously difficult but do have someone maintaining the drivers at github (apparently courtesy of Gentoo) -- there is no support from the manufacturer and you need to compile and add dkms support yourself, and Grub will probably never boot it.
So Grub can boot nvidia Fakeraid
You have to add GRUB_PRELOAD_MODULES="diskfilter dm_nv" to /etc/default/grub and install Grub with grub-install --modules="diskfilter dm_nv" and it will load your menu and boot from it just fine! (Tested on 16.04.3).
What about the pre-boot environment?
The default package dmraid comes with scripts that are insufficient to actually activate the partitions on the array.
You must copy the script to /etc and append it:
cp /usr/share/initramfs-tools/scripts/local-top/dmraid /etc/initramfs-tools/scripts/local-top echo "dmraid -ay" >> /etc/initramfs-tools/scripts/local-top
Make sure your dmraid is actually properly installed. There is a bug in Ubiquity that ensures that when grub installation fails during install, some packages are left without files.
apt install --reinstall dmraid libdmraid1.0.0.rc16
Now regenerate your initramfs:
And make sure to check that your Grub config contains the systems available on your raid:
And install on your required device as said:
grub-install --modules="diskfilter dm_nv" <device>
If this doesn't work, copy /usr/share/initramfs-tools/scripts/local-top/lvm2 as above and add "dmraid" as a prereq, and/or add "udevadm settle -t 10" to that file (these are just hints, I don't know if they are necessary). But this thing should really work by default.
Currently writing this on a 16.04.3 system booted from nVidia RAID without any extra devices apart from the fact that I have Grub installed on an sdcard ;-). The only reason for that is dual booting Windows, it should be no different.
Ubiquity will fail when installing grub, and will not automatically add dmraid to the new installation. This needs to be done manually. The Installation guide for 8.10 and 9.04 contain the steps required to manually install these items.
'Alternate CD' is different to the standard Ubuntu iso download. Trying to install a fakeRAID Ubuntu with the standard ISO using the Alternate CD install method will fail.
The Live CD is not present in any server install ISOs. Use the desktop ISO.
It's critical to have dmraid loaded if you're in a dual-boot environment, with the /dev/mapper/XX entries. If you install to the drives without this running you WILL have access to the section of the hard drive that the disk metadata is located on that the controller uses, and you can wipe it out or damage it, ruining your array. If your FakeRAID array is striped, not mirrored, you will scramble all your data if this happens.
You should be aware that dmraid (especially the dm-raid1 target of the device mapper) (at least up to kernel version 2.6.17) supports the mirroring with RAID-1, but it has no error handling. When a block on one disk fails a failure reaches up to the application level, currently it doesn't try to read from the second disk. It only mirrors all data to the second disk.
So it secures the system from data loss, but the system can nonetheless crash. There exists patches for the 2.6.17 kernel series which enables a higher read speed and error handling in failure case, but until now they are not incorporated.
External links regarding RAID-1: Running Ubuntu On a Fakeraid/1 array described how to adapt the original HOWTO to a RAID-1 (mirroring) array.
Since version 8.10 (Intrepid Ibex) Ubuntu has RAID5 support built into the kernel loading the right module. also dmraid is now in the 'main' respository, and can be installed without reconfiguring apt. Once dmraid is running, the live installer can handle installing to the raid.
Always when installing something of this magnitude make sure that you back up anything of importance.
Ubuntu 10.04 (Lucid Lynx) and 10.10 (Maverick Meerkat)
The installer will recognize the dmraid devices and allow you to use them normally. Their names will be /dev/mapper/something instead of /dev/sdX. You need to install grub to the dmraid device instead of /dev/sda. In 10.04 the final stage of the installation you check the advanced button and can select where to install grub to. In 10.10, you choose the destination from the drop down list on the manual partitioning screen.
Ubuntu 9.10 (Karmic Koala)
The automatic installer may or may not work out of the box. When I tried it, it didn't work the first time and I had to manually install dmraid. But it did work the second time on the same machine, (with disks that had been wiped) The problem appears to be installing grub2
Use the LiveCD method
* Boot the system with the Live CD
* Run the partitioner program gparted (System->Administration->GParted)
9.10 loads dmraid automatically so you should see for a disk device
/dev/mapper/pdc_feddabdf or some suchlike
if dmraid detected and can use a fakeraid partition
* Setup an extended partition using whatever space your going to allocate for Ubuntu or the entire drive. Setup a minimum of 2 logical partitions in the extended partition, the first will be formatted ext4 and the last swap. Set the type on the swap partition to swap. Format the first partition. Exit gparted
* Run the installer. When it gets to it's partitioner, change the mount point on the first partition to / DO NOT format it! Do NOT make any partition changes! The installer partitioner does not understand dmraid partitions properly
* In the installer summary screen right before the copy process starts, click the Advanced button. Change the boot partition (this is the MSDOS-style "parent" partition not the Linux partitions) to /dev/mapper/pdc_feddabdf (or whatever dmraid lists as your fakeraid partition) Make sure the checkbox is clicked to boot from this disk. note that the installer will modify grub2 to point to the correct logical partition /dev/mapper/pdc_feddabdf1 or whatever / is on.
* When the installer finishes DO NOT REBOOT, the new system will be mounted on /target. If you rebooted then run the terminal screen and mount the /dev/mapper/pdc_feddabddf4 (root) partition (this is the target the installer put the root on) on some convenient directory (/tmp/tmp or some such) chroot that directory (/target or whatever it's mounted on)
* Run the command "apt-get install dmraid" If your lucky you will get a message back saying that the system didn't need to do anything as the installer will have correctly built initrd for grub to include dmraid. Otherwise this will update dmraid and rebuild the grub init to load dmraid. Exit the terminal and click reboot, or type "shutdown -r now" at the terminal window
* When the system comes back up login and verify that /dev/mapper/pdc_feddabdf (or whatever dmraid names your fakeraid) exists, and use df to verify that the system is mounted on it. (it will say it at the top)
Ubuntu 8.0.4 LTS (Hardy Heron)
dmraid is not loaded during the install CD boot for the server or alternate distros. Here are the general instructions for this:
Open a terminal and type:
sudo apt-get install dmraid vdir /dev/mapperThere should be a listing for the raid there.
- Manually partition using cfdisk, create at least two partitions, swap and root.
partprobe /dev/mapper/<array name>
- Start the GUI installer and complete the install.
- Make sure you only use partitions you created yourself in case partitions are listed doubly.
- The installer fails to install Grub and you must do it from the command line.
- There was apparently a bug in 8.04 where the initrd did not activate the raid properly. This was then fixed in 9.10.
Documentation for older, unsupported releases has been moved to /Historical.
Troubleshooting: User Contributions
- Ubuntu 6.06 LTS on 1 June 2006:
Install of dmraid failed to configure, indicating it was unable to start the dmraid initscript. This may have been some kind of error on my part. I was able to fix this with 'dpkg-reconfigure dmraid' I add it here as a possibly useful tip should this turn out to be systematic problem that others encounter. Also, install dmraid first, then the kernel, in order to use the initramfs scripts that are now part of the 6.06 distribution.
One possible source of error is that if you have several kernels installed, only one initrd gets updated, and that you therefore might boot with an old initrd where the dmraid modules and hooks are missing; To avoid this, run update-initramfs -u -k <version> where <version> would be the kernel version you would like to boot with, in the format given by uname -r.
- 18 June 2006:
Another user reported this same problem. dpkg-reconfigure did not work for him, but he reports that after reinstalling dmraid "like ten times" it magically worked. To help reduce the likelihood of this occuring, I have separated the package installs to separate lines (above) to help ensure things are completed in what I'm guessing to be the best order.
- 08 June 2007:
I've followed this tutorial but used a knoppix 5.1.1 CD and installed Debian lenny. I encountered one more problem that seems to be a bug in GRUB and is described here: "ALERT! does not exist" at boot with ICH7. I've used the stage files from the feisty+mem_lower.tgz to overwrite my Debian lenny files, because the Ubuntu debian package had some unresolvable dependencies.
- 22 June 2007:
The File Not Found error from Grub when the savedefault option is used in menu.lst is because the file /boot/grub/default does not exist. I manually created this file by executing 'sudo grub-set-default 0' from within the installed system. This should also work when initially setting up Grub, as described above. Adding this file eliminates the need to remove the savedefault option from the menu.lst each time you run update-grub (eg, after a kernel upgrade).
- 21 Oct 2007
Gutsy uses linux-generic as the kernel which loads optimizations at runtime. Instead of "apt-get install linux-386 # or k7, k8, k8-smp, etc" simply use "apt-get install linux-generic".
- 30 Nov 2008
I followed this instructions to the letter, but I got grub error 15 (File not found) during boot, although all the file were on place. However, grub didn't know which device should be scanned to find all the required files. I found out, that one important file was missing: device.map informing grub about the devices. So I created one in the grub directory (/boot/grub/) and add the following entry:
(Replace isw_deebyaid_RaidMatrix_Linux with your RAID device.)
This solved my error 15 issue.
- 15 Jan 2009
I've just managed to make work a Gigabyte MA78GPM-DS2H motherboard RAID controller in RAID-1 mode. This is a pdc controller. I configured RAID using BIOS, launched 'try Ubuntu' mode and added dmraid as described at the top of the page. Unfortunately, I've got the following error:
dmraid -ay ERROR: creating degraded mirror mapping for pdc_xxxxx
dmraid -r noticed only the second disk of the pair. More strangely, after reboot, BIOS launched an alarm that one of the disks is nonfunctional. The alarm gone after hard reset.
Now the solution: go to BIOS, delete your configuration and create it again. But this time change two options:
- - "Gigabyte bonduary" to "NO" - "Fast Init" to "NO"
This time the RAID matrix and both devices are detected fine.
I am now waiting until Ubuntu is installed, hopefully grub part will be easy... Regards.
- 26 Jan 2009
I followed these instructions - Method 2 in long - and they worked perfectly EXCEPT for booting Windows.
Windows was an XP installation on a single ATA drive that wasn't part of the (new) RAID. The system BIOS was set to boot SCSI (which meant it was booting the RAID). GRUB couldn't make windows boot - it stalled on the final step.
I found the answer here: http://users.bigpond.net.au/hermanzone/p15.htm#Chainloading_Windows_using_map_commands
The section is "Chainloading Windows on a non-first hard disk". The problem lies with Windows - it expects to be on the first drive. In the Windows section of Menu.lst, I now have:
title Windows XP rootnoverify (hd1,0) makeactive map (hd0) (hd1) map (hd1) (hd0) chainloader +1
hd0 is my (booting) RAID as seen by GRUB. hd1 is my (non-booting) ATA drive with windows in the first partition (hd1,0). The two map commands fool Windows into thinking it is on the first drive. This works.
9.#9 25 Apr 2009
This is a GREAT tutorial! I have learned much about my hardware and Ubuntu.
I have an Asus A8V motherboard and had Gutsy running on it for some time. The moment I activated SATA raid (with two new drives), I could not boot my computer. Adding "pci=nomsi" to the kernel line in Grub or the F6 boot options on the Live CD, fixed it.
Possibly because of the above issue (or not?) I could not set the raid set for boot in the BIOS. I am currently using an ide drive for the boot partition. I also have Ubuntu installed on the ide drive """for emergencies""". Another good trick is to create a Live CD partition on a hard drive! See: Installation/FromHardDriveWithFloppies this allows very fast installation!
I am using the six partition method with boot (ide drive) and the rest on raid. For some reason, the initramfs image did not get sent to my boot partition and the raid OS would not boot. If you suspect this, mount your root partition without mounting the boot partition and look in the boot directory (/target/boot). It may be hiding there.
I have found that gparted does not work correctly (for me). I used fdisk and mkfs.
Another strange situation is, during Live CD installation, the partition section shows multiple lines for each of the raid partitions. Some of these had "no number". I installed to the partitions "with" numbers and deselected the "no number" partition for swap use. This allowed the installation to work.
Also, if you are using a Live CD install, ""do not"" deselect grub install. It could wreck any previous grub instalaltion.
- A Striping with Fake Root (9.04 ubuntu)
Since I skipped the step installing raid 4-5 (modprobe dm-raid4-5), I later skipped installing the module (echo dm-raid4-5 >> /etc/initramfs-tools/modules). Since I don't need the dm-raid4-5 module in the modules, I need to add rmraid, which I just used nano to edit the modules file and added a new line: rmraid I then had to run the following command from above (as noted in the modules file): update-initramfs -u
The last thing I had to do was edit my /boot/grub/menu.lst It had placed root=/dev/hda1, which needed to be replaced by my root=/dev/mapper/Mapper_Device_ID
I also poured salt in my wound, if you'd like to see how, reed my forum post: http://ubuntuforums.org/showthread.php?p=7281944#post7281944
9.10 bits & pieces
Would it be possible for someone to update for ubuntu 9.10 - the partitioning section in particular is confusing.
Added something about Alternate CD at the top - hope people don't mind, but if you're new to Ubuntu, you don't know what this is and don't realise that it's an official thing which you need to download.
My windows boot drive has 139gb free space according to Windows' 'Computer Management' app, but only 27mb according to the ubuntu installer's partitioning app - hence I can't install it. After 2 tries to get started on linux and each time discovering it'll likely be thrice as hard as I thought it would be the time before (an example. Also saw the number of times partitions appear in the Ubuntu problems fixlist), I'm now asking myself (/the ubuntu braintrust) "should I persevere with Ubuntu, given that it's clearly not going to be the the antidote to windows? is setting up a dual-boot on a raid1 array a task so technically complex that it's not at all demonstrative of the experience one can expect when using the OS in general?"
- 9.10 How-To
I have provided a post on the forums instructing how-to install 9.10 using fakeraid here. Basically you install using the live cd (alternate no longer required in 9.10) then boot into the live cd to remove GRUB2 and install+configure GRUB legacy. GRUB2 currently does not have the means to boot a fakeraid setup and is rumored to be fixed in time for 10.4's release.
- 10.04 Installation on isw fakeraid
Had to work around the installer. Q&A'ed it in question 108677 in launchpad. Trick was using chmod on the disc's root partition! Just mount the root partition into the /media folder. Then sudo chmod 755 /media/fake
- 10.04 Addition for the Live CD installation (Ubiquity Graphical installer)
(Own experience with an intel RAID 0 array and 10.04 Kubuntu 64 bits following this wiki)
4.a. dm_raid45 (not "dm-raid4-5") module was already loaded. You can check it by doing
$ sudo lsmod
4.b. dmraid package was already installed but it is still safe to run this command to make sure.
5.a. alternatively you could test you raid array by running this
$ sudo dmraid -tay
6. Partitioning and formatting with ubiquity installer didn't work for me. I had to do it before launching the ubiquity installer.
6.b. After creating new partition on the raid array with cfdisk, you have to launch this command again
$ sudo dmraid -ay
- Output should show the activation of the new partition(s).
6.c. Format the new partition(s) with the file system you want
$ mkfs.ext4 /dev/mapper/isw_beeaakeeaa_fiveZ
- Z is the number of the new partition.
Example: $ mkfs.ext4 /dev/mapper/isw_beeaakeeaa_five5
8.a. Do not format nor partition using the ubiquity installer. in manual mode, choose the "/" mounting point on the partition you want and make sure "format" checkbox is unchecked. As you already format the partition in the step 6.c. it should allow you to attach "/" without formatting.
9.l.ii The command find /boot/grub/stage1 resulted in an error for me I had to do the following command to make Grub recognize my raid array
grub> geometry (hd0) C H S
- Replace C H S (Cylinders, Heads and Sectors) above with the proper numbers. You can find them using cfdisk at the top of the main screen (be aware: they are not displayed in the same order).
- Example: 18079 255 63 for a RAID stripe of two 74GB Raptor discs.
grub> root (hdY,X)
- Replace Y with the drive number. Usually 0 as specified in the step 9.l.i.
- Replace X with the partition number from the previous step.
Example: root (hd0,4)
9.p. Make sure the device.map file is correct. This file is used to map the dmraid device to a grub hdY.
- Edit the file:
# nano /boot/grub/device.map
- and add the following line:
Make sure there is no other line beginning by (hd0).
If you have multiple dmraid devices with multiple sets of arrays set up (say: nvidia_fdaacfde and nvidia_fffadgic), then create the /boot/grub/device.map file to help GRUB retain its sanity when working with the arrays. Using these dmraid devices, your device.map file will look like this:
(hd0) /dev/mapper/nvidia_fdaacfde (hd1) /dev/mapper/nvidia_fffadgic
# echo dm_raid45 >> /etc/initramfs-tools/modules
# nano /etc/modules
and add dm_raid45 if not exists
11. Dual-Boot configuration.
In case of a dual boot with Win7, grub may have some problem to launch windows. An easy solution is to install grub on the linux partition (not the MBR). Cf. step 9.l.iv, grub> setup (hd0,4) Then, use the Win7 boot manager to choose between windows and linux. To add a new entry into the win7 boot manager, you can use the official "bcdedit" command or the unofficial graphical utility named "EasyBCD 2.0 beta".
15. 10.10 Addition for the Live CD installation (Ubiquity Graphical installer) (Own experience with an nvidia RAID 0 array and 10.10 Ubuntu 64 bits following this wiki)
The built in installer nearly works. There is just some issue about a restricted hard-drive area used by some motherboards, which is ignored by default in Ubuntu. Ignoring this area interferes with fakeraid, so you need to enable the restriction by adding libata.ignore_hpa=0 to the boot options. It wasn't me who figured that out. Have a look at http://samueltaylor.me.uk/2011/01/31/setting-up-nvidia-nforce-fakeraid-on-ubuntu-10-10/ for the full story and a more detailed tutorial. Note that his conclusions are a bit off in that this doesn't have anything to do with nVidia, and ignore_hpa=0 actually DISABLES access to the protected area, not enables it.
16. 12.04 LTS 04 January 2014:
Setting up a dual-boot system 12.04 LTS/Win7
As stated above, the reason to use fakeraid is most likely, that you want to dual boot with another OS e.g. Win7. The following should help to avoid many of the pitfalls one may encounter, while setting up such a configuration. This was tested on a Z78-Mainboard (Gigabyte Z87-HD3) and therefor should work at least with any other Z78 Mainboard.
16.a Disable EFI-Settings - Disabling EFI and choosing "legacy only" avoids the hassle to configure an EFI Partition (in Windows as well as Linux)
16.b Boot the Ubuntu Live-CD, for the system this guide is base on ubuntu-12.04.3-desktop-amd64.iso was used.
16.c Choose "Try Ubuntu" - Once the Live Environment is booted start "gparted"
16.d Using gparted set up the partitons you want Ubuntu to use. (eg. ROOT and SWAP)
16.e Once this is finished reboot the System with a Windows-Installation Medium. Be mindful to have the RAID drivers Windows needs during the installations process ready. Best to copy them onto the same medium prior to installation. Windows will recognize the partitions created with gparted and can be installed alongside. It is critical to stick to this order, since in the case that Windows is installed first on the fakeraid, gparted does not recognize the Windows-Partitons and tell you, that the whole RAID-Stripe is not formated.
16.f Once the installation of Windows is finished, boot the ubuntu live-CD again and this time choose "install ubuntu".
16.g Click through the installation screens and configure everything to your liking UNTIL you reach the point, where Ubuntu asks you for the partition layout. Here you must choose manual partitioning and tell Ubuntu to use the partions you set up during step 16.d. DO NOT FORMAT these partitions, just install onto them. Otherwise the Installer messes up the partition setting and you have to start from the beginning.
16.h Also of importance is that you choose the whole RAID-Stripe for the installation of the boootloader. (/dev/mapper/isw_[cryptic_string_depending_on_your_setup])
16.i Once this is done continue the installation as normal and reboot the system when told to do so.
16.j If everything went well you are presented with a GRUB bootscreen, that allows you to boot into ubuntu or Windows.
16.k Now finish the setup of ubuntu and Windows (drivers software etc.) I recommend this as the very last step, since the time you invest here will be lost, if something does not go according to plan.
Please contribute your lessons learned here.