mdadm이 두 번째 동일한 디스크를 어레이에 추가하는 것을 거부합니다.

mdadm이 두 번째 동일한 디스크를 어레이에 추가하는 것을 거부합니다.

성능이 저하된 상태의 RAID 1 어레이가 있고 여기에 다른 드라이브를 추가하고 싶습니다.

# mdadm --detail /dev/md1 
/dev/md1:
        Version : 1.2
  Creation Time : Fri Mar 21 17:23:00 2014
     Raid Level : raid1
     Array Size : 488254464 (465.64 GiB 499.97 GB)
  Used Dev Size : 488254464 (465.64 GiB 499.97 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Tue Jun  9 00:10:04 2015
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : mars:1  (local to host mars)
           UUID : 3458a3fd:a510d0a7:605d8cd5:9880c31e
         Events : 25816

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       2       0        0        2      removed

전체 크기에 맞게 동일하게 포맷된 첫 번째 드라이브와 동일한 드라이브를 사용하려고 합니다. 그러나 mdadm은 추가를 거부합니다.

# mdadm /dev/md1 --add /dev/sdc1 
mdadm: /dev/sdc1 not large enough to join array

분할 출력은 두 드라이브의 섹터 크기가 서로 다르다는 것을 나타내지만 그것이 무엇인지, 수정할 수 있는지 확실하지 않습니다. 그렇지 않다면 내 선택은 무엇입니까?

# parted /dev/sdb unit s print
Model: ATA SAMSUNG HD502HJ (scsi)
Disk /dev/sdb: 976773168s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End         Size        Type     File system  Flags
 1      2048s  976773119s  976771072s  primary  ext4         raid, type=fd

# parted /dev/sdc unit s print
Model: ATA SAMSUNG HD502HJ (scsi)
Disk /dev/sdc: 976771055s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End         Size        Type     File system  Flags
 1      2048s  976769023s  976766976s  primary               raid, type=fd

답변1

976766976은 /dev/sdb9767보다 작습니다.7/dev/sdc1072화

이것은 동일한 드라이브가 아닙니다.

답변2

새 디스크는 기존 디스크보다 1MB 조금 더 작습니다. 이는 모델이 다를 수도 있고(명칭이 동일하더라도 다른 공장에서 약간 다른 사양으로 제조될 수 있음), 공장 테스트 중에 결함이 있는 부분이 더 많이 발견되었을 수도 있습니다.

에는 전체 디스크에서 MBR의 1 섹터를 뺀 파티션과 사용되지 않은 섹터를 추가하여 파티션을 1MB(성능을 위해 권장됨)로 정렬하는 파티션이 sdb있습니다 . sdb1배열은 전체 파티션에 걸쳐 있으며 크기는 파티션에서 128MB를 뺀 크기입니다.영역 모양 변경.

976771055 섹터의 크기는 sdc배열 976771072 섹터의 크기보다 17 섹터 작습니다. 따라서 새 디스크에 어레이를 설치할 수 없습니다.

동일한 데이터와 더 작은 모양 변경 영역으로 배열을 생성할 수 있습니다. 거의 맞기 때문에 128MB에서 2MB만 빼면 충분합니다. 기존 배열에서는 모양 변경 영역의 크기를 조정할 수 없다고 생각하므로 이를 백업하고 새 배열을 만든 다음 데이터를 복원해야 합니다.

내가 원하는 것은 어레이의 파티션을 2MB만큼 줄이는 것입니다.

sdc1어쨌든 제 생각에는 가장 간단한 해결책은 새로운 RAID-1 어레이를 유일한 활성 볼륨 으로 만드는 것입니다 . 배열의 파티션 크기를 유지하려면 --data-offset=126M모두 맞도록 모양 변경 영역을 생성하세요. 더 나은 방법은 이 문제가 다시 발생할 경우를 대비해 안전 여유로 몇 MB를 빼고 전체 파티션에 걸쳐 있는 배열을 만드는 것입니다. 그런 다음 이전 어레이의 모든 데이터를 새 어레이에 복사합니다. 더 작은 영역을 생성하는 경우 축소하려는 파티션의 파티션 복사본이 아닌 파일 복사를 수행하거나 (파티션이 여러 개인 경우) 해당 파티션을 먼저 수행한 다음 축소하십시오. 마지막으로 배열의 내용을 지우고 새 배열에 sdb1추가합니다 .sdb1

또는 마지막 2MB(최소)가 어떤 파티션에도 할당되지 않도록 기존 배열의 내용을 축소한 다음 mdadm /dev/md1 --grow --size=…기존 배열을 축소하는 데 사용합니다.

답변3

이 디스크에는 HPA가 있습니다. 동일한 디스크가 있고 HPA를 제거하여 누락된 섹터를 성공적으로 회수하고 두 드라이브를 모두 동일하게 만들었습니다. 바라보다https://superuser.com/a/642765

# hdparm -N /dev/sdx
# hdparm -N p976773168 /dev/sdx

답변4

내가 이 트릭을 알고 있는 sdb와 동일한 파티션을 sdc에 생성하기만 하면 됩니다(먼저 백업을 만들고 디스크를 넘어서는 파티션을 피하십시오(예: 2개의 디스크 220G sdb 210G sdc). 210G 아래에 2개의 파티션을 생성하거나 199G와 동일한 2개의 파티션을 생성할 수도 있습니다. 파티션 케이스)

sfdisk -d /dev/sdb > part_table
sfdisk /dev/sdc < part_table

그런 다음 sdc1을 다시 추가해 보세요.

관련 정보