How to assemble a specific RAID array without using /etc/mdadm.conf

54,820

If you know the array UUID, then mdadm --assemble /dev/md0 --uuid <uuid> (note the slight difference in parameter order) will do what you want: scan all unused volumes for ones that have md metadata for the given UUID. Other options:

  • mdadm --assemble /dev/md0 --name <name> (does the same thing as --uuid, but with an array name instead of a UUID.)
  • mdadm --assemble /dev/md0 --super-minor <minor id #> (does the same thing as --uuid, but with minor device numbers in the metadata. Only recommended for version 0.90 metadata.)
  • mdadm --assemble /dev/md0 /dev/disk/by-id/<disk>... (if udev has set up /dev/disk/by-id aliases, which should be static across hardware changes.)
  • mdadm --assemble --scan with no arrays listed in the configuration file (scan all unused volumes for md metadata, and assemble RAID arrays based on what's found. Note that if you've got multiple arrays and only want to set up one of them, or if your array has gotten split, this won't do what you want.)
Share:
54,820

Related videos on Youtube

Admin
Author by

Admin

Updated on September 18, 2022

Comments

  • Admin
    Admin almost 2 years

    Is it possible to assemble a specific RAID array using mdadm and its scan-functionality, but without the need for a configuration file?

    Background:
    I'm using a custom-made initramfs to setup my system (dm-crypt and other stuff). Everything is done and configured within the init script and that's the way I'd like to keep it, i.e. without any additional config files.

    My goal:
    Within the init script, I'd like to assemble one specific RAID array using command-line only. The array is identified via its UUID, the md device name is given and array members should be scanned for (since e.g. an attached USB stick or a failed device would mess up /dev/sdX names). All other devices and potential RAID arrays are to be ignored, since during boot only that one array is of interest (carries the root filesystem).


    Thoroughly reading mdadm's man page and performing several tests I came up with this:

    mdadm --assemble --uuid <uuid> /dev/md0
    


    This seems to be working, but is this the right way to do it?


    From the man page:
    If precisely one device is listed, but --scan is not given, then mdadm acts as though --scan was given and identity information is extracted from the configuration file.