mdadm RAID5 3*3TB, 데이터가 포함된 드라이브 1개

mdadm RAID5 3*3TB, 데이터가 포함된 드라이브 1개

sdd현재 데이터를 하나의 디스크( )에 저장하고 있습니다. 이제 두 개의 새로운 3TB 디스크( sdb&sdc)가 있고 세 디스크 모두에 RAID5 어레이를 생성하려고 합니다.

  • sdb: gpt 테이블, 빈 파티션 sdb1
  • sdc: gpt 테이블, 빈 파티션 sdc1
  • sdd:gpt 테이블, 내 데이터가 포함된 btrfs-partition sdd1

내 계획은 이렇습니다.

  • RAID5 어레이를 생성 md0하고sdb1sdc1
  • 여기에 btrfs 파일 시스템을 만듭니다.
  • sdd1데이터 복사md0
  • 재파티션(=삭제)sdd
  • 배열을 다음으로 확장sdd1

현재 2개의 디스크 RAID5 어레이를 만드는 중입니다. 나는 배열을 구성했다.

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sdc1 /dev/sdb1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2900832256K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

그리고 초기 동기화를 수행하고 있음을 보여줍니다. 현재 데이터가 저장되어 있는 /proc/mdstat디스크( )가 있습니다 . sdd이제 두 개의 새로운 3TB 디스크( sdb&sdc)가 있고 세 디스크 모두에 RAID5 어레이를 생성하려고 합니다.

  • sdb: gpt 테이블, 빈 파티션 sdb1
  • sdc: gpt 테이블, 빈 파티션 sdc1
  • sdd:gpt 테이블, 내 데이터가 포함된 btrfs-partition sdd1

내 계획은 이렇습니다.

  • RAID5 어레이를 생성 md0하고sdb1sdc1
  • 여기에 btrfs 파일 시스템을 만듭니다.
  • sdd1데이터 복사md0
  • 재파티션(=삭제)sdd
  • 배열을 다음으로 확장sdd1

현재 2개의 디스크 RAID5 어레이를 만드는 중입니다. 나는 배열을 구성했다.

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=2 /dev/sdc1 /dev/sdb1
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 2900832256K
mdadm: automatically enabling write-intent bitmap on large array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

/proc/mdstat초기 동기화를 수행하는 모습을 보여줍니다 .

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]
        md0 : active raid5 sdb1[2] sdc1[0]
          2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
          [>....................]  recovery =  0.6% (19693440/2900832256) finish=308.8min speed=155487K/sec
          bitmap: 0/22 pages [0KB], 65536KB chunk

    unused devices: <none>

상단에는 이 기간 동안 md(adm)가 CPU의 약 35%를 사용했음을 보여줍니다.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
  989 root      20   0       0      0      0 S  29.1  0.0   0:17.69 md0_raid5
  994 root      20   0       0      0      0 D   6.6  0.0   0:03.54 md0_resync

여태까지는 그런대로 잘됐다. 이 작업은 약 6시간 정도 소요됩니다. 첫 번째 시도에서는 서버를 재부팅해야 했기 때문에 약 5시간 후에 어레이가 중지되었고, 두 번째 시도에서는 드라이브 sdb가 이상하게 사라져서 시스템도 재부팅해야 했습니다.

배열이 자동으로 시작되지만 진행률 표시줄이 사라집니다.

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10]      
md127 : active (auto-read-only) raid5 sdb1[2] sdc1[0]
      2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
      bitmap: 0/22 pages [0KB], 65536KB chunk

unused devices: <none>

CPU 사용량이 없다고 보고 합니다 top.

그래서 수동으로 중지하고 조립해 보았습니다.

~# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
~# mdadm --assemble --verbose /dev/md0 /dev/sdc1 /dev/sdb1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdb1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.

재구축 중이라고 나와 있지만 mdstat에는 아무 표시도 표시되지 않습니다.

Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active (auto-read-only) raid5 sdc1[0] sdb1[2]
      2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
      bitmap: 0/22 pages [0KB], 65536KB chunk

unused devices: <none>

상단에는 CPU 사용량이 다시 표시되지 않습니다.

그래서 수동으로 동기화를 강제하는 방법을 온라인에서 검색하여 이것을 찾았 --update=resync지만 성공하지 못했습니다.

~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
~# mdadm --assemble --verbose --force --run --update=resync /dev/md0 /dev/sdc1 /dev/sdb1
mdadm: looking for devices for /dev/md0
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: Marking array /dev/md0 as 'clean'
mdadm: added /dev/sdb1 to /dev/md0 as 1
mdadm: added /dev/sdc1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 1 drive (out of 2) and 1 rebuilding.
root@server:~# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md0 : active (auto-read-only) raid5 sdc1[0] sdb1[2]
      2900832256 blocks super 1.2 level 5, 512k chunk, algorithm 2 [2/1] [U_]
      bitmap: 0/22 pages [0KB], 65536KB chunk

unused devices: <none>

(아직 CPU 사용량은 없습니다)


이틀 동안 직접 문제를 해결하려고 노력한 후에 도움이나 조언을 주시면 정말 감사하겠습니다.

답변1

RAID 배열에는 아무것도 없기 때문에 간단한 옵션은 모든 것을 지우고 다시 시작하는 것입니다.

  • mdadm /dev/md127 --fail /dev/sdb1; mdadm /dev/md127 --fail /dev/sdc1; mdadm /dev/md127 --remove failed
  • wipefs -a /dev/sdb1; wipefs -a /dev/sdc1

그런데 성능이 저하된 RAID 5 어레이를 생성한 다음 여기에 세 번째 디스크를 추가하는 것이 좋습니다. 재구축은 일반적으로 재구축보다 빠르지만, 재구축 중에 디스크에 오류가 발생하면 데이터 손실 가능성이 높아집니다(백업이 있지 않습니까?).

  • mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdc1 /dev/sdb1 missing
  • 새 파일 시스템 생성
  • 데이터 복사
  • wipefs -a /dev/sdd1
  • mdadm /dev/md0 --add /dev/sdd1

관련 정보