123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- Tools that manage md devices can be found at
- http://www.<country>.kernel.org/pub/linux/utils/raid/....
- Boot time assembly of RAID arrays
- ---------------------------------
- You can boot with your md device with the following kernel command
- lines:
- for old raid arrays without persistent superblocks:
- md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn
- for raid arrays with persistent superblocks
- md=<md device no.>,dev0,dev1,...,devn
- or, to assemble a partitionable array:
- md=d<md device no.>,dev0,dev1,...,devn
-
- md device no. = the number of the md device ...
- 0 means md0,
- 1 md1,
- 2 md2,
- 3 md3,
- 4 md4
- raid level = -1 linear mode
- 0 striped mode
- other modes are only supported with persistent super blocks
- chunk size factor = (raid-0 and raid-1 only)
- Set the chunk size as 4k << n.
-
- fault level = totally ignored
-
- dev0-devn: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
-
- A possible loadlin line (Harald Hoyer <HarryH@Royal.Net>) looks like this:
- e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro
- Boot time autodetection of RAID arrays
- --------------------------------------
- When md is compiled into the kernel (not as module), partitions of
- type 0xfd are scanned and automatically assembled into RAID arrays.
- This autodetection may be suppressed with the kernel parameter
- "raid=noautodetect". As of kernel 2.6.9, only drives with a type 0
- superblock can be autodetected and run at boot time.
- The kernel parameter "raid=partitionable" (or "raid=part") means
- that all auto-detected arrays are assembled as partitionable.
- Superblock formats
- ------------------
- The md driver can support a variety of different superblock formats.
- Currently, it supports superblock formats "0.90.0" and the "md-1" format
- introduced in the 2.5 development series.
- The kernel will autodetect which format superblock is being used.
- Superblock format '0' is treated differently to others for legacy
- reasons - it is the original superblock format.
- General Rules - apply for all superblock formats
- ------------------------------------------------
- An array is 'created' by writing appropriate superblocks to all
- devices.
- It is 'assembled' by associating each of these devices with an
- particular md virtual device. Once it is completely assembled, it can
- be accessed.
- An array should be created by a user-space tool. This will write
- superblocks to all devices. It will usually mark the array as
- 'unclean', or with some devices missing so that the kernel md driver
- can create appropriate redundancy (copying in raid1, parity
- calculation in raid4/5).
- When an array is assembled, it is first initialized with the
- SET_ARRAY_INFO ioctl. This contains, in particular, a major and minor
- version number. The major version number selects which superblock
- format is to be used. The minor number might be used to tune handling
- of the format, such as suggesting where on each device to look for the
- superblock.
- Then each device is added using the ADD_NEW_DISK ioctl. This
- provides, in particular, a major and minor number identifying the
- device to add.
- The array is started with the RUN_ARRAY ioctl.
- Once started, new devices can be added. They should have an
- appropriate superblock written to them, and then passed be in with
- ADD_NEW_DISK.
- Devices that have failed or are not yet active can be detached from an
- array using HOT_REMOVE_DISK.
- Specific Rules that apply to format-0 super block arrays, and
- arrays with no superblock (non-persistent).
- -------------------------------------------------------------
- An array can be 'created' by describing the array (level, chunksize
- etc) in a SET_ARRAY_INFO ioctl. This must has major_version==0 and
- raid_disks != 0.
- Then uninitialized devices can be added with ADD_NEW_DISK. The
- structure passed to ADD_NEW_DISK must specify the state of the device
- and it's role in the array.
- Once started with RUN_ARRAY, uninitialized spares can be added with
- HOT_ADD_DISK.
|