| - add 'name' field to metadata type and use it. |
| - use validate_geometry more |
| - metadata should be able to check/reject bitmap stuff. |
| |
| DDF: |
| Three new metadata types: |
| ddf - used only to create a container. |
| ddf-bvd - used to create an array in a container |
| ddf-svd - used to create a secondary array from bvds. |
| |
| Usage: |
| mdadm -C /dev/ddf1 /dev/sd[abcdef] |
| mdadm -C /dev/md1 -e ddf /dev/sd[a-f] |
| mdadm -C /dev/md1 -l container /dev/sd[a-f] |
| |
| Each of these create a new ddf container using all those |
| devices. The name 'ddf*' signals that ddf metadata should be used. |
| '-e ddf' only supports one level - 'container'. 'container' is only |
| supported by ddf. |
| |
| mdadm -C /dev/md1 -l0 -n4 /dev/ddf1 # or maybe not ??? |
| mdadm -C /dev/md1 -l1 -n2 /dev/sda /dev/sdb |
| If exactly one device is given, and it is a container, we select |
| devices from that container. |
| If devices are given that are already in use, they must be in use by |
| a container, and the array is created in the container. |
| If devices given are bvds, we slip under the hood to make |
| the svd arrays. |
| |
| mdadm -A /dev/ddf ...... |
| base drives make a container. Anything in that container is started |
| auto-read-only. |
| if /dev/ddf is already assembled, we assemble bvds and svds inside it. |
| |
| |
| 2005-dec-20 |
| Want an incremental assembly mode to work nicely with udev. |
| Core usage would be something like |
| mdadm --incr-assemble /dev/newdevice |
| This would |
| - examine the device to determine uuid etc. |
| - look for a match in /etc/mdadm.conf, abort if not found |
| - find that device and collect current contents |
| - perform an 'assemble' analysis to make sure we have the best set of devices. |
| - remove or add devices as appropriate |
| - possibly start the array if it was complete |
| |
| Other usages could involve |
| - specify which array to auto-add to. |
| This requires an existing array for uuid matching... is there any point? |
| |
| - |
| |
| |
| 2004-june-02 |
| * Don't print 'errors' flag, it is meaningless. DONE |
| * Handle new superblock format |
| * create device file on demand, particularly partitionable devices. DONE |
| BUT figure a way to create the partition devices. |
| auto=partN |
| * Use Event: interface to listen for events. DONE, untested |
| * Make sure mdadm -As can assemble multi-level RAIDs ok. |
| * --build to build raid1 or multipath arrays |
| clean or not ??? |
| |
| ---------------------------------------------------------------------------- |
| * mdadm --monitor to monitor failed multipath paths and re-instate them. |
| |
| * Maybe make "--help" fit in 80x24 and have a --long-help with more info. DONE |
| |
| |
| * maybe "missing" instead of <bold>missing</> in doco DONE |
| * possibly wait for resync to start, or even finish while assembling.- NO |
| |
| * -Db should have a devices= entry if possible. - DONE |
| * when assembling multipath arrays, ignore any error indicators. - DONE |
| * rationalise --monitor usage: |
| mdadm --monitor |
| doesn't do as expected. DONE |
| |
| * --assemble could have a --update option. - DONE |
| following word can be: |
| sparc2.2 |
| super-minor |
| |
| * mdadm /dev/md11, where md11 is raid0 can segfault, particularly when looking in the |
| [UU_UUU] string ... which doesn't exist ! |
| It should be more sensible. DONE |
| |
| Example: |
| |
| from Raimund Sacherer <raimund.sacherer@ngit.at> |
| |
| mke2fs -m0 -q /dev/ram1 300 |
| mount -n -t ext2 /dev/ram1 /tmp |
| echo DEVICE /dev/[sh]* >> /tmp/mdadm.conf |
| mdadm -Esb /dev/[sh]* 2>/dev/null >> /tmp/mdadm.conf |
| mdadm -ARsc /tmp/mdadm.conf |
| umount /tmp |
| |
| |
| ?? Allow -S /dev/md? - current complains subsequent not a/d/r - DONE |
| |
| * new "Query" mode to subsume --detail and --examine. |
| --query or -Q, takes a device and tells if it is an MD device, |
| and also tells in a raid superblock is found. |
| DONE |
| |
| * write mdstat.c to parse /proc/mdstat file |
| Build list of arrays: name, rebuild-percent |
| DONE |
| |
| * parse /proc/partitions and map major/minor into /dev/* names, |
| and use that for default DEVICE list ???? |
| |
| * --detail --scan to read /proc/mdstat, and then iterate over these, |
| but assume --brief. --verbose can override |
| check each subdevice to see if it is in conf_get_devs. |
| Warn if not. |
| DONE, but don't warn yet... |
| |
| * Support multipath ... maybe... |
| maybe DONE |
| |
| * --follow to syslog |
| |
| * --follow to move spares around DONE |
| |
| * --follow to notice other events: DONE |
| rebuild started |
| spare activated |
| spare removed |
| spare added |
| |
| ------------------------------------ |
| - --examine --scan scans all drives and build an mdadm.conf file DONE |
| |
| - check superblock checksum in examine DONE |
| - report "chunk" or "rounding" depending on raid level DONE |
| - report "linear" instead of "-1" for raid level DONE |
| - decode ayout depending on raid level DONE |
| - --verbose and --force flags. DONE |
| |
| - set md_minor, *_disks for Create - DONE |
| - for create raid5, how to choose between |
| all working, but not insync |
| one missing, one spare, insync DONE (--force) |
| - and for raid1 - some failed drives... (missing) |
| |
| - when RUN_ARRAY, make sure *_disks counts are right |
| |
| - get --detail to extract extra stuff from superblock, |
| like uuid DONE |
| - --detail --brief to give a config file line DONE |
| - parse config file. DONE |
| - test... |
| |
| - when --assemble --scan, if an underlying device is an md device, |
| then try to assemble that device first. |
| |
| |
| - mdadm -S /dev/md0 /dev/md1 gives internal error FIXED |
| |
| - mdadm --detail --scan print summary of what it can find? DONE |
| |
| |
| --------- |
| Assemble doesn't add spares. - DONE |
| Create to allow "missing" name for devices. |
| Create to accept "--force" for do exactly what is requested |
| - get Assemble to upgrade devices if force flag. |
| ARRAY lines in config file to have super_minor=n |
| ARRAY lines in config file to have device=pattern, and only accept |
| those devices |
| If UUID given, insist on that |
| If not, but super_minor given, require all found with that minor |
| to have same uuid |
| If only device given, all valid supers on those devices must have |
| same uuid |
| allow /dev/mdX as first argument before any options |
| Possible --dry-run option for create and assemble--force |
| |
| Assemble to check that all devices mentioned in superblock |
| are present. |
| |
| New mode: --Monitor (or --Follow) |
| Periodically check status of all arrays (listed in config file). |
| Log every event and apparent cause - or differences |
| Email and alert - or run a program - for important events |
| Move spares around if necessary. |
| |
| An Array line can have a spare-group= field that indicates that |
| the array shares spares with other arrays with the same |
| spare-group name. |
| If an array has a failed and no spares, then check all other |
| arrays in the spare group. If one has no failures and a spare, |
| then consider that spare. |
| Choose the smallest considered spare that is large enough. |
| If there is one, then hot-remove it from it's home, and |
| hot-add it to the array in question. |
| |
| --mail-to address |
| --alert-handler program |
| |
| Will also extract information from /proc/mdstat if present, |
| and consider 20% marks in rebuild as events. |
| |
| Events are: |
| drive fails - causes mail to be sent |
| rebuild started |
| spare activated |
| spare removed |
| spare added |