How can I make mdadm auto-assemble RAID after each boot?

133,416

Solution 1

NB: You either need to be logged in as root, or use sudo to do all this...

  • Use your favourite editor to create or edit /etc/mdadm/mdadm.conf file as follows:

If the file does not even exist, paste the following into the new, empty file:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR root

# definitions of existing MD arrays
  • Save the file

  • Run the following command to add a reference to your array config at the end of the file:

    mdadm --detail --scan >> /etc/mdadm/mdadm.conf

This should add a line like the following to the end of mdadm.conf:

ARRAY /dev/md0 level=raid5 num-devices=3 metadata=00.90 UUID=a44a52e4:0211e47f:f15bce44:817d167c

If the mdadm command has added any other stuff above the ARRAY line, remove it. For example, on one of my machines, the command returns 'mdadm: metadata format 00.90 unknown, ignored.' before the ARRAY line.

Your array should now auto-build on boot and thus you can add an entry to /etc/fstab to mount it (if it's not already there)

Solution 2

I realize this is an older question, but I had a frustrating time with this on the 32-bit version of Ubuntu Server 12.04.

Running mdadm --detail --scan >> /etc/mdadm/mdadm.conf appended the line

ARRAY /dev/md0 metadata=1.2 name=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

After a reboot I could never see /dev/md0. Running the mdadm --detail --scan again (without putting the result in a file) I would see

ARRAY /dev/md/ubuntu:0 metadata=1.2 name=ubuntu:0 UUID=a8a570c6:96f61865:05abe131:5c2e2f7e

and manually mounting /dev/md/ubuntu:0 would work. In the end, that was what I put in the fstab file too.

I am not sure what I got wrong, if this is how it works in Ubuntu 12.04, or if this is a bad practice. Just wanted to share what worked for me.

Solution 3

On Debian wheezy one more step is required: in /etc/default/mdadm set autostart from false to true

#AUTOSTART:
#   should mdadm start arrays listed in /etc/mdadm/mdadm.conf automatically
#   during boot?
AUTOSTART=true

Also I had to use mdadm -Es >>/etc/mdadm/mdadm.conf instead of the --scan option, as that did not work for me.

Solution 4

sudo mdadm -Es >> /etc/mdadm/mdadm.conf

Now edit lines added to /etc/mdadm/mdadm.conf in the following way. Delete everything, but the basic parts. It should look like

ARRAY /dev/md5 UUID=031cea92:50a7a28c:6b077fe7:8817092a
ARRAY /dev/md6 UUID=53454954:4044eb66:9169d1ed:40905643

Note: you can choose X in mdX to your convenience.

Now reboot

sudo update-initramfs -u
sudo reboot

EDIT: command corrected.

Share:
133,416

Related videos on Youtube

BreakPhreak
Author by

BreakPhreak

Updated on September 18, 2022

Comments

  • BreakPhreak
    BreakPhreak almost 2 years

    I successfully created a RAID (mirroring) by utilizing mdadm. However, I must run the following commands after each boot:

    mdadm --stop --scan // to stop /dev/md127 - I don't know where the number 127 even comes from
    mdadm --assemble --scan // to start /dev/md0
    

    What am I doing wrong/why do I need to run these commands at boot? What is the right way to auto-start RAID with each (re)boot?

  • Pablo Montepagano
    Pablo Montepagano over 11 years
    I would maybe add: you should also update your initramfs with update-initramfs -u
  • Lennart Rolland
    Lennart Rolland over 10 years
    mdadm --detail --scan does not print anything on my system, although I know for sure that I have two partitions that are part of a raid0 (mirror). Any general advice on this is welcome.
  • slm
    slm over 9 years
    @LennartRolland - try mdadm -Es instead.
  • gorn
    gorn about 9 years
    I wrote thi because Linker3000's answer did not work for me.
  • Rodney
    Rodney about 9 years
    Note that uname -r in the above is supposed to be in back-ticks but I can't figure out how to escape them so they're printed here...
  • Christophe De Troyer
    Christophe De Troyer over 8 years
    Same "problem" here. Not sure if it is a problem, though..
  • nwaltham
    nwaltham over 8 years
    Which version of raspbian was this? I had it working fine on Wheezy, but ugrading to Jessie broke the assemble on boot.
  • gorn
    gorn about 8 years
    this did not work for me, I had to do grub-install /dev/sda to make it work (replace sda for anything appropriate for you)
  • Pryftan
    Pryftan over 4 years
    Alternatively you can just use the kernel option: md.auto=1 ... I haven't actually tested this thoroughly but supposedly it detects them and assembles them (or at least tries to do so). But then kernel.org/doc/html/v4.15/admin-guide/md.html is a bit ambiguous on that: When md is compiled into the kernel (not as module), partitions of type 0xfd are scanned and automatically assembled into RAID arrays. [...] As of kernel 2.6.9, only drives with a type 0 superblock can be autodetected and run at boot time. And it doesn't refer to md.auto (or whatever it was) so I'm not sure now.
  • Alexander Pacha
    Alexander Pacha almost 4 years
    Just another sidenote, which took us two days to figure out: Disks must have a UUID before creating the RAID, otherwise the created IDs will change and the RAID won't be assembled. So we 1.) formated the individual disks, 2.) created the mdadm raid 3.) formatted the raid 4.) mounted the raid 5.) configured the raid to auto-mount it on startup
  • Soth
    Soth about 3 years
    On reboot my device had changed from /dev/md0 to /dev/md127