Re: udev, sysfs, wwn/uuid, raid
howto make raid on A5000 and E450 with Qlogic 2100FC PCI card
no one answered my question. so i have some posibilities:
1. no one knows. so everyone will be *so* happy reading this.
2. no one cares. hmm. cant help you.
3. you all think im stupid cuz it is so easy. well, i can prove i can
figure it out. :)
4. you are all holding you breath to get the exciting solution. here it is!
i dont know what it is, but just in case somebody else wonders, i wrote this.
if anyone wants to use this text in a real howto, please do.
Debian Sarge, kernel 2.6.9, udev 054 is what im using.
i probably wrote too much, most knows many of the commands i used. but
it is better
too write too much than too little. (we want all to be happy, dont we?)
you need a kernel with CONFIG_HOTPLUG enabled.
and the A5000 and Qlogic stuff to. in the kernel
i use the qlogicfc module.
i did apt-get install udev
to install the udev tools and stuff. (Debian rocks)
see links for more info.
http://www.reactivated.net/udevrules.php
http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
the problem i ran into was a missing /etc/scsi_id.config file.
all it need is the line options=-g in it.
so create this one.
load the qlogicfc module
modprobe qlogicfc.
my /var/log/messages:
Mar 22 13:34:22 e450 kernel: qlogicfc0 : new isp2x00 revision ID (4)
Mar 22 13:34:33 e450 kernel: qlogicfc0 : link is not up
Mar 22 13:34:33 e450 kernel: qlogicfc1 : new isp2x00 revision ID (4)
Mar 22 13:34:34 e450 kernel: qlogicfc1 : Loop Reinitialized
Mar 22 13:34:34 e450 kernel: qlogicfc1 : Link is Up
Mar 22 13:34:34 e450 kernel: qlogicfc1 : Loop Reinitialized
Mar 22 13:34:34 e450 kernel: qlogicfc1 : Port Database
Mar 22 13:34:34 e450 kernel: wwn: 200000e08b01ec51 scsi_id: 0 loop_id: 0
Mar 22 13:34:34 e450 kernel: wwn: 2200002037a6574d scsi_id: 1 loop_id: 20
Mar 22 13:34:34 e450 kernel: wwn: 2200002037a62d38 scsi_id: 2 loop_id: 21
Mar 22 13:34:34 e450 kernel: wwn: 2200002037a61f24 scsi_id: 3 loop_id: 22
....
Mar 22 13:34:39 e450 kernel: scsi6 : QLogic ISP2100 SCSI on PCI bus 80
device 08 irq 7558336 base 0x1c802000400
Mar 22 13:34:44 e450 kernel: scsi7 : QLogic ISP2100 SCSI on PCI bus 80
device 08 irq 7613632 base 0x1fe02000400
Mar 22 13:34:44 e450 kernel: Vendor: SEAGATE Model:
ST39103FCSUN9.0G Rev: 034A
Mar 22 13:34:44 e450 kernel: Type: Direct-Access
ANSI SCSI revision: 02
Mar 22 13:34:44 e450 kernel: SCSI device sdc: 17689267 512-byte hdwr
sectors (9057 MB)
Mar 22 13:34:44 e450 kernel: SCSI device sdc: drive cache: write through
Mar 22 13:34:44 e450 kernel: sdc: sdc1 sdc2 sdc3
Mar 22 13:34:44 e450 kernel: Attached scsi disk sdc at scsi7, channel
0, id 1, lun 0
....
your /dev should have a lot of:
sda sda1 sda2 sda3 sda4
sdb sdb1 sdb2 sdb3
sdc sdc1 sdc2 sdc3
sdd sdd1 sdd2 sdd3
...
since my sda and sdb is the 2 disks i have in the E450 itself. i dont
make any rules or special names for them.
downoad udev-056.tar.bz2 from
http://www.us.kernel.org/pub/linux/utils/kernel/hotplug/
do tar jxpvf udev-056.tar.bz2 where you want it.
go to udev-056/extras/scsi_id
do chmod 744 gen_scsi_id_udev_rules.sh so you can run it.
run the script: ./gen_scsi_id_udev_rules.sh > 10.local.rules
it will generate the rules you need and put them in the 10.local.rules file.
im not sure if you need to do this, but i did just to be sure.
rmmod qlogicfc
this should remove all your old disknames from /dev.
copy/move 10.local.rules to /etc/udev/rules.d
edit the disknames as you prefer.
my file looks like this when i was done:
you see that the first two disks are untouched, since they are for the OS
the rest are named fca through fcm (fc for fiber channel...)
# Rules to make sure that the disk names in the A5000 will be consistent
# if /sbin/scsi_id returns "serialnumber" device will be called fc*
BUS="scsi", PROGRAM="/sbin/scsi_id -d %N -s %p", RESULT="SSEAGATE
ST39102LN9.0LJS3908500001948K2Q7", NAME="sda%n"
# Further RESULT keys use the result of the last PROGRAM rule.
# Be careful not to add any rules containing PROGRAM key between here
# and the end of this section
BUS="scsi", RESULT="SIBM DDRS39130SUN9.01P9008 ", NAME="sdb%n"
BUS="scsi", RESULT="32000002037a6574d", NAME="fca%n"
BUS="scsi", RESULT="32000002037a62d38", NAME="fcb%n"
BUS="scsi", RESULT="32000002037a61f24", NAME="fcc%n"
BUS="scsi", RESULT="32000002037a62837", NAME="fcd%n"
BUS="scsi", RESULT="32000002037a625b3", NAME="fce%n"
BUS="scsi", RESULT="32000002037a62afb", NAME="fcf%n"
BUS="scsi", RESULT="3200000203709a7cb", NAME="fcg%n"
BUS="scsi", RESULT="32000002037a61e31", NAME="fch%n"
BUS="scsi", RESULT="32000002037a623c0", NAME="fci%n"
BUS="scsi", RESULT="32000002037a630db", NAME="fcj%n"
BUS="scsi", RESULT="32000002037a62840", NAME="fck%n"
BUS="scsi", RESULT="320000020370e2537", NAME="fcl%n"
BUS="scsi", RESULT="320000020370e243a", NAME="fcm%n"
#
# End of autogenerated scsi_id rules
yes i am missing one disk in my A5000, since one died on me :(
start qlogicfc again
modprobe qlogicfc
you should now have the new names in /dev:
sda sda1 sda2 sda3 sda4
sdb sdb1 sdb2 sdb3
fca fca1 fca2 fca3
fcb fcb1 fcb2 fcb3
...
YAY!
next is to make a /etc/raidtab:
which is a little outside the scope of this howto, but since im
writing it, i can include whatever i want!
you need RAID 5 in kernel as module or compiled in.
if you need to boot from it, do not use module, if not you can to make
the kernel smaller.
well, you don't need RAID 5, but since you get redundancy and only
looses 1 drive in storage, it makes sense to me.
fca1 refers to the first partition on the first disk in the A5000. you
need to use the right partition for you.
raiddev /dev/md0
raid-level 5
nr-raid-disks 12
nr-spare-disks 1
persistent-superblock 1
parity-algorithm left-symmetric
chunk-size 128
device /dev/fca1
raid-disk 0
device /dev/fcb1
raid-disk 1
device /dev/fcc1
raid-disk 2
device /dev/fcd1
raid-disk 3
device /dev/fce1
raid-disk 4
device /dev/fcf1
raid-disk 5
device /dev/fcg1
raid-disk 6
device /dev/fch1
raid-disk 7
device /dev/fci1
raid-disk 8
device /dev/fcj1
raid-disk 9
device /dev/fck1
raid-disk 10
device /dev/fcl1
raid-disk 11
device /dev/fcm1
spare-disk 0
you see that i use 12 disks in the RAID set, and have one for spare.
notice chunk size of 128K.
do mkraid /dev/md0
to make the array. you should now hear the A5000 make sounds and blink (cool)
i want to use ext3 as filesys. what filesystem that is best for you is
outside the scope of this article.
anyway.
mkfs.ext3 -b 4096 -R stride=32 /dev/md0
you see, this makes the filesystem with a blocksize of 4K and -R
stride=32 tells the filesystem that
it is 32*4K (128K) blocks in one chunk. which is what i set chunksize
as. this is supposed to make it faster
since the filesystem now knows how big each "piece" in the raid is.
lastly. make a dir: mkdir /A5000
and mount it:
mount /dev/md0 /A5000
do df -h
just for the fun of it!
e450:/etc/udev/rules.d# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 2.8G 2.3G 348M 87% /
tmpfs 506M 0 506M 0% /dev/shm
/dev 2.8G 2.3G 348M 87% /.dev
none 10M 1.4M 8.7M 14% /dev
/dev/md0 91G 33M 87G 1% /A5000
any comments? my email is camaro468@gmail.com
--
no no, I'm not insane. I just have a creative view on reality.
Reply to: