1Tools that manage md devices can be found at 2 http://www.<country>.kernel.org/pub/linux/utils/raid/.... 3 4 5 6You can boot with your md device with the following kernel command 7lines: 8 9for old raid arrays without persistent superblocks: 10 md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn 11 12for raid arrays with persistent superblocks 13 md=<md device no.>,dev0,dev1,...,devn 14 15md device no. = the number of the md device ... 16 0 means md0, 17 1 md1, 18 2 md2, 19 3 md3, 20 4 md4 21 22raid level = -1 linear mode 23 0 striped mode 24 other modes are only supported with persistent super blocks 25 26chunk size factor = (raid-0 and raid-1 only) 27 Set the chunk size as 4k << n. 28 29fault level = totally ignored 30 31dev0-devn: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1 32 33A possible loadlin line (Harald Hoyer <HarryH@Royal.Net>) looks like this: 34 35e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro 36 37------------------------------- 38The md driver can support a variety of different superblock formats. 39(It doesn't yet, but it can) 40 41The kernel does *NOT* autodetect which format superblock is being 42used. It must be told. 43 44Superblock format '0' is treated differently to others for legacy 45reasons. 46 47 48General Rules - apply for all superblock formats 49------------------------------------------------ 50 51An array is 'created' by writing appropriate superblocks to all 52devices. 53It is 'assembled' by associating each of these devices with an 54particular md virtual device. Once it is completely assembled, it can 55be accessed. 56 57An array should be created by a user-space tool. This will write 58superblocks to all devices. It will usually mark the array as 59'unclean', or with some devices missing so that the kernel md driver 60can create approrpriate redundancy (copying in raid1, parity 61calculation in raid4/5). 62 63When an array is assembled, it is first initialised with the 64SET_ARRAY_INFO ioctl. This contains, in particular, a major and minor 65version number. The major version number selects which superblock 66format is to be used. The minor number might be used to tune handling 67of the format, such as suggesting where on each device to look for the 68superblock. 69 70Then each device is added using the ADD_NEW_DISK ioctl. This 71provides, in particular, a major and minor number identifying the 72device to add. 73 74The array is started with the RUN_ARRAY ioctl. 75 76Once started, new devices can be added. They should have an 77appropriate superblock written to them, and then passed be in with 78ADD_NEW_DISK. 79 80Devices that have failed or are not yet active can be detached from an 81array using HOT_REMOVE_DISK. 82 83 84Specific Rules that apply to format-0 super block arrays, and 85 arrays with no superblock (non-presistant). 86------------------------------------------------------------- 87 88An array can be 'created' by describing the array (level, chunksize 89etc) in a SET_ARRAY_INFO ioctl. This must has major_version==0 and 90raid_disks != 0. 91Then uninitialised devices can be added with ADD_NEW_DISK. The 92structure passed to ADD_NEW_DISK must specify the state of the device 93and it's role in the array. 94 95One started with RUN_ARRAY, uninitialised spares can be added with 96HOT_ADD_DISK. 97

