Strange behavior when I grow raid0

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I recently migrated from btrfs raid-5 to md raid-5 and because I didn't have enough drives to go directly md raid-5, I basicly did this:
- 2 disks raid-0
- added 3rd disk with grow when I had moved data, still raid-0
- added 4th disk with grow when I had moved more data, still raid-0
- added 5th disk with grow and converted to raid-5

Everything went fine other than I could not add internal bitmap because array was created as raid-0 originally but thats not an issue, I'll store bitmap to my /boot, it's raid-1 on SSD and ext4.

Today I noticed that my array parity layout is parity-last and I started to wonder why is that, then I did remember that there was some strange things happening when I did add 4th drive and I made testing and was able to replicate what happened.

[root@nas ~]# mdadm -C /dev/md/testraid -l 0 -n 2 -N testraid /dev/loop21 /dev/loop22
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/testraid started.


[root@nas ~]# mdadm -D /dev/md/testraid
/dev/md/testraid:
           Version : 1.2
     Creation Time : Fri Dec 10 22:52:01 2021
        Raid Level : raid0
        Array Size : 98304 (96.00 MiB 100.66 MB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Fri Dec 10 22:52:01 2021
             State : clean
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

            Layout : -unknown-
        Chunk Size : 512K

Consistency Policy : none

              Name : nas:testraid  (local to host nas)
              UUID : b6e0c60a:da4c6fb1:9dc5ff07:adeda371
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       7       21        0      active sync   /dev/loop21
       1       7       22        1      active sync   /dev/loop22


[root@nas ~]# mdadm --grow /dev/md/testraid -n 3 -l 0 --add /dev/loop23
mdadm: level of /dev/md/testraid changed to raid4
mdadm: added /dev/loop23


[root@nas ~]# mdadm -D /dev/md/testraid
/dev/md/testraid:
           Version : 1.2
     Creation Time : Fri Dec 10 22:52:01 2021
        Raid Level : raid0
        Array Size : 147456 (144.00 MiB 150.99 MB)
      Raid Devices : 3
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Fri Dec 10 22:53:33 2021
             State : clean
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : nas:testraid  (local to host nas)
              UUID : b6e0c60a:da4c6fb1:9dc5ff07:adeda371
            Events : 18

    Number   Major   Minor   RaidDevice State
       0       7       21        0      active sync   /dev/loop21
       1       7       22        1      active sync   /dev/loop22
       3       7       23        2      active sync   /dev/loop23


[root@nas ~]# mdadm --grow /dev/md/testraid -n 4 -l 0 --add /dev/loop24
mdadm: level of /dev/md/testraid changed to raid4
mdadm: added /dev/loop24
mdadm: Need to backup 6144K of critical section..


[root@nas ~]# mdadm -D /dev/md/testraid
/dev/md/testraid:
           Version : 1.2
     Creation Time : Fri Dec 10 22:52:01 2021
        Raid Level : raid4
        Array Size : 196608 (192.00 MiB 201.33 MB)
     Used Dev Size : 49152 (48.00 MiB 50.33 MB)
      Raid Devices : 5
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Dec 10 22:59:56 2021
             State : clean, degraded
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : resync

              Name : nas:testraid  (local to host nas)
              UUID : b6e0c60a:da4c6fb1:9dc5ff07:adeda371
            Events : 39

    Number   Major   Minor   RaidDevice State
       0       7       21        0      active sync   /dev/loop21
       1       7       22        1      active sync   /dev/loop22
       3       7       23        2      active sync   /dev/loop23
       4       7       24        3      active sync   /dev/loop24
       -       0        0        4      removed


[root@nas ~]# mdadm --grow /dev/md/testraid -n 5 -l 5 --add /dev/loop25
mdadm: level of /dev/md/testraid changed to raid5
mdadm: added /dev/loop25


[root@nas ~]# mdadm -D /dev/md/testraid
/dev/md/testraid:
           Version : 1.2
     Creation Time : Fri Dec 10 22:52:01 2021
        Raid Level : raid5
        Array Size : 196608 (192.00 MiB 201.33 MB)
     Used Dev Size : 49152 (48.00 MiB 50.33 MB)
      Raid Devices : 5
     Total Devices : 5
       Persistence : Superblock is persistent

       Update Time : Fri Dec 10 23:00:39 2021
             State : clean
    Active Devices : 5
   Working Devices : 5
    Failed Devices : 0
     Spare Devices : 0

            Layout : parity-last
        Chunk Size : 512K

Consistency Policy : resync

              Name : nas:testraid  (local to host nas)
              UUID : b6e0c60a:da4c6fb1:9dc5ff07:adeda371
            Events : 59

    Number   Major   Minor   RaidDevice State
       0       7       21        0      active sync   /dev/loop21
       1       7       22        1      active sync   /dev/loop22
       3       7       23        2      active sync   /dev/loop23
       4       7       24        3      active sync   /dev/loop24
       5       7       25        4      active sync   /dev/loop25


Notice how array stay at raid4 degraded after I add 4th drive. Why is this happening? It doesn't happen when I added 3rd drive, it did reshape it through raid-4 but when it was finished it returned raid-0.

I also did another test where I made extra step after adding 4th disk:

[root@nas ~]# mdadm --grow /dev/md/testraid -n 4 -l 0
mdadm: level of /dev/md/testraid changed to raid0
[root@nas ~]# cat /proc/mdstat
Personalities : [raid1] [raid0] [linear] [raid6] [raid5] [raid4]
md118 : active raid0 loop24[4] loop23[3] loop22[1] loop21[0]
      196608 blocks super 1.2 512k chunks


And when I did add 5th drive and converted array to raid-5, it correctly defaults layout to left-symmetric.

Is this some sort of bug or working as intented? Also why is this "Need to backup 6144K of critical section.." happening when I add 4th disk but not when I add 3rd disk?


distro: Fedora 35
kernel:  5.15.6
mdadm:  v4.2-rc2


// JiiPee



[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux