blob: e2b536992a2798ccaf32133f9d6ed08879a6778d [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001Tools that manage md devices can be found at
2 http://www.<country>.kernel.org/pub/linux/utils/raid/....
3
4
5Boot time assembly of RAID arrays
6---------------------------------
7
8You can boot with your md device with the following kernel command
9lines:
10
11for old raid arrays without persistent superblocks:
12 md=<md device no.>,<raid level>,<chunk size factor>,<fault level>,dev0,dev1,...,devn
13
14for raid arrays with persistent superblocks
15 md=<md device no.>,dev0,dev1,...,devn
16or, to assemble a partitionable array:
17 md=d<md device no.>,dev0,dev1,...,devn
18
19md device no. = the number of the md device ...
20 0 means md0,
21 1 md1,
22 2 md2,
23 3 md3,
24 4 md4
25
26raid level = -1 linear mode
27 0 striped mode
28 other modes are only supported with persistent super blocks
29
30chunk size factor = (raid-0 and raid-1 only)
31 Set the chunk size as 4k << n.
32
33fault level = totally ignored
34
35dev0-devn: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
36
37A possible loadlin line (Harald Hoyer <HarryH@Royal.Net>) looks like this:
38
39e:\loadlin\loadlin e:\zimage root=/dev/md0 md=0,0,4,0,/dev/hdb2,/dev/hdc3 ro
40
41
42Boot time autodetection of RAID arrays
43--------------------------------------
44
45When md is compiled into the kernel (not as module), partitions of
46type 0xfd are scanned and automatically assembled into RAID arrays.
47This autodetection may be suppressed with the kernel parameter
48"raid=noautodetect". As of kernel 2.6.9, only drives with a type 0
49superblock can be autodetected and run at boot time.
50
51The kernel parameter "raid=partitionable" (or "raid=part") means
52that all auto-detected arrays are assembled as partitionable.
53
54
55Superblock formats
56------------------
57
58The md driver can support a variety of different superblock formats.
59Currently, it supports superblock formats "0.90.0" and the "md-1" format
60introduced in the 2.5 development series.
61
62The kernel will autodetect which format superblock is being used.
63
64Superblock format '0' is treated differently to others for legacy
65reasons - it is the original superblock format.
66
67
68General Rules - apply for all superblock formats
69------------------------------------------------
70
71An array is 'created' by writing appropriate superblocks to all
72devices.
73
74It is 'assembled' by associating each of these devices with an
75particular md virtual device. Once it is completely assembled, it can
76be accessed.
77
78An array should be created by a user-space tool. This will write
79superblocks to all devices. It will usually mark the array as
80'unclean', or with some devices missing so that the kernel md driver
81can create appropriate redundancy (copying in raid1, parity
82calculation in raid4/5).
83
84When an array is assembled, it is first initialized with the
85SET_ARRAY_INFO ioctl. This contains, in particular, a major and minor
86version number. The major version number selects which superblock
87format is to be used. The minor number might be used to tune handling
88of the format, such as suggesting where on each device to look for the
89superblock.
90
91Then each device is added using the ADD_NEW_DISK ioctl. This
92provides, in particular, a major and minor number identifying the
93device to add.
94
95The array is started with the RUN_ARRAY ioctl.
96
97Once started, new devices can be added. They should have an
98appropriate superblock written to them, and then passed be in with
99ADD_NEW_DISK.
100
101Devices that have failed or are not yet active can be detached from an
102array using HOT_REMOVE_DISK.
103
104
105Specific Rules that apply to format-0 super block arrays, and
106 arrays with no superblock (non-persistent).
107-------------------------------------------------------------
108
109An array can be 'created' by describing the array (level, chunksize
110etc) in a SET_ARRAY_INFO ioctl. This must has major_version==0 and
111raid_disks != 0.
112
113Then uninitialized devices can be added with ADD_NEW_DISK. The
114structure passed to ADD_NEW_DISK must specify the state of the device
115and it's role in the array.
116
117Once started with RUN_ARRAY, uninitialized spares can be added with
118HOT_ADD_DISK.