mdmonitor-service-simplify.diff: simplify mdmonitor.service (764647)
[pkg-mdadm/mdadm.git] / debian / README.recipes
1 mdadm recipes
2 =============
3
4 The following examples/recipes may help you with your mdadm experience. I'll
5 leave it as an exercise to use the correct device names and parameters in each
6 case. You can find pointers to additional documentation in the README.Debian
7 file.
8
9 Enjoy. Submissions welcome.
10
11 The latest version of this document is available here:
12   http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=blob;f=debian/README.recipes;hb=HEAD
13
14 0. create a new array
15 ~~~~~~~~~~~~~~~~~~~~~
16     mdadm --create -l1 -n2 -x1 /dev/md0 /dev/sd[abc]1   # RAID 1, 1 spare
17     mdadm --create -l5 -n3 -x1 /dev/md0 /dev/sd[abcd]1  # RAID 5, 1 spare
18     mdadm --create -l6 -n4 -x1 /dev/md0 /dev/sd[abcde]1 # RAID 6, 1 spare
19
20 1. create a degraded array
21 ~~~~~~~~~~~~~~~~~~~~~~~~~~
22     mdadm --create -l5 -n3 /dev/md0 /dev/sda1 missing /dev/sdb1
23     mdadm --create -l6 -n4 /dev/md0 /dev/sda1 missing /dev/sdb1 missing
24
25 2. assemble an existing array
26 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27     mdadm --assemble --auto=yes /dev/md0 /dev/sd[abc]1
28
29     # if the array is degraded, it won't be started. use --run:
30     mdadm --assemble --auto=yes --run /dev/md0 /dev/sd[ab]1
31
32     # or start it by hand:
33     mdadm --run /dev/md0
34
35 3. assemble all arrays in /etc/mdadm/mdadm.conf
36 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
37     mdadm --assemble --auto=yes --scan
38
39 4. assemble a dirty degraded array
40 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41     mdadm --assemble --auto=yes --force /dev/md0 /dev/sd[ab]1
42     mdadm --run /dev/md0
43
44 4b. assemble a dirty degraded array at boot-time
45 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46     If the array is started at boot time by the kernel (partition type 0xfd),
47     you can force-assemble it by passing the kernel boot parameter
48
49       md-mod.start_dirty_degraded=1
50
51 5. stop arrays
52 ~~~~~~~~~~~~~~
53     mdadm --stop /dev/md0
54
55     # to stop all arrays in /etc/mdadm/mdadm.conf
56     mdadm --stop --scan
57
58 6. hot-add components
59 ~~~~~~~~~~~~~~~~~~~~~
60     # on the running array:
61     mdadm --add /dev/md0 /dev/sdc1
62     # if you add more components than the array was setup with, additional
63     # components will be spares
64
65 7. hot-remove components
66 ~~~~~~~~~~~~~~~~~~~~~~~~
67     # on the running array:
68     mdadm --fail /dev/md0 /dev/sdb1
69     # if you have configured spares, watch /proc/mdstat how it fills in
70     mdadm --remove /dev/md0 /dev/sdb1
71
72 8. hot-grow a RAID1 by adding new components
73 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74     # on the running array, in either order:
75     mdadm --grow -n3 /dev/md0
76     mdadm --add /dev/md0 /dev/sdc1
77     # note: without growing first, additional devices become spares and are
78     # *not* synchronised after the add.
79
80 9. hot-shrink a RAID1 by removing components
81 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
82     mdadm --fail /dev/md0 /dev/sdc1
83     mdadm --remove /dev/md0 /dev/sdc1
84     mdadm --grow -n2 /dev/md0
85
86 10. convert existing filesystem to RAID 1
87 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
88     # The idea is to create a degraded RAID 1 on the second partition, move
89     # data, then hot add the first. This seems safer to me than simply to
90     # force-add a superblock to the existing filesystem.
91     #
92     # Assume /dev/sda1 holds the data (and let's assume it's mounted on
93     # /home) and /dev/sdb1 is empty and of the same size...
94     #
95     mdadm --create /dev/md0 -l1 -n2 /dev/sdb1 missing
96     mkfs -t <type> /dev/md0
97     mount /dev/md0 /mnt
98     tar -cf- -C /home . | tar -xf- -C /mnt -p
99     # consider verifying the data
100     umount /home
101     umount /mnt
102     mount /dev/md0 /home    # also change /etc/fstab
103     mdadm --add /dev/md0 /dev/sda1
104
105     Warren Togami has a document explaining how to convert a filesystem on
106     a remote system via SSH: http://togami.com/~warren/guides/remoteraidcrazies/
107
108 10b. convert existing filesystem to RAID 1 in-place
109 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
110     In-place conversion of /dev/sda1 to /dev/md0 is effectively
111       mdadm --create /dev/md0 -l1 -n2 /dev/sda1 missing
112     however, do NOT do this, as you risk filesystem corruption.
113
114     If you need to do this, first unmount and shrink the filesystem by
115     a megabyte (if supported). Then run the above command, then (optionally)
116     again grow the filesystem as much as possible.
117
118     Do make sure you have backups. If you do not yet, consider method (10)
119     instead (and make backups anyway!).
120
121 11. convert existing filesystem to RAID 5/6
122 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
123     # See (10) for the basics.
124     mdadm --create /dev/md0 -l5 -n3 /dev/sdb1 /dev/sdc1 missing
125     #mdadm --create /dev/md0 -l6 -n4 /dev/sdb1 /dev/sdc1 /dev/sdd1 missing
126     mkfs -t <type> /dev/md0
127     mount /dev/md0 /mnt
128     tar -cf- -C /home . | tar -xf- -C /mnt -p
129     # consider verifying the data
130     umount /home
131     umount /mnt
132     mount /dev/md0 /home    # also change /etc/fstab
133     mdadm --add /dev/md0 /dev/sda1
134
135 12. change the preferred minor of an MD array (RAID)
136 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
137     # you need to manually assemble the array to change the preferred minor
138     # if you manually assemble, the superblock will be updated to reflect
139     # the preferred minor as you indicate with the assembly.
140     # for example, to set the preferred minor to 4:
141     mdadm --assemble /dev/md4 /dev/sd[abc]1
142
143     # this only works on 2.6 kernels, and only for RAID levels of 1 and above.
144     # for other MD arrays, you need to specify --update explicitly:
145     mdadm --assemble --update=super-minor /dev/md4 /dev/sd[abc]1
146
147     # see also item 12 in the FAQ contained with the Debian package.
148
149  -- martin f. krafft <madduck@debian.org>  Fri, 06 Oct 2006 15:39:58 +0200