mdadm-RAID0에서 디스크 제거


11

그래서 알고 싶습니다 .mdadm으로 다음을 수행 할 수 있습니다.

  1. 2 개의 디스크에서 RAID0 구성으로 시작합니다 : sdasdb.
  2. 하나의 디스크를 어레이에 추가 sdc하고 모든 데이터를 디스크로 옮기고 싶습니다 sdb.
  3. 연결을 끊습니다 sdb.

나는 배열을 중지 복사 - 지금은 하나 개의 옵션이 표시 sdbsdc함께 dd또는 다른 블록 복사 도구와 배열 다시 시작합니다.

내가 뭔가를 그리워합니까? mdadm으로이 작업을 수행 할 수 있습니까?


sdb를 임시 미러로 만든 다음 백그라운드에서 sdc를 동기화 할 수 있습니다. 필요한 중단 시간은 줄었지만 초보자는하지 않았습니다.
peterh-복 직원 모니카

나는 초보자가 아닙니다 :) 임시 거울에 대해 더 자세히 말씀해 주시겠습니까? mdadm 기능입니까?
maniaque

아니요, 간단한 공격 기능입니다. 나는 raid1 배열에서 sdb를 대신 할 수있는 임시 raid1 배열을 생각했습니다. sdb를 sdc와 동기화하는 동안 raid0 배열의 일부로 사용할 수도 있습니다.
peterh-Reinstate Monica

내가 당신을 잘 이해합니까? 1. 배열을 중지하십시오. 2. sbd 및 sdc를 사용하여 RAID1 어레이를 하나 더 만듭니다. 3. 어떻게 mdadm을 물어서 sdb 대신 md1로 RAID0을 시작합니까?
maniaque

많이 연구하지는 않았지만 RAID0-> RAID5에서 성장할 수있을 것 같습니다. 그런 다음 RAID0으로 축소하십시오.
Zoredache

답변:


17

우선 : "RAID0에는 핫 스페어가 없다"고 믿는 사람들에게. RAID 레벨과 mdadm을 이해하는 사람이 수동으로 예비 스페어를 가질 수 있습니다. mdadm은 소프트웨어 RAID이므로 많은 흥미로운 작업을 수행 할 수 있습니다.

아이디어에 대한 Zoredache의 크레딧 !

따라서 상황은 다음과 같습니다.

  • 두 디스크의 RAID0 배열이 있습니다
  • 어레이 다운 타임없이 이들 중 하나를 교체하고 싶습니다

가동 중지 시간이 허용되는 경우 항상 dd를 사용하여 디스크의 블록 복사본을 만들고 어레이를 다시 어셈블하면 mdadm이 정상적으로 작동합니다.

솔루션 : 중간 솔루션으로 RAID4 사용

RAID0-> RAID4-> RAID0

따라서 RAID4를 기억하지 못하면 간단합니다. 패리티 블록이 있지만 RAID5와 달리 어레이에 분산되지 않지만 하나의 디스크에 상주합니다. 요점은 이것이 중요하며 이것이 RAID5가 작동하지 않는 이유입니다.

필요한 것 : 교체하려는 디스크와 동일한 크기의 디스크 두 개 더.

환경:

  • 우분투 14.04 추력 타르
  • mdadm-v3.2.5-2012 년 5 월 18 일
  • / dev / sdb-시작하여 교체합니다
  • / dev / sdc-시작
  • / dev / sdd-임시로 사용됩니다
  • / dev / sde-sdb 대신 사용됩니다

최고의 RAID0 핫 스페어 mdadm 안내서;)

sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]

md0 : active raid0 sdc[1] sdb[0]
      2096128 blocks super 1.2 512k chunks

우리는 raid0 배열을 만들었습니다. 달콤 해 보입니다.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

이것이 우리의 체크 포인트입니다. 결과적으로 1 비트라도 /dev/md0달라지면 실패했습니다.

sudo mdadm /dev/md0 --grow --level=4

md0 : active raid4 sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

따라서 어레이를 RAID4로 성장 시켰습니다. 우리는 아직 패리티 디스크를 추가하지 않았으므로 그렇게하자. 성장은 즉각적 일 것입니다-재 계산 또는 재 계산할 것이 없습니다.

sudo mdadm /dev/md0 -a /dev/sdd

md0 : active raid4 sdd[3] sdc[1] sdb[0]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [===>.................]  recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec

sdd패리티 디스크로 추가 했습니다. 첫 번째 행의 디스크 순서는 두 번째 행의 그림과 동기화되지 않습니다. [UU_]

sdd 먼저 표시되지만 실제로는 마지막 데이터이며 데이터가 아니라 패리티를 보유합니다.

sudo mdadm /dev/md0 -f /dev/sdb

md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

디스크 sdb에 결함이 생겨 다음 단계에서 디스크를 제거했습니다.

sudo mdadm --detail /dev/md0

State : clean, degraded

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       3       8       48        2      active sync   /dev/sdd

       0       8       16        -      faulty spare   /dev/sdb

세부 사항은 첫 번째 디스크 제거를 보여 주며 여기에서 어레이에서 디스크의 실제 순서를 볼 수 있습니다. 패리티가있는 디스크를 추적하는 것이 중요합니다. RAID0으로 돌아갈 때 어레이에 디스크를 남겨두면 안됩니다.

sudo mdadm /dev/md0 -r /dev/sdb

md0 : active raid4 sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]

sdb 완전히 제거 할 수 있습니다.

sudo mdadm /dev/md0 -a /dev/sde

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
      [==>..................]  recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec

sdb 디스크를 대체했습니다. sdb 의 데이터는 패리티를 사용하여 복구됩니다. 스 eeeee 트.

md0 : active raid4 sde[4] sdd[3] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]

끝난. 지금 우리는 완전히 안전합니다-sdb의 모든 데이터가 복구되었으며 이제 sdd를 제거해야합니다 (패리티가 있음을 기억하십시오).

sudo mdadm /dev/md0 -f /dev/sdd

md0 : active raid4 sde[4] sdd[3](F) sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

sdd에 결함이 있습니다.

sudo mdadm /dev/md0 -r /dev/sdd

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]

배열에서 sdd를 제거했습니다. 다시 RAID0이 될 준비가되었습니다.

sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup

md0 : active raid4 sde[4] sdc[1]
      2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
      [=>...................]  reshape =  7.0% (73728/1048064) finish=1.5min speed=10532K/sec

아아 아아아!

md0 : active raid0 sde[4] sdc[1]
      2096128 blocks super 1.2 512k chunks

끝난. md5 체크섬을 살펴 보겠습니다.

sudo md5sum /dev/md0

b422ba644a3c83cdf28adfa94cb658f3  /dev/md0

또 다른 질문? 따라서 RAID0에 핫 스페어가있을 수 있습니다. "사용자"라고합니다.)


1

RAID0을 설정 한 후에는 디스크 중 하나를 변경할 수 없습니다. 백업을 수행하고 디스크를 전환하고 백업을 복원 할 수 있습니다. 나는 당신이 가지고있는 3 개의 디스크를 RAID5 할 것입니다. 그런 식으로 나중에 디스크를 삭제하고 여전히 재 구축 할 수 있습니다.


글쎄, 나는 RAID5로 이야기하는 것을하는 방법을 알고 있습니다-새로운 디스크를 어레이에 추가하고 (예비로) 결함이있는 것으로 디스크를 표시하고 어레이에서 제거하여 나중에 수퍼 블록을 닦아냅니다. 그러나 나는 RAID0와 동일한 작업에 관심이 있습니다 :)
maniaque

@maniaque 0은 RAID의 양이므로 RAID 0이라고합니다. 절대적으로 중요한 것은 RAID 0에 배치해서는 안됩니다.
Michael Hampton

@MichaelHampton RAID가 아닌 중복성을 의미한다고 생각하지만 진술은 100 % 정확합니다.
joeg1ff

@MichaelHampton 아래 내 답변을 참조하십시오 :)
maniaque

0

RAID 0은 중복성을 제공하지 않습니다.

따라서 핫 드라이브 교체를 지원하지 않습니다.


1
아래를보세요. RAID 레벨을 이해하면 불가능한 것이 없습니다.;)
maniaque
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.