크기 조정 후 mdadm 문제

크기 조정 후 mdadm 문제

나는 거의 10년 동안 동일한 어레이를 사용해 왔으며 가격이 하락함에 따라 디스크를 더 큰 디스크로 교체해 왔습니다.

최근 6TB 디스크 4개를 RAID 5로 업그레이드한 후 이상한 문제가 발생했습니다. 재부팅할 때마다 어레이는 4.4TB 어레이로 감지됩니다. 이것이 내 배열의 원래 크기입니다. 시스템이 부팅되면 mdadm --grow /dev/md0 --size=max시스템이 정상으로 돌아오기 전에 전체 재동기화를 실행하고 기다려야 합니다.

내가 뭘 잘못하고 있는지 잘 모르겠습니다.

디스크를 업그레이드할 때마다 다음 지침을 따릅니다.

mdadm --manage /dev/md0 --fail /dev/old_disk
mdadm --manage /dev/md0 --remove /dev/old_disk
mdadm --manage /dev/md0 --add /dev/new_disk

어레이의 각 디스크에 대해 이 작업을 수행하고 다음 디스크로 이동하기 전에 어레이가 제대로 작동할 때까지 기다렸습니다. 모두 더 큰 디스크로 교체한 후 mdadm --grow /dev/md0 --size=max파일 시스템을 실행하고 크기를 조정했습니다. 마지막 업그레이드에서는 16TB 이상을 확보하기 위해 ext4에서 64비트를 활성화해야 했습니다. 이것이 유일한 차이점입니다.

다음은 처음 부팅 시 fdisk -l 및 /proc/mdstat 출력입니다.

$ fdisk -l
Disk /dev/md0: 4.4 TiB, 4809380659200 bytes, 9393321600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 196608 bytes

$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid5 sdc1[3] sdb1[1] sdd1[0] sda1[2]
      4696660800 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>

달리고 난 후mdadm --grow /dev/md0 --size=max

$ fdisk -l
Disk /dev/md0: 16.4 TiB, 18003520192512 bytes, 35163125376 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 196608 bytes

$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid5 sdc1[3] sdb1[1] sdd1[0] sda1[2]
      17581562688 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [=====>...............]  resync = 29.9% (1757854304/5860520896) finish=333.2min speed=205205K/sec

unused devices: <none>
$ sudo mdadm --detail /dev/md0
/dev/md0:
           Version : 0.90
     Creation Time : Fri Dec 24 19:32:21 2010
        Raid Level : raid5
        Array Size : 17581562688 (16767.08 GiB 18003.52 GB)
     Used Dev Size : 18446744073709551615
      Raid Devices : 4
     Total Devices : 4
   Preferred Minor : 0
       Persistence : Superblock is persistent

       Update Time : Thu Apr 16 23:26:41 2020
             State : clean, resyncing 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 64K

Consistency Policy : resync

     Resync Status : 33% complete

              UUID : 5cae35da:cd710f9e:e368bf24:bd0fce41 (local to host ubuntu)
            Events : 0.255992

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       17        1      active sync   /dev/sdb1
       2       8        1        2      active sync   /dev/sda1
       3       8       33        3      active sync   /dev/sdc1

/etc/mdadm/mdadm.conf:

# mdadm.conf
#
# !NB! Run update-initramfs -u after updating this file.
# !NB! This will ensure that initramfs has an uptodate copy.
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default (built-in), scan all partitions (/proc/partitions) and all
# containers for MD superblocks. alternatively, specify devices to scan, using
# wildcards if desired.
#DEVICE partitions containers

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

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

# definitions of existing MD arrays
ARRAY /dev/md0 metadata=0.90 UUID=5cae35da:cd710f9e:e368bf24:bd0fce41

# This configuration was auto-generated on Mon, 20 May 2019 04:28:45 +0000 by mkconf

Ubuntu 18.04.4 64비트에서 mdadm - v4.1-rc1 - 2018-03-22를 실행하고 있습니다. 나는 이것에 완전히 길을 잃었습니다.

업데이트 1:

권장대로 메타데이터를 1.0으로 업데이트했으며 이제 어레이는 다시 5TB로 돌아가서 그 지점 이상으로 증가하지 않습니다.

$ cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid5 sdc1[3] sdb1[1] sdd1[0] sda1[2]
      17581562688 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>

$ sudo umount /mnt/array 
$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
$ cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
unused devices: <none>
$ sudo mdadm --assemble /dev/md0 --update=metadata /dev/sd[abcd]1
mdadm: /dev/md0 has been started with 4 drives.
$ cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active raid5 sdd1[0] sdc1[3] sda1[2] sdb1[1]
      4696660800 blocks super 1.0 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>
$ sudo mdadm --detail /dev/md0
/dev/md0:
           Version : 1.0
     Creation Time : Fri Dec 24 19:32:22 2010
        Raid Level : raid5
        Array Size : 4696660800 (4479.08 GiB 4809.38 GB)
     Used Dev Size : 1565553600 (1493.03 GiB 1603.13 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Fri Apr 17 12:41:29 2020
             State : clean 
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

            Layout : left-symmetric
        Chunk Size : 64K

Consistency Policy : resync

              Name : 0
              UUID : 5cae35da:cd710f9e:e368bf24:bd0fce41
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       17        1      active sync   /dev/sdb1
       2       8        1        2      active sync   /dev/sda1
       3       8       33        3      active sync   /dev/sdc1
$ sudo mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 unchanged at 1565553600K

답변1

오래된 버전 0.90 메타데이터를 사용하고 있습니다.

mdadm맨페이지 에서 :

          0, 0.90
                 Use the original 0.90 format superblock.  This format
                 limits arrays to 28 component devices and limits
                 component devices of levels 1 and greater to 2 terabytes.

                 It is also possible for there to be confusion about
                 whether the superblock applies to a whole device or just
                 the last partition, if that partition starts on a 64K
                 boundary.

드라이브당 2TB 제한을 원하지는 않습니다.

--update=metadata조립 시 사용을 고려해보세요 .

          The metadata option only works on v0.90 metadata arrays and will
          convert them to v1.0 metadata.  The array must not be dirty
          (i.e. it must not need a sync) and it must not have a write-
          intent bitmap.

1.2 메타데이터(드라이브 끝에서 약 64K가 아닌 처음부터 4K에 위치)로 마이그레이션하는 것이 더 좋지만 모든 데이터를 재배치해야 하므로 이 작업은 더 복잡합니다.

관련 정보