119 lines
4.0 KiB
Plaintext
119 lines
4.0 KiB
Plaintext
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.
|