mdadm raid10에 새 장치 추가 - 새 장치의 섹터 수가 적습니다.

mdadm raid10에 새 장치 추가 - 새 장치의 섹터 수가 적습니다.

커널 4.4.6-1을 사용하여 데비안에서 테스트하는 동안 mdadm v3.4를 사용하여 생성된 raid10을 확장하기 위해 두 개의 새 드라이브를 추가하려고 합니다. 문제는 내 새 드라이브가 어레이를 만드는 데 사용된 가장 작은 드라이브보다 몇 섹터 부족하다는 것입니다. 어레이를 파괴하지 않고 파티션을 축소하는 방법이 있습니까?

root@debian-nas:~# mdadm /dev/md0 --add /dev/sdb1 /dev/sdd1
mdadm: /dev/sdb1 not large enough to join array

이것이 지금 배열의 모습입니다.

root@debian-nas:~# mdadm --detail --verbose /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Mar 26 21:13:23 2016
     Raid Level : raid10
     Array Size : 5860268032 (5588.79 GiB 6000.91 GB)
  Used Dev Size : 2930134016 (2794.39 GiB 3000.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sun Mar 27 16:25:22 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : debian-nas:0  (local to host debian-nas)
           UUID : 86266375:bf94ae93:d449a171:aa746159
         Events : 13726

    Number   Major   Minor   RaidDevice State
       0       8        1        0      active sync set-A   /dev/sda1
       1       8       33        1      active sync set-B   /dev/sdc1
       2       8       65        2      active sync set-A   /dev/sde1
       3       8       81        3      active sync set-B   /dev/sdf1

/dev/sdb1 및 /dev/sdd1을 /dev/md0에 추가하려고 합니다.

root@debian-nas:~# blockdev --report /dev/sda1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512   512       2048   3000591916544   /dev/sda1

root@debian-nas:~# blockdev --report /dev/sdb1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000590934016   /dev/sdb1

root@debian-nas:~# blockdev --report /dev/sdc1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000591450112   /dev/sdc1

root@debian-nas:~# blockdev --report /dev/sdd1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000590934016   /dev/sdd1

root@debian-nas:~# blockdev --report /dev/sde1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512  4096       2048   3000591450112   /dev/sde1

root@debian-nas:~# blockdev --report /dev/sdf1
RO    RA   SSZ   BSZ   StartSec            Size   Device
rw  2048   512   512       2048   3000591916544   /dev/sdf1

데이터를 어레이 밖으로 이동하여 파괴한 다음 새 드라이브를 포함할 수 있도록 더 작은 파티션으로 생성하는 것이 더 나을까요?

답변1

파티션 테이블이 필요하지 않은 경우 /dev/sd[bd](기본적으로 두 드라이브 모두에서 부팅할 필요가 없는 경우) 전체 드라이브를 어레이에 추가하면 충분한 섹터가 제공됩니다.

mdadm /dev/md0 --add /dev/sdb /dev/sdd

또는 새 파티션에 다운그레이드된 새 어레이를 생성하고 데이터를 해당 어레이로 마이그레이션한 다음 드라이브를 이전 어레이에서 새 어레이로 점진적으로 이동할 수 있습니다.

답변2

그래서 저는 어레이를 재구축하지 않고 데이터 손실 없이 /dev/sdb1사용 하는 방법을 알아냈습니다 ./dev/sdd1

이는 최신 커널(3.5 이상) 및 mdadm 버전 3.3 이상에서만 작동합니다.

어레이를 마운트 해제합니다.

umount /dev/md0

파일 시스템 검사를 실행하십시오. 다음 단계 전에 완료해야 합니다.

e2fsck -f /dev/md0

파일 시스템 크기를 5TB로 조정합니다.

resize2fs /dev/md0 5000G

파일 시스템에서 또 다른 검사를 실행하십시오. 지금까지 혼란을 일으키지 않도록 하세요.

e2fsck -f /dev/md0

어레이를 5TB 조금 넘게 축소합니다. 여기서 크기 매개변수는 어레이의 각 디스크에서 사용할 공간의 양입니다. 이것은 아마도 (size of fs / number of mirrors) + some small extra. 제 경우에는 파일 시스템을 5TB로 설정했고, RAID 10에 4개의 디스크가 있어서 2개의 미러링 스트라이프가 생겼습니다. 이는 파일 시스템보다 더 큰 총 크기를 제공해야 하며 그렇지 않으면 데이터가 손실됩니다.

mdadm --verbose --grow --size=2685403136 /dev/md0 # 2.5TB + 1MB

파일 시스템을 다시 확인하십시오.

e2fsck -f /dev/md0

이 시점에서 더 작은 드라이브를 RAID 10에 추가할 수 있지만 먼저 데이터가 양호한지 확인하십시오. 파일 시스템 검사에만 의존하지 마십시오. 실제로 데이터가 양호한지 확인하십시오.

이제 새 드라이브를 추가할 수 있습니다!

mdadm --add /dev/md0 /dev/sdf1 /dev/sdg1

그리고 이를 사용하기 위해 배열을 확장합니다.

mdadm --verbose --grow --raid-devices=6 /dev/md0

이 시점에서 a를 실행하면 cat /proc/mdstat다음이 표시됩니다.

Personalities : [raid6] [raid5] [raid4] [raid0] [raid10]
md0 : active raid10 sdd1[5] sdb1[4] sdf1[3] sde1[2] sdc1[1] sda1[0]
      5370806272 blocks super 1.2 512K chunks 2 near-copies [6/6] [UUUUUU]
      [>....................]  reshape =  2.8% (151477952/5370806272) finish=458.7min speed=189604K/sec
      bitmap: 11/31 pages [44KB], 131072KB chunk

unused devices: <none>

재구성이 완료된 후 또 다른 파일 시스템 검사를 수행하십시오. (저는 편집증이 있어서 모든 단계를 확인하겠습니다.)

e2fsck -f /dev/md0

이제 드라이브가 지원하는 최대 크기로 어레이 크기를 조정합니다.

mdadm --verbose --grow --size=max /dev/md0

그런 다음 파일 시스템의 크기를 조정하십시오.

resize2fs /dev/md0

그리고 다시 확인해 보세요.

e2fsck -f /dev/md0

마지막으로 새로 확장된 파일 시스템을 마운트할 수 있습니다.

mount /dev/md0 /mnt/raid10

관련 정보