RAID-10 어레이 내에서 미러링 된 드라이브를 찾아야합니다.


9

openSUSE 12.2에서 실행되는 홈 미디어 서버가 있습니다. RAID-10 구성에서 8 개의 2TB 드라이브를 사용하고 있습니다. Seagate Barracuda Green 4 개와 Western Digital Red 4 개를 고의적으로 두 가지 종류의 드라이브로 구입했습니다. 저의 목표는 어레이 내의 각 미러 쌍이 서로 다른 드라이브 (즉, 하나의 Seagate 드라이브와 하나의 WD 드라이브)로 구성되도록 RAID를 구성하는 것입니다. YaST2 Partitioner는 불행히도 어레이 구조에서이 수준의 선택을 제공하지 않았으므로 이제 기본 RAID10 구조가 어떻게 보이는지 알아 내려고합니다.

나는 다음을 알고있다 :

  • sdc, sdd, sde 및 sdf는 모두 WD 드라이브입니다
  • sdg, sdh, sdi 및 sdj는 모두 Seagate 드라이브입니다

RAID를 만들 때 기본 'n2'레이아웃을 선택했습니다. 이 두 소스의 정보를 기반으로 한 추측은 인접한 드라이브가 미러링된다는 것입니다 (예 : sdc == sdd, sde == sdf 등).하지만 확실하게 알고 싶습니다.

다음은 'mdadm --detail / dev / md0'의 출력입니다.

/dev/md0:
        Version : 1.0
  Creation Time : Sat Mar 16 12:55:11 2013
     Raid Level : raid10
     Array Size : 7814045696 (7452.05 GiB 8001.58 GB)
  Used Dev Size : 1953511424 (1863.01 GiB 2000.40 GB)
   Raid Devices : 8
  Total Devices : 8
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Sat Mar 16 13:09:37 2013
          State : active, resyncing
 Active Devices : 8
Working Devices : 8
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 2048K

  Resync Status : 1% complete

           Name : aldaris:0  (local to host aldaris)
           UUID : c6cc3943:97394500:b77d44cd:f02ed876
         Events : 149

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      113        5      active sync   /dev/sdh1
       6       8      129        6      active sync   /dev/sdi1
       7       8      145        7      active sync   /dev/sdj1

다음은 / proc / mdstat의 내용입니다.

Personalities : [raid10] md0 : active raid10 sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
      7814045696 blocks super 1.0 2048K chunks 2 near-copies [8/8] [UUUUUUUU]
      [>....................]  resync =  4.8% (375163456/7814045696) finish=1206.5min speed=102751K/sec
      bitmap: 57/59 pages [228KB], 65536KB chunk

unused devices: <none>

그래서 내 질문은 :

  1. 어떤 드라이브가 서로의 미러인지 어떻게 알 수 있습니까?
  2. 이것을 바꿀 수있는 방법이 있습니까, 아니면 드라이브 문자를 바꿀 것이므로 전선을 바꾸고 RAID를 다시 만들어야합니까?

미리 감사드립니다.


접선에 대한 참고 사항을 알고 싶은 사람은 다음과 같습니다. 동일한 모델 및 배치의 드라이브, 유사한 사용 부하, 가동 시간 및 온도에서 작동하는 드라이브에는 시스템적인 변화가 거의 없으며 드라이브 간의 고장 시간 차이가 주로 발생합니다. 제조 공정의 무작위 변동에 의해. 여러 드라이브가 한 번에 죽을 위험이 높아집니다. 다른 배치뿐만 아니라 완전히 다른 제조업체의 드라이브를 구매함으로써 어레이에 체계적인 변형을 도입하여 어떤 드라이브가 비슷한 시간에 실패하는지에 영향을 미칩니다.


1
홈 미디어 서버는 ServerFault의 주제가 아닙니다. 즉, 당신은 분명히 이것에 약간의 노력을 기울 였고 나는 그것을 unix.SE 로 마이그레이션하기 위해 플래그를 지정할 것 입니다.
Andrew B

@AndrewB, 왜 그렇습니까?
poige

매우 흥미로운 질문이며 그 이유는 잘 이해되어 있습니다. RAID를 재 작성하는 것이 훨씬 더 간단 할 때 디스크를 지정하기 만하면 와이어를 변경할 필요가 없습니다.
poige

@poige 이것은 가정 환경에서 발생합니다 . 나는 이것에도 불구하고 질문을 적절하게 연구했다고 생각했다.
앤드류 B

내가 열심히 추측한다면, 나는 당신이 RaidDevice기둥을 볼 수 있다고 생각할 것 입니다. (0,1), (2,3), (4,5), (6,7)처럼 간단 할 수 있습니다. 그것은 당신이 WD / Sea / WD / Sea / etc와 같은 RaidDevice 라인을 만들어야한다고 가정하게 만들 것입니다 ... 그러나 나는 그것에 대해 100 % 확신하지 못합니다.
Zoredache

답변:


6

최신 버전은 mdadm이 정보를 배열의 세부 정보에 표시합니다. 의 예mdadm v3.3 - 3rd September 2013

 $ mdadm --detail /dev/md1

/dev/md1:
        Version : 1.1
  Creation Time : Tue Aug 23 11:45:41 2016
     Raid Level : raid10
     Array Size : 3864803328 (3685.76 GiB 3957.56 GB)
  Used Dev Size : 1932401664 (1842.88 GiB 1978.78 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Fri Aug 26 09:39:28 2016
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : px4-300r-THXOAP:1  (local to host px4-300r-THXOAP)
           UUID : 5ee06437:83dfdb64:808feaa2:5d57b1e6
         Events : 620

    Number   Major   Minor   RaidDevice State
       4       8       50        0      active sync set-A   /dev/sdd2
       1       8       34        1      active sync set-B   /dev/sdc2
       2       8       18        2      active sync set-A   /dev/sdb2
       3       8        2        3      active sync set-B   /dev/sda2

명시 적 의미를 참고 set-A하거나 set-B. 위의 경우, sddsdb데이터 손실없이 함께 실패 할 수있다. 어레이가 재 구축되는 동안이 데이터를 사용할 수 없습니다.


2

나는 같은 문제가 있었고 인터넷 검색을 한 후 신뢰할만한 답변을 찾지 못했습니다. 몇 가지 생각을 한 후에 미러에 동일한 데이터가 있으므로 그 일부를 비교할 수 있다고 생각했습니다.

참고 : 동일한 체크섬으로 2 개 이상의 드라이브를 사용하는 경우 비어있는 디스크 공간을 비교하고있는 경우 다른 오프셋을 선택하십시오 (건너 뛰기 옵션).

이 몇 가지 명령으로 다음을 알아낼 수 있습니다.

for disk in sda sdb sdc sdd
do
  echo -n "$disk = ";
  dd if=/dev/$disk skip=1M bs=1M count=1 2>/dev/null | md5sum;
done

이것은 다음과 같이 출력됩니다 :

sda = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdb = 7c4ef0f3e0143b35e044d5d65908a3a2  -
sdc = e02f7d61ad3791bd691da5b7516928a5  -
sdd = e02f7d61ad3791bd691da5b7516928a5  -

이제 우리는 sda / sdb가 하나의 미러이고 sdc / sdd가 다른 미러임을 알고 있습니다. 데이터 손실을 피하기 위해 각각 하나씩 유지해야합니다.

"dd"명령은 디스크 시작 (skip = 1M)으로부터 1MB 오프셋에서 1MB (bs = 1M) 1MB를 읽습니다. 디스크 시작 부분에 다른 정보가 포함되어 있으므로 0을 건너 뛰지 마십시오. 데이터는 일반적으로 1MB 이후에 시작됩니다.


dd if=/dev/$disk skip=1M bs=1M count=1나를 위해 일하지 않았다. dd (coreutils) 8.23데비안 8 (Jessie)은 skip장치를 지원하지 않습니다 . 대신 나는 에 상대적인 skip=1곳을 사용 1했습니다 bs. 오타일까요?
Daniel Böhmer

참고 MD5 합계가 d41d8cd98f00b204e9800998ecf8427e표시 되면 dd통화가 실패합니다. 즉 :-) 빈 문자열의 해시
다니엘 Böhmer

0

나는 당신이 실제 RAID 10 어레이 (1 + 0 스트라이프 미러링)에 대해 이야기하고 있다고 생각합니다.

sdc/sdg = md0 raid1 2TB |
sdd/sdh = md1 raid1 2TB |_  md4 raid0 8TB
sde/sdi = md2 raid1 2TB |
sdf/sdj = md3 raid1 2TB |

1. 4 개의 raid1 어레이를 생성하십시오 :

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/{sdc,sdg}
mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/{sdd,sdh}
mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/{sde,sdi}
mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/{sdf,sdj}

현재 각각 2TB 공간을 가진 4 개의 RAID 1 어레이가 있습니다.

2. 조립하자!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md{0,1,2,3}

--run 옵션은 일부 구성 요소가 다른 배열에서 활성화되어 있기 때문에 유용합니다

3. mdadm.conf 파일을 조정하십시오

새 어레이 (/ dev / md4)에 대한 변경 사항을 반영하도록이 파일을 조정하려면 (구성에 따라) 필요할 수 있습니다.

4. 즐기십시오 .. 새로운 DIY raid10 어레이!


아니, 그는 리눅스의 mdadm raid10 성격에 대해 이야기하고 있습니다. 귀하의 답변이 적용되지 않는다고 생각합니다 (공평하기는하지만 OP가 필요한 것을 달성 할 수있는 대안을 OP에 제공합니다)
GnP

성능과 지원되는 기능도 다릅니다.
Joachim Wagner

0

다음과 같이 데이터를 원만한 방식으로 비교하여 미러를 확인할 수 있습니다.

# dd if=/dev/sda1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdb1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -
# dd if=/dev/sdg1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
7c01afa434fc74aeddc8ec0546e4c332  -
# dd if=/dev/sdf1 bs=1M skip=10 count=50 2> /dev/null | md5sum -
1f0f8166857710d555cb35db4a23891a  -

(일치하지 않으면 RAID superblocksl을 건너 뛰지 않기 때문에 skip = 을 늘려야 할 수도 있습니다 .2 개 이상의 디스크에 대해 동일한 md5sum을 얻는 경우 count = 를 늘려야 할 수도 있습니다. '아마도 0을 읽고 m5를 합산하는 것입니다-먼저 레이드에 데이터를 넣지 않도록하십시오. 그렇지 않으면 0으로 가득 차 있습니다.

스와핑 와이어의 경우에는 그렇게 할 필요가 없습니다. mdadm은 mdadm --create의 명령 줄에 지정된 장치로 RAID를 생성해야 하므로 명령 줄에서 다른 순서로 드라이브를 지정하면됩니다.


0

각 구성 요소 장치 (예 : / dev / sda1, / dev / sdb1 등)에서 "mdadm --examine device"를 실행하십시오. 이 정보는 서로 어떤 미러 구성 요소인지 판별하는 데 도움이됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.