mirror of https://github.com/tLDP/LDP
1214 lines
34 KiB
Plaintext
1214 lines
34 KiB
Plaintext
<!doctype linuxdoc system>
|
|
|
|
<article>
|
|
|
|
<!-- Title information -->
|
|
<title>Boot + Root + Raid + Lilo : Software Raid mini-HOWTO
|
|
|
|
<author>Michael Robinton, <url url="mailto:michael@bizsystems.com"
|
|
name="Michael@BizSystems.com">
|
|
<date>v1.04, July 20, 2000
|
|
<!--
|
|
7-20-00 update links to reflect move to regular howto directory
|
|
5-4-00 update links to reflect document name on LINUX DOC PROJECT
|
|
|
|
-->
|
|
<abstract>
|
|
This document provides a cookbook for setting up root raid using the
|
|
0.90 raidtools for bootable raid mounted on root using standard LILO.
|
|
|
|
Also covered is the conversion of a conventional disk to a raid1 or raid5
|
|
mirror set without the loss of data on the original disk.
|
|
</abstract>
|
|
<!-- Table of contents -->
|
|
<toc>
|
|
|
|
<sect>Introduction
|
|
|
|
<p>
|
|
<sect1>Acknowledgements
|
|
|
|
<p>
|
|
The essence of the information I've put together here was originally provided by
|
|
Harald Nordgård-Hansen <tt/</<url url="mailto:hnh@bukharin.hiof.no"
|
|
name="hnh@bukharin.hiof.no"><tt/>/ and posted to the raid
|
|
mail list in a lilo.conf file with commentary by Martin Bene <tt/</<url
|
|
url="mailto:mb@sime.com"
|
|
name="mb@sime.com"><tt/>/. Many thanks for your contribution. I've tried to
|
|
put this information and the helpful work of many others who contribute to
|
|
the raid mail list and linux raid project into a <bf/COOKBOOK/ form,
|
|
including many examples from real systems so that bootable
|
|
root raid is easy to set up and understand. One section is devoted to the
|
|
conversion of a standard single drive system to RAID. The key to the
|
|
conversion, in my humble opinion, is the understanding of bootable root
|
|
raid.
|
|
|
|
<sect1>Bugs
|
|
<p>
|
|
Yes, I'm sure there are some. If you'd be good enough to report them, I will
|
|
correct the document. ;-)
|
|
|
|
<sect1>Copyright Notice
|
|
|
|
<p>
|
|
This document is GNU copyleft by Michael Robinton
|
|
<url url="mailto:michael@bizsystems.com" name="Michael@BizSystems.com">.
|
|
<p>
|
|
Permission to use, copy, distribute this document for any
|
|
purpose is hereby granted, provided that the author's / editor's
|
|
name and this notice appear in all copies and/or supporting
|
|
documents; and that an unmodified version of this document is
|
|
made freely available. This document is distributed in the hope
|
|
that it will be useful, but WITHOUT ANY WARRANTY, either
|
|
expressed or implied. While every effort has been taken to
|
|
ensure the accuracy of the information documented herein, the
|
|
author / editor / maintainer assumes NO RESPONSIBILITY for any
|
|
errors, or for any damages, direct or consequential, as a result
|
|
of the use of the information documented herein.
|
|
|
|
|
|
<sect>What you need BEFORE YOU START
|
|
|
|
<p>
|
|
The packages you need and the documentation that answers the most common
|
|
questions about setting up and running raid are listed below. Please review
|
|
them throughly.
|
|
|
|
<sect1>Required Packages
|
|
|
|
<p>
|
|
You need to obtain the most recent versions of these packages.
|
|
<itemize>
|
|
<item>a linux kernel that supports raid, initrd
|
|
<quote> I used <url name="linux-2.2.14"
|
|
url="ftp://ftp.kernel.org/pub/linux/kernel/v2.2/">
|
|
from kernel.org</quote>
|
|
<item><url name="ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/"
|
|
url="ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/">
|
|
the most recent tools and patch that adds support for modern raid1/4/5
|
|
<quote> I used <url name="http://people.redhat.com/mingo/raid-patches/"
|
|
url="http://people.redhat.com/mingo/raid-patches/raid-2.2.14-B1"></quote>
|
|
</itemize>
|
|
|
|
<sect1>Where to get Up-to-date copies of this document.
|
|
<p>
|
|
Click here to browse the <url
|
|
url="ftp://ftp.bizsystems.net/pub/raid/Boot+Root+Raid+LILO.html"
|
|
name="author's latest version"> of
|
|
this document. Corrections and suggestions welcome!
|
|
<p>
|
|
Boot Root Raid + LILO HOWTO
|
|
<p>
|
|
Available in LaTeX (for DVI and PostScript), plain text, and HTML.
|
|
<quote> <url
|
|
url="http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html"
|
|
name=" http://www.linuxdoc.org/HOWTO/Boot+Root+Raid+LILO.html">
|
|
</quote>
|
|
Available in SGML and HTML.
|
|
<quote> <url url="ftp://ftp.bizsystems.net/pub/raid/"
|
|
name="ftp.bizsystems.net/pub/raid/">
|
|
</quote>
|
|
|
|
<sect1>Documentation -- Recommended Reading
|
|
|
|
<p>
|
|
<bf>If you plan on using raid1/5 over raid0, please read:</bf>
|
|
<quote><bf>/usr/src/linux/Documentation/initrd.txt</bf></quote>
|
|
|
|
<p>
|
|
as well as the documentation and man pages that accompany
|
|
the raidtools set.
|
|
|
|
<p>
|
|
and..... <url name="Software-RAID-HOWTO.html"
|
|
url="http://metalab.unc.edu/mdw/HOWTO/Software-RAID-HOWTO.html">
|
|
|
|
<sect1>RAID resources
|
|
|
|
<p>
|
|
Mailing lists can be joined at:
|
|
<itemize>
|
|
<item>This one seems quiet: <url name="majordomo@nuclecu.unam.mx"
|
|
url="mailto:majordomo@nuclecu.unam.mx"><it> send a message to</it>
|
|
<bf/subscribe raiddev/<p>
|
|
send mail to: <url name="raiddev@nuclecu.unam.mx"
|
|
url="mailto:raiddev@nuclecu.unam.mx">
|
|
<p>
|
|
<item>Raid development: <url name="majordomo@vger.rutgers.edu"
|
|
url="mailto:majordomo@vger.rutgers.edu"><it> send a message to</it>
|
|
<bf/subscribe linux-raid/<p>
|
|
send mail to: <url name="linux-raid@vger.rutgers.edu"
|
|
url="mailto:linux-raid@vger.rutgers.edu">
|
|
<it>(this seems to be the most active list)</it>
|
|
</itemize>
|
|
|
|
|
|
<sect>Bootable Raid
|
|
|
|
<p>
|
|
I'm not going to cover the fundamentals of setting up raid0/1/5 on
|
|
Linux, that is covered in detail elsewhere. The problem I will address is
|
|
setting up raid on root and making it bootable with <bf/standard/ LILO. The
|
|
documentation that comes with the LILO sources (not the man pages) and with
|
|
the raidtools-0.90, covers the details of booting and boot parameters as
|
|
well as general raid setup - respectively.
|
|
|
|
<p>
|
|
There are two scenarios which are covered here. Set up of bootable root raid
|
|
and the conversion of an existing non-raid system to bootable root raid
|
|
without data loss.
|
|
|
|
<sect1>Booting RAID 1 with standard LILO
|
|
|
|
<p>
|
|
To make the boot information redundant and easy to maintain, set up a small
|
|
RAID1 and mount it on the <bf>/boot</bf> directory of your
|
|
system disk. LILO does not know about device 0x9?? and can not find the
|
|
information at boot time because the raid sub system is not active
|
|
then. As a simple work around, you can pass LILO the geometry information of
|
|
the drive(s) and from that, LILO can determine the position of the information
|
|
needed to load the kernel even though it is on the RAID1 partition. This is
|
|
because the RAID1 partition is the same as a standard partition but with a
|
|
raid super-block written at the end. The boot raid set should fall with
|
|
the first 1024
|
|
mbytes of the disk drive. In theory the start of the raid partition could
|
|
fall anywhere in the 1024 megs, but in practice I was unable to get it to
|
|
work unless the boot-raid started at the first block of the set. This is
|
|
probably because of something dumb that I did, but it was not worth
|
|
following up at the time. Since then I've simply set up all my systems with
|
|
the boot-raid set as the first partition. I have root raid system configurations
|
|
with bootable RAID1 mounted on <bf>/boot</bf> with root raid sets as
|
|
follows: RAID1, RAID5, RAID10 & RAID1-10 ( 1 mirror + 1 raid0 set).
|
|
The last has a very peculiar lilo file pair since none of the disk geometries
|
|
are the same, however, the principals are the same for the initial boot
|
|
process. The RAID10 and RAID1-10 root mounts require the use of
|
|
<it>initrd</it> to mount root after the boot process has taken place.
|
|
See the appendices for the configuration files for all of these example
|
|
systems.
|
|
|
|
<p>
|
|
A conventional LILO config file stripped down looks like this:
|
|
|
|
<verb>
|
|
# lilo.conf - assumes drive less than 1024
|
|
boot = /dev/hda
|
|
delay = 40 # extra, but nice
|
|
vga = normal # not normally needed
|
|
image = /bzImage
|
|
root = /dev/hda1
|
|
read-only
|
|
label = Linux
|
|
</verb>
|
|
|
|
<p>
|
|
A raid LILO config file pair would look like this:
|
|
|
|
<verb>
|
|
# lilo.conf.hda - primary ide master
|
|
disk=/dev/md0
|
|
bios=0x80
|
|
sectors=63
|
|
heads=16
|
|
cylinders=39770
|
|
partition=/dev/md1
|
|
start=63
|
|
boot=/dev/hda
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
read-only
|
|
label=LinuxRaid
|
|
|
|
# ---------------------
|
|
|
|
# lilo.conf.hdc - secondary ide master
|
|
disk=/dev/md0
|
|
bios=0x80 # see note below
|
|
sectors=63
|
|
heads=16
|
|
cylinders=39770
|
|
partition=/dev/md1
|
|
start=63
|
|
boot=/dev/hdc # this is the other disk
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
read-only
|
|
label=LinuxRaid
|
|
</verb>
|
|
|
|
# BIOS=line -- if your bios is smart enough (most are not) to detect that
|
|
that the first disk is missing or failed and will automatically boot from the second disk,
|
|
then <bf>bios=81</bf> would be the appropriate entry here. This is more
|
|
common with SCSI bios than IDE bios. I simply plan on relocating the drive
|
|
so it will replace the dead drive C: in the event of failure of the primary
|
|
boot drive.
|
|
|
|
<p>
|
|
The geometry information for the drive can be obtained from fdisk with the
|
|
command:
|
|
|
|
<verb>
|
|
fdisk -ul (little L)
|
|
fdisk -ul /dev/hda
|
|
|
|
Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hda1 63 33263 16600+ fd Linux raid autodetect
|
|
/dev/hda2 33264 443519 205128 82 Linux swap
|
|
/dev/hda3 443520 40088159 19822320 fd Linux raid autodetect
|
|
|
|
* note the listing of the START of each partition
|
|
</verb>
|
|
|
|
<sect1>Detailed explaination of lilo.conf for raid boot
|
|
|
|
<p>
|
|
The raid lilo.conf file above, commented in detail for each entry.
|
|
|
|
<verb>
|
|
# lilo.conf.hda - primary ide master
|
|
# the location of the /boot directory that will be
|
|
# designated below as containing the kernel, map, etc...
|
|
# note that this is NOT the actual partition containing
|
|
# the boot image and info, but rather the device
|
|
# that logically contains this directory.
|
|
# in this example, /dev/md1 is mounted on /dev/md0/boot
|
|
disk=/dev/md0
|
|
|
|
# tell LILO which bios device to use for boot, i.e. C: drive
|
|
bios=0x80
|
|
|
|
# tell LILO the geometry of the device
|
|
# this is usually but not always the "logical"
|
|
# geometry. Check the /proc file system or watch
|
|
# the boot messages when the kernel probes for the drive
|
|
#
|
|
sectors=63
|
|
heads=16
|
|
cylinders=39770
|
|
|
|
# this is a dummy entry to make LILO happy so it
|
|
# will recognize the raid set 0x9?? and then find
|
|
# the START of the boot sector. To really see
|
|
# what this was for, read the documentation
|
|
# that comes with the LILO source distribution.
|
|
# This parameter "must" be different than the
|
|
# disk= entry above. It can be any other mdx
|
|
# device, used or unused and need not be the one
|
|
# that contains the /boot information
|
|
#
|
|
partition=/dev/md1
|
|
|
|
# the first sector of the partition containing /boot information
|
|
start=63
|
|
|
|
# the real device that LILO will write the boot information to
|
|
boot=/dev/hda
|
|
|
|
# logically where LILO will put the boot information
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
# logically where lilo will find the kernel image
|
|
image=/boot/bzImage
|
|
|
|
# standard stuff after this
|
|
# root may be a raid1/4/5 device
|
|
root=/dev/md0
|
|
read-only
|
|
label=LinuxRaid
|
|
</verb>
|
|
|
|
<sect>Upgrading from non-raid to RAID1/4/5
|
|
|
|
<p>
|
|
Upgrading a non-raid system to raid is fairly easy and consists
|
|
of several discrete steps described below. The description is for a system
|
|
with a boot partition, root partition and swap partition.
|
|
<verb>
|
|
OLD disk in the existing system:
|
|
|
|
/dev/hda1 boot, may be dos+lodlin or lilo
|
|
/dev/hda2 root
|
|
/dev/hda3 swap
|
|
</verb>
|
|
We will add an additional disk and convert the entire system to RAID1. You
|
|
could easily add several disks and make a RAID5 set instead using the same
|
|
procedure.
|
|
|
|
<sect1>Step 1 - prepare a new kernel
|
|
|
|
<p>
|
|
Download a clean kernel, raidtools-0.90 (or the most recent version), and
|
|
the kernel patch to upgrade the kernel to 0.90 raid.
|
|
<p>
|
|
Compile and install the raidtools and READ the documentation.
|
|
<p>
|
|
Compile and install the
|
|
kernel to support all the flavors (0/1/4/5 ?) of raid that you will be using.
|
|
Make sure to specify autostart of raid devices in the kernel configuration.
|
|
Test that the kernel boots properly and examine /proc/mdstat to see
|
|
that the raid flavors you will use are supported by the new kernel.
|
|
|
|
<sect1>Step 2 - set up raidtab for your new raid.
|
|
|
|
<p>
|
|
The new disk will be added to an additional IDE controller as the master
|
|
device, thus becomming /dev/hdc
|
|
|
|
<verb>
|
|
/dev/hdc1 16megs -- more than enough for several kernel images
|
|
/dev/hdc2 most of the disk
|
|
/dev/hdc3 some more swap space, if needed. otherwise add to hdc2
|
|
</verb>
|
|
|
|
Change the partition types for /dev/hdc1 and /dev/hdc2 to "fd" for
|
|
raid-autostart.
|
|
<p>
|
|
Using the <bf/failed-disk/ parameter, create a raidtab for
|
|
the desired RAID1 configuration. The failed disk must be the last
|
|
entry in the table.
|
|
<p>
|
|
<verb>
|
|
# example raidtab
|
|
# md0 is the root array
|
|
raiddev /dev/md0
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
chunk-size 32
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
persistent-superblock 1
|
|
device /dev/hdc2
|
|
raid-disk 0
|
|
# this is our old disk, mark as failed for now
|
|
device /dev/hda2
|
|
failed-disk 1
|
|
|
|
# md1 is the /boot array
|
|
raiddev /dev/md1
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
chunk-size 32
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
persistent-superblock 1
|
|
device /dev/hdc1
|
|
raid-disk 0
|
|
# boot is marked failed as well
|
|
device /dev/hda1
|
|
failed-disk 1
|
|
</verb>
|
|
|
|
<sect1>Create, format, and configure RAID
|
|
|
|
<p>
|
|
Create the md devices with the commands:
|
|
<verb>
|
|
mkraid /dev/md0
|
|
mkraid /dev/md1
|
|
</verb>
|
|
|
|
The raid devices should be created and start. Examination of /proc/mdstat
|
|
should show the raid personalities in the kernel and the raid devices
|
|
running.
|
|
<p>
|
|
Format the boot and root devices with:
|
|
<verb>
|
|
mke2fs /dev/md0
|
|
mke2fs /dev/md1
|
|
</verb>
|
|
Mount the new root device somewhere handy and create the /boot directory and
|
|
mount the boot partition.
|
|
<verb>
|
|
mount /dev/md0 /mnt
|
|
mkdir /mnt/boot
|
|
mount /dev/md1 /mnt/boot
|
|
</verb>
|
|
|
|
<sect1>Copy the current OS to the new raid device
|
|
|
|
<p>
|
|
This is pretty straightforward.
|
|
<verb>
|
|
cd /
|
|
# set up a batch file to do this
|
|
cp -a /bin /mnt
|
|
cp -a /dev /mnt
|
|
cp -a /etc /mnt
|
|
cp -a (all directories except /mnt, /proc, and nsf mounts) /mnt
|
|
</verb>
|
|
This operation can be tricky if you have mounted or linked other disks to
|
|
your root file system. The example above assumes a very simple system, you
|
|
may have to modify the procedure somewhat.
|
|
|
|
<sect1>Test your new RAID
|
|
|
|
<p>
|
|
Make a boot floppy and rdev the kernel.
|
|
|
|
<verb>
|
|
dd if=kernal.image of=/dev/fd0 bs=2k
|
|
rdev /dev/fd0 /dev/md0
|
|
rdev -r /dev/fd0 0
|
|
rdev -R /dev/fd0 1
|
|
</verb>
|
|
|
|
Modify the fstab on the RAID device to reflect the new mount points as
|
|
follows:
|
|
<verb>
|
|
/dev/md0 / ext2 defaults 1 1
|
|
/dev/md1 /boot ext2 defaults 1 1
|
|
</verb>
|
|
|
|
Dismount the raid devices and boot the new file system to see that all works
|
|
correctly.
|
|
|
|
<verb>
|
|
umount /mnt/boot
|
|
umount /mnt
|
|
raidstop /dev/md0
|
|
raidstop /dev/md1
|
|
shutdown -r now
|
|
</verb>
|
|
|
|
Your RAID system should now be up and running in degraded mode with a floppy
|
|
boot disk. Carefully check that you transferred everything to the new raid
|
|
system. If you mess up here without a backup, YOU ARE DEAD!
|
|
<p>
|
|
If something did not work, reboot your old system and go back and fix things
|
|
up until you successfully complete this step.
|
|
|
|
<sect1>Integrate old disk into raid array
|
|
|
|
<p>
|
|
Success in the previous step means that the raid array is now operational,
|
|
but without redundancy. We must now re-partition the old drive(s) to fit
|
|
into the new raid array. Remember that if the geometries are not the same,
|
|
the partition size on the old drive must be the same or larger than the
|
|
raid partitions or they can not be added to the raid set.
|
|
<p>
|
|
Re-partition the old drive as required. Example:
|
|
<verb>
|
|
/dev/hda1 same or larger than /dev/hdc1
|
|
/dev/hda2 same or larger than /dev/hdc2
|
|
/dev/hda3 anything left over for swap or whatever...
|
|
</verb>
|
|
|
|
Change the <bf/failed-disk/ parameter in the raidtab to <bf/raid-disk/ and
|
|
hot add the new (old) disk partitions to the raid array.
|
|
<verb>
|
|
raidhotadd /dev/md1 /dev/hda1
|
|
raidhotadd /dev/md0 /dev/hda2
|
|
</verb>
|
|
Examining /proc/mdstat should show one or more of the raid devices
|
|
reconstructing the data for the new partitions. After a minute or two...
|
|
or so, the raid arrays should be fully synchronized
|
|
(this could take a while for a large
|
|
partition).
|
|
|
|
<p>
|
|
Using the procedure described in the first sections of this document, set up
|
|
bootable raid on the new raid pair. Hang on to that boot floppy while
|
|
setting up and testing this last step.
|
|
|
|
<sect>Appendix A. - example raidtab
|
|
|
|
<p>
|
|
RAID1 example described in the first sections of this document
|
|
|
|
<verb>
|
|
df
|
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
|
/dev/md0 19510780 1763188 16756484 10% /
|
|
/dev/md1 15860 984 14051 7% /boot
|
|
|
|
# --------------------------
|
|
|
|
fdisk -ul /dev/hda
|
|
|
|
Disk /dev/hda: 16 heads, 63 sectors, 39770 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hda1 63 33263 16600+ fd Linux raid autodetect
|
|
/dev/hda2 33264 443519 205128 83 Linux native
|
|
/dev/hda3 443520 40088159 19822320 fd Linux raid autodetect
|
|
|
|
# --------------------------
|
|
|
|
fdisk -ul /dev/hdc
|
|
|
|
Disk /dev/hdc: 16 heads, 63 sectors, 39770 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdc1 63 33263 16600+ fd Linux raid autodetect
|
|
/dev/hdc2 33264 443519 205128 82 Linux swap
|
|
/dev/hdc3 443520 40088159 19822320 fd Linux raid autodetect
|
|
|
|
# --------------------------
|
|
|
|
# md0 is the root array, about 20 gigs
|
|
raiddev /dev/md0
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
chunk-size 32
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
persistent-superblock 1
|
|
device /dev/hda3
|
|
raid-disk 0
|
|
device /dev/hdc3
|
|
raid-disk 1
|
|
|
|
# md1 is the /boot array, about 16 megs
|
|
raiddev /dev/md1
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
chunk-size 32
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
persistent-superblock 1
|
|
device /dev/hda1
|
|
raid-disk 0
|
|
device /dev/hdc1
|
|
raid-disk 1
|
|
|
|
# --------------------------
|
|
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md0
|
|
# geometry
|
|
bios=0x80
|
|
sectors=63
|
|
heads=16
|
|
cylinders=39770
|
|
# dummy
|
|
partition=/dev/md1
|
|
# start of device "disk" above
|
|
start=63
|
|
|
|
boot=/dev/hda
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
label=LinuxRaid
|
|
read-only
|
|
|
|
# -------------------------
|
|
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md0
|
|
# geometry
|
|
bios=0x80
|
|
sectors=63
|
|
heads=16
|
|
cylinders=39770
|
|
# dummy
|
|
partition=/dev/md1
|
|
# start of device "disk" above
|
|
start=63
|
|
|
|
boot=/dev/hdc
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
label=LinuxRaid
|
|
read-only
|
|
</verb>
|
|
|
|
<sect>Appendix B. - SCSI reference implementation RAID5
|
|
|
|
<p>
|
|
4 disk SCSI RAID5
|
|
<verb>
|
|
df
|
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
|
/dev/md0 11753770 2146076 9000678 19% /
|
|
/dev/md1 15739 885 14042 6% /boot
|
|
|
|
# --------------------------
|
|
|
|
fdisk -ul /dev/sda
|
|
|
|
Disk /dev/sda: 64 heads, 32 sectors, 4095 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/sda1 32 32767 16368 fd Linux raid autodetect
|
|
/dev/sda2 32768 292863 130048 5 Extended
|
|
/dev/sda3 292864 8386559 4046848 fd Linux raid autodetect
|
|
/dev/sda5 32800 260095 113648 82 Linux swap
|
|
/dev/sda6 260128 292863 16368 83 Linux native - test
|
|
|
|
# ------------------------
|
|
|
|
fdisk -ul /dev/sdb
|
|
|
|
Disk /dev/sdb: 64 heads, 32 sectors, 4095 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/sdb1 32 32767 16368 fd Linux raid autodetect
|
|
/dev/sdb2 32768 292863 130048 5 Extended
|
|
/dev/sdb3 292864 8386559 4046848 fd Linux raid autodetect
|
|
/dev/sdb5 32800 260095 113648 82 Linux swap
|
|
/dev/sdb6 260128 292863 16368 83 Linux native - test
|
|
|
|
# ------------------------
|
|
|
|
# fdisk -ul /dev/sdc
|
|
|
|
Disk /dev/sdc: 64 heads, 32 sectors, 4095 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/sdc2 32 292863 146416 5 Extended
|
|
/dev/sdc3 292864 8386559 4046848 fd Linux raid autodetect
|
|
/dev/sdc5 64 260095 130016 83 Linux native - development
|
|
/dev/sdc6 260128 292863 16368 83 Linux native - test
|
|
|
|
# ------------------------
|
|
|
|
fdisk -ul /dev/sdd
|
|
|
|
Disk /dev/sdd: 64 heads, 32 sectors, 4095 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/sdd2 32 292863 146416 5 Extended
|
|
/dev/sdd3 292864 8386559 4046848 fd Linux raid autodetect
|
|
/dev/sdd5 64 260095 130016 83 Linux native - development
|
|
/dev/sdd6 260128 292863 16368 83 Linux native - test
|
|
|
|
# --------------------------
|
|
|
|
# raidtab
|
|
#
|
|
raiddev /dev/md0
|
|
raid-level 5
|
|
nr-raid-disks 4
|
|
persistent-superblock 1
|
|
chunk-size 32
|
|
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
device /dev/sda3
|
|
raid-disk 0
|
|
device /dev/sdb3
|
|
raid-disk 1
|
|
device /dev/sdc3
|
|
raid-disk 2
|
|
device /dev/sdd3
|
|
raid-disk 3
|
|
|
|
# boot partition
|
|
#
|
|
raiddev /dev/md1
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 32
|
|
|
|
# Spare disks for hot reconstruction
|
|
nr-spare-disks 0
|
|
device /dev/sda1
|
|
raid-disk 0
|
|
device /dev/sdb1
|
|
raid-disk 1
|
|
|
|
# --------------------------
|
|
|
|
# cat lilo.conf.sda
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md0
|
|
# geometry
|
|
bios=0x80
|
|
sectors=32
|
|
heads=64
|
|
cylinders=4095
|
|
# dummy
|
|
partition=/dev/md1
|
|
# start of device "disk" above
|
|
start=32
|
|
|
|
boot=/dev/sda
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
label=LinuxRaid
|
|
read-only
|
|
|
|
# ------------------------
|
|
# cat lilo.conf.sdb
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md0
|
|
# geometry
|
|
bios=0x80
|
|
sectors=32
|
|
heads=64
|
|
cylinders=4095
|
|
# dummy
|
|
partition=/dev/md1
|
|
# start of device "disk" above
|
|
start=32
|
|
|
|
boot=/dev/sdb
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
image=/boot/bzImage
|
|
root=/dev/md0
|
|
label=LinuxRaid
|
|
read-only
|
|
</verb>
|
|
|
|
<sect>Appendix C. - ide RAID10 with initrd
|
|
|
|
<p>
|
|
RAID1 over striped RAID0 pair.... the disks in the RAID0 sets are not
|
|
quite the same size, but close enough.
|
|
|
|
<verb>
|
|
/dev/md0 is the /boot partition and is autostarted by the kernel
|
|
/dev/md1 and /dev/md3 are the two RAID0 sets autostarted by the kernel
|
|
/dev/md2 is the root partition and is started by initrd
|
|
|
|
df
|
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
|
/dev/md2 118531 76485 35925 68% /
|
|
/dev/md0 1917 1361 457 75% /boot
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hda
|
|
|
|
Disk /dev/hda: 4 heads, 46 sectors, 903 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hda1 46 4231 2093 fd Linux raid autodetect
|
|
/dev/hda2 4232 166151 80960 fd Linux raid autodetect
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hdb
|
|
|
|
Disk /dev/hdb: 5 heads, 17 sectors, 981 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdb1 17 83384 41684 fd Linux raid autodetect
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hdc
|
|
|
|
Disk /dev/hdc: 7 heads, 17 sectors, 1024 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdc1 17 84013 41998+ fd Linux raid autodetect
|
|
/dev/hdc2 84014 121855 18921 82 Linux swap
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hdd
|
|
|
|
Disk /dev/hdd: 4 heads, 46 sectors, 903 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdd1 46 4231 2093 fd Linux raid autodetect
|
|
/dev/hdd2 4232 166151 80960 fd Linux raid autodetect
|
|
|
|
# ----------------------------
|
|
|
|
# raidtab
|
|
#
|
|
raiddev /dev/md0
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/hda1
|
|
raid-disk 0
|
|
device /dev/hdd1
|
|
raid-disk 1
|
|
|
|
raiddev /dev/md1
|
|
raid-level 0
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/hdd2
|
|
raid-disk 0
|
|
device /dev/hdb1
|
|
raid-disk 1
|
|
|
|
raiddev /dev/md2
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/md1
|
|
raid-disk 0
|
|
device /dev/md3
|
|
raid-disk 1
|
|
|
|
raiddev /dev/md3
|
|
raid-level 0
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/hda2
|
|
raid-disk 0
|
|
device /dev/hdc1
|
|
raid-disk 1
|
|
|
|
# ----------------------------
|
|
|
|
contents of linuxrc
|
|
|
|
cat linuxrc
|
|
#!/bin/sh
|
|
# ver 1.02 2-22-00
|
|
#
|
|
############# really BEGIN 'linuxrc' ###############
|
|
#
|
|
# mount the proc file system
|
|
/bin/mount /proc
|
|
|
|
# start raid 1 made of raid 0's
|
|
/bin/raidstart /dev/md2
|
|
|
|
# tell the console what's happening
|
|
/bin/cat /proc/mdstat
|
|
|
|
# Everything is fine, let the kernel mount /dev/md2
|
|
# tell the kernel to switch to /dev/md2 as the /root device
|
|
# The 0x900 value is the device number calculated by:
|
|
# 256*major_device_number + minor_device number
|
|
echo "/dev/md2 mounted on root"
|
|
echo 0x902>/proc/sys/kernel/real-root-dev
|
|
|
|
# umount /proc to deallocate initrd device ram space
|
|
/bin/umount /proc
|
|
exit
|
|
|
|
# ----------------------------
|
|
|
|
contents of initrd
|
|
|
|
./bin/ash
|
|
./bin/echo
|
|
./bin/raidstart
|
|
./bin/mount
|
|
./bin/umount
|
|
./bin/cat
|
|
./bin/sh
|
|
./dev/tty1
|
|
./dev/md0
|
|
./dev/md1
|
|
./dev/md2
|
|
./dev/md3
|
|
./dev/md4
|
|
./dev/console
|
|
./dev/hda
|
|
./dev/hda1
|
|
./dev/hda2
|
|
./dev/hda3
|
|
./dev/hdb
|
|
./dev/hdb1
|
|
./dev/hdb2
|
|
./dev/hdb3
|
|
./dev/hdc
|
|
./dev/hdc1
|
|
./dev/hdc2
|
|
./dev/hdc3
|
|
./dev/hdd
|
|
./dev/hdd1
|
|
./dev/hdd2
|
|
./dev/hdd3
|
|
./dev/initrd
|
|
./dev/ram0
|
|
./dev/ram1
|
|
./dev/ram2
|
|
./dev/ram3
|
|
./dev/ram4
|
|
./dev/ram5
|
|
./dev/ram6
|
|
./dev/ram7
|
|
./etc/raidtab
|
|
./etc/fstab
|
|
./lib/ld-2.1.2.so
|
|
./lib/ld-linux.so.1
|
|
./lib/ld-linux.so.1.9.9
|
|
./lib/ld-linux.so.2
|
|
./lib/ld.so
|
|
./lib/libc-2.1.2.so
|
|
./lib/libc.so.6
|
|
./linuxrc
|
|
./proc
|
|
</verb>
|
|
<sect>Appendix D. - ide RAID1-10 with initrd
|
|
|
|
<p>
|
|
This is a system made up of an assortment of odds and ends. The root mounted
|
|
raid device is comprised of a RAID1 made up of one RAID0 array from odd
|
|
sized disks and a larger regular disk partition.
|
|
Examination of the lilo.conf files may give you better insight
|
|
into the reasoning behind the various parameters.
|
|
|
|
<verb>
|
|
/dev/md0 is the /boot partition and is autostarted by the kernel
|
|
/dev/md1 is one half of the mirror set for md2, autostarted by kernel
|
|
/dev/hda3 is the other half of the mirror set for md2
|
|
/dev/md2 is the RAID1 /dev/md1 + /dev/hda3, started by initrd
|
|
|
|
df
|
|
Filesystem 1k-blocks Used Available Use% Mounted on
|
|
/dev/md2 138381 74421 56815 57% /
|
|
/dev/md0 2011 1360 549 71% /boot
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hda
|
|
|
|
Disk /dev/hda: 8 heads, 46 sectors, 903 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hda1 46 4415 2185 fd Linux raid autodetect
|
|
/dev/hda2 4416 43423 19504 82 Linux swap
|
|
/dev/hda3 43424 332303 144440 83 Linux native
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hdc
|
|
|
|
Disk /dev/hdc: 8 heads, 39 sectors, 762 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdc1 39 4367 2164+ fd Linux raid autodetect
|
|
/dev/hdc2 4368 70199 32916 82 Linux swap
|
|
/dev/hdc3 70200 237743 83772 fd Linux raid autodetect
|
|
|
|
# ----------------------------
|
|
|
|
fdisk -ul /dev/hdd
|
|
|
|
Disk /dev/hdd: 4 heads, 39 sectors, 762 cylinders
|
|
Units = sectors of 1 * 512 bytes
|
|
|
|
Device Boot Start End Blocks Id System
|
|
/dev/hdd1 39 118871 59416+ fd Linux raid autodetect
|
|
|
|
# ----------------------------
|
|
|
|
# raidtab
|
|
#
|
|
raiddev /dev/md0
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/hdc1
|
|
raid-disk 1
|
|
device /dev/hda1
|
|
raid-disk 0
|
|
|
|
raiddev /dev/md1
|
|
raid-level 0
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/hdc3
|
|
raid-disk 0
|
|
device /dev/hdd1
|
|
raid-disk 1
|
|
|
|
raiddev /dev/md2
|
|
raid-level 1
|
|
nr-raid-disks 2
|
|
persistent-superblock 1
|
|
chunk-size 8
|
|
device /dev/md1
|
|
raid-disk 1
|
|
device /dev/hda3
|
|
raid-disk 0
|
|
|
|
# ----------------------------
|
|
|
|
cat linuxrc
|
|
#!/bin/sh
|
|
# ver 1.02 2-22-00
|
|
#
|
|
############# really BEGIN 'linuxrc' ###############
|
|
#
|
|
# mount the proc file system
|
|
/bin/mount /proc
|
|
|
|
# autostart /boot partition and raid0
|
|
/bin/raidstart /dev/md2
|
|
|
|
# tell the console what's happening
|
|
/bin/cat /proc/mdstat
|
|
|
|
# Everything is fine, let the kernel mount /dev/md2
|
|
# tell the kernel to switch to /dev/md2 as the /root device
|
|
# The 0x900 value is the device number calculated by:
|
|
# 256*major_device_number + minor_device number
|
|
echo "/dev/md2 mounted on root"
|
|
echo 0x902>/proc/sys/kernel/real-root-dev
|
|
|
|
# umount /proc to deallocate initrd device ram space
|
|
/bin/umount /proc
|
|
exit
|
|
|
|
# ----------------------------
|
|
|
|
contents of initrd.gz
|
|
|
|
./bin
|
|
./bin/ash
|
|
./bin/echo
|
|
./bin/raidstart
|
|
./bin/mount
|
|
./bin/umount
|
|
./bin/cat
|
|
./bin/sh
|
|
./dev/tty1
|
|
./dev/md0
|
|
./dev/md1
|
|
./dev/md2
|
|
./dev/md3
|
|
./dev/console
|
|
./dev/hda
|
|
./dev/hda1
|
|
./dev/hda2
|
|
./dev/hda3
|
|
./dev/hdc
|
|
./dev/hdc1
|
|
./dev/hdc2
|
|
./dev/hdc3
|
|
./dev/hdd
|
|
./dev/hdd1
|
|
./dev/hdd2
|
|
./dev/hdd3
|
|
./dev/initrd
|
|
./dev/ram0
|
|
./dev/ram1
|
|
./dev/ram2
|
|
./dev/ram3
|
|
./dev/ram4
|
|
./dev/ram5
|
|
./dev/ram6
|
|
./dev/ram7
|
|
./etc/raidtab
|
|
./etc/fstab
|
|
./lib/ld-2.1.2.so
|
|
./lib/ld-linux.so.1
|
|
./lib/ld-linux.so.1.9.9
|
|
./lib/ld-linux.so.2
|
|
./lib/ld.so
|
|
./lib/libc-2.1.2.so
|
|
./lib/libc.so.6
|
|
./linuxrc
|
|
./proc
|
|
|
|
# ----------------------------
|
|
|
|
cat lilo.conf.hda
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md2
|
|
# geometry
|
|
bios=0x80
|
|
cylinders=903
|
|
heads=8
|
|
sectors=46
|
|
# geometry for 2nd disk
|
|
# bios will be the same because it will have to be moved to hda
|
|
# cylinders=762
|
|
# heads=8
|
|
# sectors=39
|
|
|
|
# dummy
|
|
partition=/dev/md0
|
|
# start of device "disk" above
|
|
start=46
|
|
# second device
|
|
# start=39
|
|
|
|
# seem to have some trouble with 2.2.14 recognizing the right IRQ
|
|
append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"
|
|
|
|
boot=/dev/hda
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
initrd=/boot/initrd.gz
|
|
|
|
image=/boot/zImage
|
|
root=/dev/md2
|
|
label=LinuxRaid
|
|
read-only
|
|
|
|
# ----------------------------
|
|
|
|
cat lilo.conf.hdc
|
|
# GLOBAL SECTION
|
|
# device containing /boot directory
|
|
disk=/dev/md2
|
|
# geometry
|
|
bios=0x80
|
|
# cylinders=903
|
|
# heads=8
|
|
# sectors=46
|
|
# geometry for 2nd disk
|
|
# bios will be the same because it will have to be moved to hda
|
|
cylinders=762
|
|
heads=8
|
|
sectors=39
|
|
|
|
# dummy
|
|
partition=/dev/md0
|
|
# start of device "disk" above
|
|
# start=46
|
|
# second device
|
|
start=39
|
|
|
|
# seem to have some trouble with 2.2.14 recognizing the right IRQ
|
|
append = "ide1=0x170,0x376,12 ether=10,0x300,eth0 ether=5,0x320,eth1"
|
|
|
|
boot=/dev/hdc
|
|
map=/boot/map
|
|
install=/boot/boot.b
|
|
|
|
initrd=/boot/initrd.gz
|
|
|
|
image=/boot/zImage
|
|
root=/dev/md2
|
|
label=LinuxRaid
|
|
read-only
|
|
</verb>
|
|
</article>
|