]> git.neil.brown.name Git - mdadm.git/blob - TODO
Release mdadm-4.0
[mdadm.git] / TODO
1  - add 'name' field to metadata type and use it.
2  - use validate_geometry more
3  - metadata should be able to check/reject bitmap stuff.
4
5 DDF:
6   Three new metadata types:
7     ddf - used only to create a container.
8     ddf-bvd - used to create an array in a container
9     ddf-svd - used to create a secondary array from bvds.
10
11   Usage:
12     mdadm -C /dev/ddf1 /dev/sd[abcdef]
13     mdadm -C /dev/md1 -e ddf /dev/sd[a-f]
14     mdadm -C /dev/md1 -l container /dev/sd[a-f]
15
16         Each of these create a new ddf container using all those
17         devices.  The name 'ddf*' signals that ddf metadata should be used.
18         '-e ddf' only supports one level - 'container'.  'container' is only
19         supported by ddf.
20
21     mdadm -C /dev/md1 -l0 -n4 /dev/ddf1 # or maybe not ???
22     mdadm -C /dev/md1 -l1 -n2 /dev/sda /dev/sdb
23         If exactly one device is given, and it is a container, we select
24         devices from that container.
25         If devices are given that are already in use, they must be in use by
26         a container, and the array is created in the container.
27         If devices given are bvds, we slip under the hood to make
28           the svd arrays.
29
30     mdadm -A /dev/ddf ......
31         base drives make a container.  Anything in that container is started
32          auto-read-only.
33          if /dev/ddf is already assembled, we assemble bvds and svds inside it.
34
35
36 2005-dec-20
37   Want an incremental assembly mode to work nicely with udev.
38   Core usage would be something like
39        mdadm --incr-assemble /dev/newdevice
40   This would
41      - examine the device to determine  uuid etc.
42      - look for a match in /etc/mdadm.conf, abort if not found
43      - find that device and collect current contents
44      - perform an 'assemble' analysis to make sure we have the best set of devices.
45      - remove or add devices as appropriate
46      - possibly start the array if it was complete
47
48    Other usages could involve
49      - specify which array to auto-add to.
50        This requires an existing array for uuid matching... is there any point?
51
52      -
53
54
55 2004-june-02
56   * Don't print 'errors' flag, it is meaningless. DONE
57   * Handle new superblock format
58   * create device file on demand, particularly partitionable devices. DONE
59       BUT figure a way to create the partition devices.
60               auto=partN
61   * Use Event: interface to listen for events. DONE, untested
62   * Make sure mdadm -As can assemble multi-level RAIDs ok.
63   * --build to build raid1 or multipath arrays 
64        clean or not ???
65   
66 ----------------------------------------------------------------------------
67 * mdadm --monitor to monitor failed multipath paths and re-instate them.
68
69 * Maybe make "--help" fit in 80x24 and have a --long-help with more info. DONE
70
71
72 * maybe "missing" instead of <bold>missing</> in doco DONE
73 * possibly wait for resync to start, or even finish while assembling.- NO
74
75 * -Db should have a devices= entry if possible. - DONE
76 * when assembling multipath arrays, ignore any error indicators. - DONE
77 * rationalise --monitor usage:
78      mdadm --monitor
79   doesn't do as expected. DONE
80
81 * --assemble could have a --update option. - DONE
82   following word can be:
83         sparc2.2
84         super-minor
85
86 * mdadm /dev/md11, where md11 is raid0 can segfault, particularly when looking in the 
87    [UU_UUU] string ... which doesn't exist !
88 It should be more sensible.  DONE
89
90 Example:
91
92 from  Raimund Sacherer <raimund.sacherer@ngit.at>
93
94 mke2fs -m0 -q /dev/ram1 300
95 mount -n -t ext2 /dev/ram1 /tmp
96 echo DEVICE /dev/[sh]* >> /tmp/mdadm.conf
97 mdadm -Esb /dev/[sh]* 2>/dev/null >> /tmp/mdadm.conf
98 mdadm -ARsc /tmp/mdadm.conf
99 umount /tmp
100
101
102 ?? Allow -S /dev/md? - current complains subsequent not a/d/r - DONE
103
104 * new "Query" mode to subsume --detail and --examine.
105    --query or -Q, takes a device and tells if it is an MD device,
106    and also tells in a raid superblock is found. 
107  DONE
108
109 * write mdstat.c to parse /proc/mdstat file
110    Build list of arrays:  name, rebuild-percent
111   DONE
112
113 * parse /proc/partitions and map major/minor into /dev/* names,
114   and use that for default DEVICE list ????
115
116 * --detail --scan to read /proc/mdstat, and then iterate over these,
117     but assume --brief.  --verbose can override
118     check each subdevice to see if it is in conf_get_devs.
119     Warn if not.
120   DONE, but don't warn yet...
121
122 * Support multipath ... maybe...
123   maybe DONE
124
125 * --follow to syslog 
126
127 * --follow to move spares around DONE
128
129 * --follow to notice other events: DONE
130      rebuild started
131      spare activated
132      spare removed
133      spare added
134
135 ------------------------------------
136 - --examine --scan scans all drives and build an mdadm.conf file DONE
137
138 - check superblock checksum in examine DONE
139 - report "chunk" or "rounding" depending on raid level DONE
140 - report "linear" instead of "-1" for raid level DONE
141 - decode ayout depending on raid level DONE
142 - --verbose and --force flags. DONE
143
144 - set md_minor, *_disks for Create  - DONE
145 - for create raid5, how to choose between 
146    all working, but not insync
147    one missing, one spare, insync  DONE (--force)
148 - and for raid1 - some failed drives...  (missing)
149
150 - when RUN_ARRAY, make sure *_disks counts are right
151
152 - get --detail to extract extra stuff from superblock,
153    like uuid  DONE
154 - --detail --brief to give a config file line DONE
155 - parse config file. DONE
156 - test...
157
158 - when --assemble --scan, if an underlying device is an md device, 
159   then try to assemble that device first.
160
161
162 - mdadm -S /dev/md0 /dev/md1 gives internal error FIXED
163
164 - mdadm --detail --scan print summary of what it can find? DONE
165
166
167 ---------
168 Assemble doesn't add spares. - DONE
169 Create to allow "missing" name for devices.
170 Create to accept "--force" for do exactly what is requested
171 - get Assemble to upgrade devices if force flag.
172 ARRAY lines in config file to have super_minor=n
173 ARRAY lines in config file to have device=pattern, and only accept
174    those devices
175    If UUID given, insist on that
176    If not, but super_minor given, require all found with that minor
177     to have same uuid
178    If only device given, all valid supers on those devices must have 
179     same uuid
180 allow /dev/mdX as first argument before any options
181 Possible --dry-run option for create and assemble--force
182
183 Assemble to check that all devices mentioned in superblock
184   are present.
185
186 New mode: --Monitor (or --Follow)
187   Periodically check status of all arrays (listed in config file).
188   Log every event and apparent cause - or differences
189   Email and alert - or run a program - for important events
190   Move spares around if necessary.
191
192   An Array line can have a spare-group= field that indicates that
193    the array shares spares with other arrays with the same
194    spare-group name.
195    If an array has a failed and no spares, then check all other
196      arrays in the spare group.  If one has no failures and a spare,
197      then consider that spare.
198     Choose the smallest considered spare that is large enough.
199     If there is one, then hot-remove it from it's home, and
200     hot-add it to the array in question.
201
202   --mail-to address  
203   --alert-handler program
204   
205   Will also extract information from /proc/mdstat if present,
206   and consider 20% marks in rebuild as events.
207
208   Events are:
209      drive fails  - causes mail to be sent
210      rebuild started
211      spare activated
212      spare removed
213      spare added