raid-1 boot with raid-5 system
flat view
From: taddis <hidden>
Date: 2003-08-05 14:59:11
Im having trouble booting my raid-1 array.
This is what I want to do:
First I want to boot the system on a small raid-1 array (2 * 80M) to get
boot redundancy. Then I want to mount a raid-5 array (3 * 30G) on "/".
I'll have 3 Linux swaps, one on each disk.
Here are the disks after partition.
#### /dev/hdb ##########################################################
Disk /dev/hdb: 30.7 GB, 30750031872 bytes
255 heads, 63 sectors/track, 3738 cylinders, total 60058656 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/hdb1 * 63 160649 80293+ fd Linux raid autodetect
/dev/hdb2 160650 60050969 29945160 5 Extended
/dev/hdb5 160713 1156679 497983+ 82 Linux swap
/dev/hdb6 * 1156743 60050969 29447113+ fd Linux raid autodetect
########################################################################
#### /dev/hdc ##########################################################
Disk /dev/hdc: 30.7 GB, 30750031872 bytes
16 heads, 63 sectors/track, 59582 cylinders, total 60058656 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 63 156239 78088+ fd Linux raid autodetect
/dev/hdc2 156240 60058655 29951208 5 Extended
/dev/hdc5 156303 1156175 499936+ 82 Linux swap
/dev/hdc6 * 1156239 60058655 29451208+ fd Linux raid autodetect
########################################################################
#### /dev/hdd ##########################################################
Disk /dev/hdd: 30.7 GB, 30750031872 bytes
16 heads, 63 sectors/track, 59582 cylinders, total 60058656 sectors
Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System
/dev/hdd1 63 999935 499936+ 82 Linux swap
/dev/hdd2 999936 60058655 29529360 5 Extended
/dev/hdd5 * 999999 60058655 29529328+ fd Linux raid autodetect
########################################################################
I installed the base system (debian) on /dev/hdb6 with all the required
tools (raidtools, ...).
Then I edited the raidtab file like this:
#### /etc/raidtab ###############
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 32
device /dev/hdc6
raid-disk 1
device /dev/hdd5
raid-disk 2
device /dev/hdb6
failed-disk 0
raiddev /dev/md1
raid-level 1
nr-raid-disks 2
nr-spare-disks 0
persistent-superblock 1
chunk-size 32
device /dev/hdc1
raid-disk 0
device /dev/hdb1
raid-disk 1
#################################
In /dev/md0 I have /dev/hdb6 as a failed-disk that partition will be in
the raid-5 later on.
Then I created the arrays with:
mkraid /dev/md0
mkraid /dev/md1
All went well and when I cat /proc/mdstat I get:
#### cat /proc/mdstat #############################################
Personalities : [raid1] [raid5]
read_ahead 1024 sectors
md1 : active raid1 hdb1[1] hdc1[0]
78016 blocks [2/2] [UU]
md0 : active raid5 hdd5[1] hdc6[0]
58902272 blocks level 5, 32k chunk, algorithm 2 [3/2] [_UU]
unused devices: <none>
###################################################################
After that I stopped the arrays and made filesystems on them like this:
mkreiserfs /dev/md0
mkreiserfs /dev/md1
Then I copied all the /boot/* files onto /dev/md1
and the rest of the filesystem onto /dev/md0.
After all this I had a partition table like this:
#### df -T #######################################################
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/hdb6 reiserfs 29446208 918148 28528060 4% /
/dev/md0 reiserfs 58900468 880820 58019648 2% /raid
/dev/md1 reiserfs 78008 40376 37632 52% /raid/boot
###################################################################
then I chroot'ed into /raid and modified /etc/fstab like this
#### /etc/fstab (/raid/etc/fstab) ###########################################
#<file system> <mount point> <type> <options> <dump> <pass>
/dev/md0 / reiserfs defaults 1 1
/dev/md1 /boot reiserfs defaults 1 1
##############################################################################
And now I'am stucked here with lilo. I cant get it booting my small raid-1
array.
I dont know if i have to chroot into /raid and run lilo from there or if
it works
the same if I dont chroot.
I've read alot of howtos and mailinglists and they all differ. This is how
I've
done it now:
I have 2 lilo files (lilo.hdb.conf and lilo.hdc.conf) and they look like this:
#### /etc/lilo.hdb.conf (chrooted in /raid) ####
lba32
disk=/dev/md0
bios=0x80
sectors=63
heads=16
cylinders=3738
partition=/dev/md1
start=63
boot=/dev/hdb
root=/dev/md0
install=/boot/boot-menu.b
map=/boot/map
initrd=/boot/initrd-raid.img
delay=100
prompt
timeout=100
default=Linux
image=/vmlinuz
label=Linux
read-only
image=/vmlinuz-raid
label=Linux-Raid
read-only
image=/vmlinuz-raidNEW
label=Linux-RaidNEW
read-only
###################################################
#### /etc/lilo.hdc.conf ###########################
Its exactly like lilo.hdb.conf the only diffrence is
cylinders=59582
boot=/dev/hdc
###################################################
As you can se I've also made a new initrd image.
My /etc/mkinitrd/files contains:
#### /etc/mkinitrd/files ##########################
/bin
/bin/bash
/bin/echo
/sbin/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.3.1.so
/lib/ld-linux.so.2
/lib/libc-2.3.1.so
/lib/libc.so.6
/linuxrc
/proc
########################################
and /linuxrc looks like this (im not really sure
about how this file works :/ ):
#### /linuxrc ##########################
# mount the proc file system
/bin/mount /proc
# autostart /boot partition and raid0
/sbin/raidstart /dev/md1
# 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/md0 mounted on root"
echo 0x902>/proc/sys/kernel/real-root-dev
# umount /proc to deallocate initrd device ram space
/bin/umount /proc
exit
##########################################
I did it like this 'mkinitrd -o /boot/initrd-raid.img'.
And now I'll write the two lilo's into the bootrecords like this:
#### lilo -v -C /etc/lilo.hdb.conf #####################################
LILO version 22.5.6.1, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2003 John Coffman
Released 03-Jul-2003, and compiled at 23:47:54 on Jul 17 2003
Compiled for Debian GNU/Linux.
Reading boot sector from /dev/hdb
Warning: /dev/hdb is not on the first disk
Using MENU secondary loader
Calling map_insert_data
Warning: The boot sector and map file are on different disks.
Boot image: /vmlinuz -> boot/vmlinuz-2.4.18-bf2.4
Mapping RAM disk /boot/initrd-raid.img
Added Linux *
Boot image: /vmlinuz-raid -> boot/vmlinuz-2.4.21-raid
Mapping RAM disk /boot/initrd-raid.img
Added Linux-Raid
Boot image: /vmlinuz-raidNEW -> /boot/vmlinuz-2.4.21NEW
Mapping RAM disk /boot/initrd-raid.img
Added Linux-RaidNEW
Skipping /vmlinuz.old
Writing boot sector.
/boot/boot.0340 exists - no boot sector backup copy made.
########################################################################
and
#### lilo -v -C /etc/lilo.hdc.conf #####################################
LILO version 22.5.6.1, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2003 John Coffman
Released 03-Jul-2003, and compiled at 23:47:54 on Jul 17 2003
Compiled for Debian GNU/Linux.
Reading boot sector from /dev/hdc
Warning: /dev/hdc is not on the first disk
Using MENU secondary loader
Calling map_insert_data
Boot image: /vmlinuz -> boot/vmlinuz-2.4.18-bf2.4
Mapping RAM disk /boot/initrd-raid.img
Added Linux *
Boot image: /vmlinuz-raid -> boot/vmlinuz-2.4.21-raid
Mapping RAM disk /boot/initrd-raid.img
Added Linux-Raid
Boot image: /vmlinuz-raidNEW -> /boot/vmlinuz-2.4.21NEW
Mapping RAM disk /boot/initrd-raid.img
Added Linux-RaidNEW
Skipping /vmlinuz.old
Writing boot sector.
/boot/boot.1600 exists - no boot sector backup copy made.
#########################################################################
I dont know if the warnings are critical or not.
And now I'll reboot the system.
And when I boot it up with my new raid improved kernel it finds and sets
up raid-1 and after that I get this:
#### dmesg ##############################################################
RAMDISK: Couldn't find valid RAM disk image starting at 0.
Freeing initrd memory: 1852k freed
raid5: switching cache buffer size, 4096 -> 1024
md: swapper(pid 1) used obsolete MD ioctl, upgrade your software to use
new ictls.
hdd: dma_initr: status=0x51 { DriveReady SeekComplete Error }
hdd: dma_initr: error=0x84 { DriveStatusError BadCRC }
hdd: dma_initr: status=0x51 { DriveReady SeekComplete Error }
hdd: dma_initr: error=0x84 { DriveStatusError BadCRC }
hdd: dma_initr: status=0x51 { DriveReady SeekComplete Error }
hdd: dma_initr: error=0x84 { DriveStatusError BadCRC }
hdd: dma_initr: status=0x51 { DriveReady SeekComplete Error }
hdd: dma_initr: error=0x84 { DriveStatusError BadCRC }
hdc: DMA disable
#########################################################################
And here i am stucked. I really dont know whats wrong here. Is it that it
doesnt find the RAMDISK, or is it something else in my configuration?
Thanks for the help!
Tobias Carlsson