diff --git a/usr/lib/fai/fai-disk-info b/usr/lib/fai/fai-disk-info
index e1cbe00..aaaa71c 100755
--- a/usr/lib/fai/fai-disk-info
+++ b/usr/lib/fai/fai-disk-info
@@ -19,4 +19,4 @@ checkdisk() {
 }
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 # echo a space separated list of devices and their block size
-egrep ' etherd/e[[:digit:]]+\.[[:digit:]]+\b| i2o/hd.+\b| cciss/c.+d.+\b| ida/c.+d.+\b| rd/c.+d.+\b| fio.\b| hd.\b| sd[a-z]{1,2}\b|/disc\b| vd.\b| xvd.\b' /proc/partitions | checkdisk
+( egrep 'md[0-9]{1,3}$' /proc/partitions; egrep ' etherd/e[[:digit:]]+\.[[:digit:]]+\b| i2o/hd.+\b| cciss/c.+d.+\b| ida/c.+d.+\b| rd/c.+d.+\b| fio.\b| hd.\b| sd[a-z]{1,2}\b|/disc\b| vd.\b| xvd.\b' /proc/partitions ) | checkdisk
diff --git a/usr/share/fai/setup-storage/Init.pm b/usr/share/fai/setup-storage/Init.pm
index 44a7e52..41bb62f 100755
--- a/usr/share/fai/setup-storage/Init.pm
+++ b/usr/share/fai/setup-storage/Init.pm
@@ -219,7 +219,7 @@ sub phys_dev {
     return (1, "/dev/$1", $2);
   }
   elsif ($dev =~
-    m{^/dev/(cciss/c\d+d\d+|ida/c\d+d\d+|rd/c\d+d\d+|ataraid/d\d+|etherd/e\d+\.\d+)(p(\d+))?$})
+    m{^/dev/(cciss/c\d+d\d+|ida/c\d+d\d+|md[0-9]{1,3}|md/\w+[0-9]|rd/c\d+d\d+|ataraid/d\d+|etherd/e\d+\.\d+)(p(\d+))?$})
   {
     defined($2) or return (1, "/dev/$1", -1);
     return (1, "/dev/$1", $3);
@@ -306,7 +306,7 @@ sub mark_encrypted {
 sub make_device_name {
   my ($dev, $p) = @_;
   $dev .= "p" if ($dev =~
-    m{^/dev/(cciss/c\d+d\d+|ida/c\d+d\d+|rd/c\d+d\d+|ataraid/d\d+|etherd/e\d+\.\d+)$});
+    m{^/dev/(cciss/c\d+d\d+|ida/c\d+d\d+|md\d+|md/\w+\d+|rd/c\d+d\d+|ataraid/d\d+|etherd/e\d+\.\d+)$});
   if ((&FAI::loopback_dev($dev))[0])
   {
     $p += (&FAI::loopback_dev($dev))[1];
diff --git a/usr/share/fai/setup-storage/Volumes.pm b/usr/share/fai/setup-storage/Volumes.pm
index edef441..3f87ab3 100755
--- a/usr/share/fai/setup-storage/Volumes.pm
+++ b/usr/share/fai/setup-storage/Volumes.pm
@@ -486,6 +486,10 @@ sub get_current_raid {
   # the id of the RAID
   my $id;
 
+  # container
+  my $container;
+  my $container_devices;
+
   # parse the output line by line
   foreach my $line (@mdadm_print) {
     print MDADM_EX "$line";
@@ -495,17 +499,44 @@ sub get_current_raid {
       foreach (split (" ", $line)) {
         $FAI::current_raid_config{$id}{mode} = $1 if ($_ =~ /^level=(\S+)/);
       }
+
+    # WORK-AROUND
+    } elsif ($line =~ /^ARRAY metadata=([a-z]+) UUID=([a-z0-9:]+)/) {
+      $container = $2;
+
+    # WORK-AROUND
+    } elsif ($line =~ /^ARRAY \/dev\/md(\/\w+\d+) container=([a-z0-9:]+) member=([0-9]+) UUID=([a-z0-9:]+)/) {
+      $id = $1;
+      if (defined($container) and defined($container_devices) and "$2" eq "$container") {
+        $FAI::current_raid_config{$id}{mode} = "raid1";
+        foreach my $d (split (",", $container_devices)) {
+          push @{ $FAI::current_raid_config{$id}{devices} }, abs_path($d);
+
+          # add entry in device tree
+          push @{ $FAI::current_dev_children{abs_path($d)} }, "/dev/md$id";
+        }
+      }
+      undef($id);
+      undef($container);
+      undef($container_devices);
+
     } elsif ($line =~ /^\s*devices=(\S+)$/) {
-      defined($id) or
+      if (defined($id)) {
+        foreach my $d (split (",", $1)) {
+          push @{ $FAI::current_raid_config{$id}{devices} }, abs_path($d);
+
+          # add entry in device tree
+          push @{ $FAI::current_dev_children{abs_path($d)} }, "/dev/md$id";
+        }
+
+      # WORK-AROUND
+      } elsif (defined($container)) {
+        $container_devices = $1;
+
+      } else {
         &FAI::internal_error("mdadm ARRAY line not yet seen -- unexpected mdadm output:\n"
         . join("", @mdadm_print));
-      foreach my $d (split (",", $1)) {
-        push @{ $FAI::current_raid_config{$id}{devices} }, abs_path($d);
-
-        # add entry in device tree
-        push @{ $FAI::current_dev_children{abs_path($d)} }, "/dev/md$id";
       }
-
       undef($id);
     }
   }
