Product
Adaptec AHA-3950U2D is a 64-bit PCI dual channel Ultra2 Wide SCSI controller.
Driver
aix7xxx
Specification
Good for connecting to LVD SCSI disk arrays at 80MB/s
Model information
Installation
With no drives connected to either channel, this is the "dmesg" output you'll see during boot:
scsi3 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36
<Adaptec 3950D Ultra2 SCSI adapter>
aic7896/97: Ultra2 Wide Channel B, SCSI Id=7, 32/253 SCBs
scsi4 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 6.2.36
<Adaptec 3950D Ultra2 SCSI adapter>
aic7896/97: Ultra2 Wide Channel A, SCSI Id=7, 32/253 SCBs
Distro here
SuSE 9.0
Current support
Driver is in stock linux kernel.
Own experience
Using this to connect seven drives in a raid5 configuration, as follows:
First use /sbin/fdisk to change the partition type of each of the main partitions of the drives to type "fd" (Linux raid autodetect), as follows:
# fdisk /dev/sdm
...
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L
...
16 Hidden FAT16 61 SpeedStor a9 NetBSD f2 DOS secondary
17 Hidden HPFS/NTF 63 GNU HURD or Sys ab Darwin boot fd Linux raid auto
18 AST SmartSleep 64 Novell Netware b7 BSDI fs fe LANstep
...
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
Command (m for help): w
Then use "mdadm" as follows to create the raid5 array:
mdadm --create /dev/md0 --level raid5 --parity left-symmetric --chunk 64 --raid-devices=7 /dev/sdm1 /dev/sdn1 /dev/sdo1 /dev/sdp1 /dev/sdq1 /dev/sdr1 /dev/sds1
This gave a warning message about the largest disk being 1% larger than the smallest disk, and asked to confirm, so I said yes to proceed.
It created the raid5 as /dev/md0, and the result looks like this:
cat /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 sds1[7] sdr1[5] sdq1[4] sdp1[3] sdo1[2] sdn1[1] sdm1[0]
213262080 blocks level 5, 64k chunk, algorithm 2 [7/6] [UUUUUU_]
[=============>.......] recovery = 66.1% (23518876/35543680) finish=50.0min speed=4002K/sec
unused devices: <none>
Normally, "_" means a failed disk. But in this case, actually it only shows that the reconstruction phase is in progress. Once the raid parity has finished constructing, it looks like this:
cat /proc/mdstat
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 sds1[6] sdr1[5] sdq1[4] sdp1[3] sdo1[2] sdn1[1] sdm1[0]
213262080 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
unused devices: <none>
According to the "mdadm" manual page, when creating a RAID5 array, mdadm will automatically create a degraded array with an extra spare drive. This is because building the spare into a degraded array is in general faster than resyncing the parity on a non-degraded, but not clean, array. This feature can be overridden with the following option:
-I --force
You can then create a filesystem directly on "/dev/md0", or partition "/dev/md0" as if it were a single regular drive.
When shutting down the system, you may prefer to manually unmount the filesystem and then stop the software raid. To stop the raid using "mdadm" I used this:
mdadm --stop /dev/md0
If the system crashes, the raid isn't shut down cleanly. This can cause a parity reconstruction to be initiated at the next reboot.
The reconstruction doesn't hurt the filesystem, which can usually just be checked or the journal replayed while the parity reconstruction is taking place.
The contents of "/proc/mdstat" will look something like this during reconstruction (notice this time there's no "_", all the drives show as "U"):
Personalities : [raid5]
read_ahead 1024 sectors
md0 : active raid5 sdk1[6] sdj1[5] sdi1[4] sdh1[3] sdg1[2] sdf1[1] sde1[0]
213262080 blocks level 5, 64k chunk, algorithm 2 [7/7] [UUUUUUU]
[=====>...............] resync = 29.8% (10620900/35543680) finish=41.6min speed=9974K/sec
unused devices: <none>
Comments / Questions
--
PeterKnaggs - 14 Jun 2005
to top