[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: