![]() | ![]() |
|
Linux ATA RAID HOWTOMurty Rompalli murty@solar.m u r t y.n e t April 26, 2002
1. IntroductionThe goal of this HOWTO document is to explain how to setup RAID 1 (mirroring) with the two hard disks and install bootable RedHat Linux Operating System on the mirror device. This document discusses both methods of achieving this goal: 1. Using Promise supplied driver 2. Using Linux native RAID. If you choose the first method (using Promise supplied driver), you must use the Kernel 2.4.7-10 that comes with RedHat 7.2 CD. If you choose the second method, you can upgrade the kernel to the latest kernel (2.4.18). This document does not discuss Striping or other disk configurations, although the author believes that this document might help setup those configurations. This document does not yet cover: 1. Installation using GRUB instead of LILO and 2. Installation with Latest development kernels (2.5.x). First of all we need a bit of legalese. Recent development shows it is quite important. 1.1. Copyright Information© 2002 Murty Rompalli This document is copyrighted © 2002 Murty Rompalli and is distributed under the terms of the GNU Free Documentation License and additional terms described below. This Linux HOWTO document may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating this Linux HOWTO document must be covered under this copyright notice. That is, you may not produce a derivative work from this HOWTO document and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at this address <linux-howto@metalab.unc.edu>. In short, the author wishes to promote dissemination of this information through as many channels as possible but wish to retain copyright on this HOWTO document, and would like to be notified of any plans to redistribute this HOWTO document. 1.2. DisclaimerNo liability for the contents of this documents can be accepted. Use the concepts, examples and other content at your own risk. As this is a new edition of this document, there may be errors and inaccuracies, that may of course be damaging to your system. Proceed with caution, and although this is highly unlikely, the author does not take any responsibility for that. All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of particular products or brands should not be seen as endorsements. You are strongly recommended to take a backup of your system before major installation and backups at regular intervals. 1.3. New VersionsThe newest version of this HOWTO will always be made available on my website http://www.murty.net/ataraid/, or you may contact me directly at <murty at solar . murty . net> to check if there is a newer version. Currently, this document is available in the following formats:
Note that paper sizes vary in the world, A4 and US letter differ significantly. You might also wish to consider using the universal format (8.27x11in; 210x279mm). 1.4. CreditsYour name here, if you contribute :) Luc de Louw <luc at delouw.ch> corrected errors in my SGML source. Joy Y Goodreau <joyg at us.ibm.com> corrected errors in my SGML source. In this version I have the pleasure of acknowledging: Alain Portal <alain.portal at free.fr>, Service Commun de Microscopie Electronique for proof-reading and correcting mistakes. 1.5. FeedbackFeedback is most certainly welcome for this document. Without your submissions and input, this document wouldn't exist. Please send your additions, comments and criticisms to the following email address : <murty at solar. murty . net>. 1.6. TranslationsPlease help International users who do not speak English. You are encouraged to translate this document to a foreign language. Please notify the author if you translated or would like to translate this document into a foreign language. The following translation efforts are already under way.
2. RequirementsThis section lists what items are required before you start installing on your computer.
3. Prepare Promise Driver Floppy
4. Preparing RedHat 7.2 CDs
5. Installing Red Hat 7.2Once you have created your CDs, you are ready to begin installing Red Hat 7.2 on your Linux system.
If your machine is SMP, you will have to manually create initrdsmp.img, when you boot into Uniprocessor Kernel as shown below, and edit /etc/lilo.conf and then test to see you can boot into SMP system.
At this point, you have a working Red Hat 7.2 machine with SMP support, if applicable. If you are happy with the fact that you are running a fake Hardware RAID from Promise FastTrack using SCSI Emulation, then read no further. Because Promise Driver is a SCSI emulation, it puts a lot of load on CPU(s). Read on if you want to enable true Linux native RAID and get rid of this Promise SCSI emulation. 6. Installing Native Linux RAIDThe first step you want to take is to configure your networking and connect your computer to Internet, which is still running under Promise Driver SCSI emulation. Next you will install native Linux RAID.
Look at /etc/lilo.conf to make sure new lines are added to boot your new kernel 2.4.18. Note that there should not be an initrd= line for this new kernel in /etc/lilo.conf. That is, our new kernel will boot itself without depending on a initrd.img unlike your current 2.4.7-10 kernel. Now adjust /etc/lilo.conf as follows:
Here is how the final /etc/lilo.conf should look like. If everything comes up without any errors, time to celebrate!! 7. Installing on an existing Linux systemThis section explains how to install Linux Native ATA RAID on non-OS disks you may have on a running Linux machine. Non-OS disks are those which do not contain any Linux OS partitions such as /, /usr, /var, /boot. In other words, we have a working Linux machine with two free disks and we want to setup ATA RAID mirror (raid 1) on those two disks. When we save important data on such a mirror device, our data is protected. Ofcourse, like any other RAID 1, we will experience improved read speeds while reading the data and slightly decreased write speeds while modifying or adding new data to the mirror device. Therefore, using RAID 1 for data disks is recommended if the data disk is more frequently read than written to. A web server hosting rarely changing web sites is a good example where web content is rarely modified but very frequently accessed by users. Here are the steps to install non-OS ATA RAID if your RAID chip is from Promise Technology:
7.1. Append LineFor the purpose of understanding various tasks involving Promise FastTrack RAID such as upgrading or troubleshooting, we introduce a noun: Append Line All the ide options you pass at the LILO boot: prompt at the time of booting, when put together as a string, make up the Append Line. All the ide options in double quotes after append= keyword in /etc/lilo.conf also make up the Append Line. For example, if you type linux-new ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none nousb expert root=/dev/hda3 at boot: prompt at the time of booting your Linux computer, then Append Line is the string ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none. Similarly, if your /etc/lilo.conf has the following section, your Append Line is ide2=0x9400,0x9002 ide3=0x8800,0x8402.
When we experience problems booting a Linux machine with RAID, we may have to use an appropriate Append Line. Therefore, it is important to determine and write down the Append Line. This will help you fix your problems later or upgrade your kernel smoothly or add/remove additional hard disks. 7.2. Determining the Append LineTo determine the correct Append Line, we should first know how all our ide devices are connected. IDE devices can be hard disks, ATAPI CDROM(s) etc. Once we determine the Append Line, we can append it to the boot: options (at the time of booting) or we can alternatively assign it as a string value to the append paramater in /etc/lilo.conf. Unless you love to remember complicated boot: options and type them at boot time every time, you should choose the second method, i.e., insert it into /etc/lilo.conf . You can do so by inserting append="Your Append Line Here", saving file and then activating new /etc/lilo.conf by running the command /sbin/lilo. For the purpose of understanding better, lets say that your ide devices are as follows:
The two free disks above (hde and hdg) are the ones we would like to setup as RAID 1 to create /dev/ataraid/d0 raid device. Note that we do not have hdf or hdh because that is how we used the IDE/RAID ports on Promise chip. It is not a good idea to connect two hard disks to the same Promise controller IDE port. In the above example, we used Primary Master and Secondary Master connections on the Promise Technology card. If you do not know how various ide devices are connected in your computer, take a look at /proc/devices and /proc/ide/*. You can also carefully go through boot log file, /var/log/bootlog (or type dmesg | more right after your Linux system boots) to find your ide devices. Now type less /proc/pci and locate appropriate information about Promise Technology. In the output of less /proc/pci, you can see somewhere information about your Promise chip, something like:
From this output, we learn that our Promise Technology card uses IRQ 10 for both ide ports (ide2 and ide3). Using same IRQ is perfectly alright as long as your kernel supports PCI IRQ Sharing. By default, our Linux kernel is configured to support PCI IRQ sharing. From the above output, we also learn that our Promise Technology card uses various IO addresses. For the purpose of identifying Promise Technology disks properly at boot time, we only want the IRQ number(s) and the first four IO Address numbers outside [ ]. Write down on a piece of paper this information. In this case, from the above output:
Now, we have to evaluate the following to obtain the correct Append Line. Then either specify this Append Line at boot time or specify it in lilo configuration file.
In our example, the above Append Line will become: ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10 If, for example, we want to boot kernel version 2.4.18, labelled linux according to /etc/lilo.conf, then we specify our Append Line in one of the following two methods:
7.3. Setting Up RAID 1If you want to setup RAID 1 using Promise Technology proprietary driver (ft.o), you can download Promise Driver (ft.o) into /lib/modules/kernel-version and load the module by typing modprobe -k ft. You should then be able to access your new raid device as /dev/sdc or something like that. But if it does not work, then determine your Append Line and add it to /etc/lilo.conf. If you are setting up RAID on an existing Linux system and are using either Promise Technology ft driver or Linux native ataraid driver, then use of Append Line in /etc/lilo.conf is strongly recommended. Once you reboot with your new /etc/lilo.conf that contains Append Line, you can load either driver (ft.o from Promise Technology or ataraid.o, the Linux Native RAID module) to enable RAID except when your kernel has built-in ataraid support in which case you do not have to load ataraid module. As Linux Native RAID is recommended, let us discuss that in detail. To setup Linux Native RAID on an existing Linux machine, insert Append Line into /etc/lilo.conf as explained above. Now, activate changes by typing /sbin/lilo. Then reboot your computer. After your computers reboots, load ataraid module manually if your kernel does not have ataraid built-in support or ataraid.o module failed to load for some reason. If you compiled your kernel with static ataraid support (ataraid not as module), then you can start formatting and using your mirror disk /dev/ataraid/d0 right away. But if you compile ataraid as a seperate module, then type lsmod and see ataraid is listed. If not, manually load it by typing modprobe -k ataraid. If you dont see any errors, then you can start using your mirror disk /dev/ataraid/d0 right away. Format it, mount it and use it just like you normally do. The fact that you can use /dev/ataraid/d0 implies that you are successful in your mission. Please do not access /dev/hde, /dev/hdg or any of their partitions directly, although Linux will let you do that. Once you make a mirror device from two disks, you should always access the mirror device and not the disks directly. 8. Upgrading KernelRead this section carefully before you plan to upgrade kernel on your Linux machine with Promise FastTrack RAID. Unless you are not using Promise FastTrack at all in any way, you need this information to avoid problems. Always backup your data before kernel upgrade. Also backup /etc/fstab, /etc/lilo.conf, /boot/vmlinuz-currentversion and /boot/initrd.img (if you use initrd). When you upgrade your kernel, do not delete old kernel or its dependent files in /boot and do not delete the lines corresponding to it in /etc/lilo.conf. If you upgrade kernel to say 2.4.19, just create another kernel section in /etc/lilo.conf. For example, add the following lines to /etc/lilo.conf:
Also, do not change default=linux line in /etc/lilo.conf unless and until you successfully can boot into your new kernel by typing linux-new at the boot: prompt (or highlighting linux-new in the menu, if you are using LILO in curses menu mode). Now lets discuss the actual process of upgrading kernel in the following four cases:
OS stands for "Operating System" or more specifically Red Hat Linux Operating System in our case. When you install Linux on mirrored partitions such as /dev/ataraid/d0p1 (or /dev/sda1 when using Promise Technology proprietary driver), you are said to have your OS on RAID mirror. If your Linux machine has only the main partitions such as / and /boot on RAID, it is also called (a case of) OS on RAID. Partitions created by user to make use of available free partitions such as /mydata1, /imp, /scratch are not part of Linux OS because Linux does not install any files into them by default when you install Linux or upgrade any standard Linux software package. Any data in such user partitions becomes user data or alternatively, non-OS data. It is a good idea to use only ext3 and swap file systems for OS partitions. For non-OS partitions, you can use other file systems such as ext2 and dos (if you have another operating system like Windows on the same Linux computer or if you just feel like you love dos so much). However, why do you want to use ext2 if you dont have to and you have a better choice of using ext3 for OS or non-OS partitions? 8.1. Promise Technology (ft) Driver with OS on RAID mirrorCurrently, Promise Technology supports Red Hat 7.2 and earlier versions only. Red Hat 7.2 uses kernel 2.4.7-10 by default. Also note that, you have to use initrd.img (Initial RAM disk image) in /etc/lilo.conf, when you install Linux with Promise supplied driver. At the time of installation, Promise Driver scripts are supposed to automatically generate initrd file and configure /etc/lilo.conf for you. Unfortunately, this does not work properly and you may have to manually create initrd.img and configure /etc/lilo.conf yourself. You are stuck with the default kernel 2.4.7-10 and you cannot and should not upgrade kernel either by compiling or by automatic update programs such as up2date or rpm utility. If you really really want to upgrade kernel then do so but do not use raid. You can add Append Line to the /etc/lilo.conf as explained in Section 7.2 and do not load ataraid module (or do not compile your new kernel with ataraid feature built-in). By doing this, you are upgrading kernel to new version and sacrificing RAID feature because you are using Promise Technology card as a simple IDE extension card. If Promise Technology releases new version of their ft driver for 2.4.19 in future, you can then upgrade your kernel first to 2.4.19 (using up2date or rpm but not by manually compiling) and place their new version of ft.o file in /lib/modules/kernel-2.4.19. You will also have to put initrd-2.4.19 in /boot and append initrd= line to the new kernel section in /etc/lilo.conf. If your Linux machine uses Promise Technology driver, your OS is on RAID mirror and Promise Technology did not release any new versions for new kernel versions, please do not fool around with your current kernel. If you do fool around, remember that you can seriously damage your computer and not be able to boot or retrieve your data. 8.2. Promise Technology (ft) Driver with non-OS data on RAID mirrorAlmost all of explanation in previous case (Promise Technology (ft) Driver with OS on RAID mirror) applies in this also, ofcourse you are now risking non-OS data instead of OS. That means, if your upgrade fails, you will be able to boot but not be able to see data in your RAID partitions. Additionally, you have the flexibility of loading and unloading Promise Proprietary driver (ft.o). However, this is not guaranteed to work smoothly because Promise Technology driver has a lot of issues. Unless Promise Technology releases appropriate drivers for new kernel version, please do not attempt kernel upgrade in any method. You are stuck with 2.4.7-10 kernel. You may be required to add Append Line as discussed in Section 7.2 to boot your computer in some cases. 8.3. Linux Native (ataraid) Driver with OS on RAID mirrorYou can upgrade kernel to any version above 2.4.18 by recompiling the kernel and not by any automatic upgrade method such as up2date or rpm utility. You need .config file from your previous kernel source directory (/usr/src/linux-2.4.18/.config). You did save your 2.4.18 .config file, did't you? After you copy .config into /usr/src/linux-2.4.19 directory, you may make changes by typing make menuconfig but generally you do not need to make changes because you are upgrading only to 2.4.19 and your machine hardware did not change. But if you do make changes by typing make menuconfig, remember to save and also backup your modified .config file. Save the .config file safely in /root or on a floppy disk. Here are the steps:
8.4. Linux Native (ataraid) Driver with non-OS data on RAID mirrorTo upgrade kernel in this case, follow same procedure as explained in previous section (Linux Native (ataraid) Driver with OS on RAID mirror). If you experience problems, you may be required to add an additional line, Append Line, to your /etc/lilo.conf. To find out what your Append Line is, see Section 7.2. Similar to previous case, do not attempt to upgrade kernel by any automatic method (up2date or rpm utility). Manually compile and your install your new kernel as explained in the previous section. 9. Disabling RAID feature on Promise FastTrackIf you are reading this section, then you may be sick and tired of the fake RAID feature (formally known as quasi-hardware RAID) provided by Promise Technology FastTrack card or onboard chip on your motherboard. 9.1. Case 1: OS not using RAIDIt is possible to disable the RAID feature and use the Promise FastTrack as a plain vanilla IDE card. It is very simple. Follow the below steps:
Now you should see your hard disks seperately and you can use them. If you previously had partitions on the RAID mirror, you will see partitions accordingly on each of the two member disks. You will also see the data that you previously stored on the RAID mirror. 9.2. Case 2: OS is using RAIDIf you want to disable RAID on a Linux computer that is using RAID mirror partitions for /, /boot, /usr etc., then first backup your data including /usr/src/linux/.config, /etc/fstab, /boot/vmlinux. Power off your computer. Then turn it on. At the boot: prompt, type linux followed by Append Line. If your system does not boot successfully, then insert your emergency rescue/boot floppy disk, boot off of that floppy disk and type at the boot: prompt linux followed by Append Line. If you still cannot boot, then you cannot disable RAID non-destructively, which means you have to boot off of the RedHat CDROM #1 and re-install Linux, again by typing linux followed by Append Line at the boot: prompt. If your Linux machine boots successfully, then first make sure that all data is available and clean. Make sure that files in /boot are not corrupt. In some cases, the ASCII configuration files in /boot and LILO binary files may be corrupt. If that happens, you have to restore them from backup or reconfigure /etc/lilo.conf, run /sbin/lilo and recompile and reinstall the kernel (recompile with unmodified .config, i.e., without Promise RAID support). If your Linux machine boots up and all files are safe, then add Append Line to /etc/lilo.conf, run /sbin/lilo and reboot. If you disabled RAID on OS disks and then later changed your mind, then you have to back up data and reinstall Linux. If you change mind this way and want your RAID back on your Linux OS disks, you may have to sacrifice your current data. 10. Tips and Important Notes
11. For more informationFor more information, please check the following resources
A. How is this document generatedSo you want to know how I generated this HOWTO? Or, did you download SGML version of this document, modified some portions in it and now want to know how you can create HOWTO? I made sure there are no errors in my SGML by first typing the command nsgmls -s ataraid.sgml. I created a script called makehowto and ran the command ./makehowto ataraid.sgml. Here is the my makehowto script:
You can also just type ./makehowto ataraid.sgml pdf, for example, if you just want create PDF version. Just type ./makehowto to get more help on using the script. Click here to download this makehowto script. |