Skip to contentSkip to conversation

--no-degraded does not work

DISCUSSION P. Gautschi 2 participants 3 messages Nov 7, 2014 – Nov 10, 2014 MD RAID

lore
Share & tools
lore
#0 lore raw

As far as I understand the documentation --assemble --no-degraded should not start a degraded array. However on my system (kubuntu 14.10)

# mdadm --assemble --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: /dev/md0 has been started with 4 drives (out of 5).
# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Nov  4 15:26:46 2014
     Raid Level : raid5
     Array Size : 599469328 (571.70 GiB 613.86 GB)
  Used Dev Size : 149867332 (142.92 GiB 153.46 GB)
   Raid Devices : 5
  Total Devices : 4
    Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Fri Nov 7 17:22:53 2014
State : clean, degraded
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 4K

Name : 0
UUID : c7465b19:c149b2d1:5b4d88ce:8c6ce432
Events : 642

Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
5 8 81 4 active sync /dev/sdf1

the array IS started when removing one disk, stopping it, reconnecting the disk and then assemble the array. Is this the supposed behavior?

Patrick

#1 lore raw
Quoted 40 lines · On Fri, 07 Nov 2014 17:43:07 +0100 "P. Gautschi" <[email protected]> wrote:

As far as I understand the documentation --assemble --no-degraded should not start a degraded array. However on my system (kubuntu 14.10)

# mdadm --assemble --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: /dev/md0 has been started with 4 drives (out of 5).
# mdadm --detail /dev/md0
/dev/md0:
         Version : 1.2
   Creation Time : Tue Nov  4 15:26:46 2014
      Raid Level : raid5
      Array Size : 599469328 (571.70 GiB 613.86 GB)
   Used Dev Size : 149867332 (142.92 GiB 153.46 GB)
    Raid Devices : 5
   Total Devices : 4
     Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Fri Nov 7 17:22:53 2014
State : clean, degraded
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 4K

Name : 0
UUID : c7465b19:c149b2d1:5b4d88ce:8c6ce432
Events : 642

Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
5 8 81 4 active sync /dev/sdf1

Quoted 2 lines

the array IS started when removing one disk, stopping it, reconnecting the disk and then assemble the array. Is this the supposed behavior?

Yes, that is the correct behaviour, though I admit that it is slightly unintuitive.

--no-degraded will cause mdadm to refuse to assemble an array which is more degraded than it was last time it was active.

So if you have an optimal array, stop it, then try to assemble with some devices missing, then --no-degraded will cause that to fail.

If the array is already degraded, then there doesn't seem much point in stopping it from assembling.

Do you have a particular goal, or were you just making sure you understood?

Thanks,
NeilBrown

#2 lore raw
Quoted 1 line

Do you have a particular goal, or were you just making sure you understood?

Both. My goal is to keep my data a safe as possible in case of a 2 and more disk failure for non permanent failures. During experiments I has problems with a power cable and I was not able to recover from this situation. (3 Disk ok, 2 that failed after each other)
I therefor would not like to start the array when not all disk are ok.
I created a script that checks in readonly mode first.

Quoted 62 lines · NeilBrown
Quoted 40 lines · On Fri, 07 Nov 2014 17:43:07 +0100 "P. Gautschi"<[email protected]> wrote:

As far as I understand the documentation --assemble --no-degraded should not start a degraded array. However on my system (kubuntu 14.10)

# mdadm --assemble --no-degraded /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: /dev/md0 has been started with 4 drives (out of 5).
# mdadm --detail /dev/md0
/dev/md0:
          Version : 1.2
    Creation Time : Tue Nov  4 15:26:46 2014
       Raid Level : raid5
       Array Size : 599469328 (571.70 GiB 613.86 GB)
    Used Dev Size : 149867332 (142.92 GiB 153.46 GB)
     Raid Devices : 5
    Total Devices : 4
      Persistence : Superblock is persistent

Intent Bitmap : Internal

Update Time : Fri Nov 7 17:22:53 2014
State : clean, degraded
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 4K

Name : 0
UUID : c7465b19:c149b2d1:5b4d88ce:8c6ce432
Events : 642

Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
5 8 81 4 active sync /dev/sdf1

Quoted 2 lines

the array IS started when removing one disk, stopping it, reconnecting the disk and then assemble the array. Is this the supposed behavior?

Yes, that is the correct behaviour, though I admit that it is slightly unintuitive.

--no-degraded will cause mdadm to refuse to assemble an array which is more degraded than it was last time it was active.

So if you have an optimal array, stop it, then try to assemble with some devices missing, then --no-degraded will cause that to fail.

If the array is already degraded, then there doesn't seem much point in stopping it from assembling.

Do you have a particular goal, or were you just making sure you understood?

Thanks,
NeilBrown