Musisz dowiedzieć się, które dyski są dublowane w macierzy RAID-10

8

Mam domowy serwer multimediów działający w systemie openSUSE 12.2. Używam ośmiu dysków 2 TB w konfiguracji RAID-10. Celowo kupiłem dwa różne typy dysków: cztery Seagate Barracuda Green i cztery Western Digital Red. Moim celem jest takie skonfigurowanie macierzy RAID, aby każda dublowana para w macierzy składała się z różnych dysków (tj. Jednego dysku Seagate i jednego dysku WD). Partycjoner YaST2 niestety nie dał mi tego poziomu wyboru w strukturze tablicy, więc teraz próbuję dowiedzieć się, jak wygląda domyślna struktura RAID10.

Wiem, co następuje:

  • sdc, sdd, sde i sdf to wszystkie dyski WD
  • SDD, SDH, SDI i SDJ to dyski Seagate

Podczas tworzenia macierzy RAID wybrałem domyślny układ „n2”. Domyślam się na podstawie informacji z tych dwóch źródeł, że sąsiednie dyski są dublowane (tj. Sdc == sdd, sde == sdf itp.), Ale chcę wiedzieć na pewno:

Oto wynik działania polecenia „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

A oto zawartość / 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>

Więc moje pytania to:

  1. Jak rozpoznać, które dyski są zwierciadłami?
  2. Czy istnieje sposób, aby to zmienić, czy powinienem po prostu zamienić przewody (ponieważ spowoduje to zamianę liter dysków), a następnie odbudować macierz RAID?

Z góry dziękuję.


Uwaga styczna: dla każdego, kto chce poznać moje uzasadnienie: napędy tego samego modelu i partii, działające przy podobnych obciążeniach użytkowych, czasie pracy i temperaturze mają niewielkie zmiany systemowe, a różnice w czasie do awarii między napędami będą przede wszystkim napędzane przez losowe zmiany w procesie produkcyjnym. Zwiększa to ryzyko śmierci wielu dysków jednocześnie. Kupując dyski nie tylko różnych partii, ale całkowicie różnych producentów, wprowadzam systematyczne zmiany w mojej macierzy, wpływając w ten sposób na to, które dyski ulegną awarii w podobnym czasie.

Społeczność
źródło
1
Domowe serwery multimediów są nie na temat ServerFault. Powiedział, że wyraźnie włożyć trochę wysiłku w to i mam zamiar flaga to dla migracji do unix.SE .
Andrew B,
@AndrewB, dlaczego tak jest?
poige
To bardzo interesujące pytanie, a uzasadnienie jest tak dobrze zrozumiane. Nie musisz zmieniać przewodów, ponieważ po prostu określasz dysk, kiedy (ponowne) tworzenie RAID jest znacznie prostsze.
poige
@poige Obejmuje to wszystko w warunkach domowych . Starałem się wyjaśnić, że mimo to uważałem to pytanie za wystarczająco zbadane.
Andrew B,
Gdybym miał dziko spekulować, zgadłbym, że można spojrzeć na RaidDevicekolumnę. Może to być tak proste jak (0,1), (2,3), (4,5), (6,7). To sprawiłoby, że zakładam, że musisz ustawić RaidDevice w kolejce jak WD / Sea / WD / Sea / itp ... Ale nie jestem w 100% pewien.
Zoredache,

Odpowiedzi:

5

Najnowsze wersje mdadmpokazują to prawo w szczegółach tablicy. Przykład zmdadm 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

Zwróć uwagę na oznaczenie set-Alub set-B. W powyższym przypadku, sdda sdbmoże nie razem bez utraty danych. Możliwe, że dane te nie są dostępne podczas przebudowywania tablicy.

parasietje
źródło
1

Miałem ten sam problem i po googlowaniu przez jakiś czas nie znalazłem wiarygodnej odpowiedzi. Po przemyśleniu doszedłem do wniosku, że mirrory mają te same dane, więc możemy porównać ich część.

UWAGA: UWAŻAJ, JEŚLI MASZ PONAD 2 NAPĘDY Z TYM SAMYM KONTROLĄ, PRAWDOPODOBNIE PORÓWNASZ PUSTĄ PRZESTRZEŃ, WYBIERZ KOLEJNĄ PRZESUNIĘCIE (opcja pomijania).

Za pomocą tych kilku poleceń możesz to rozgryźć:

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

Spowoduje to wyświetlenie czegoś takiego:

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

Teraz wiemy, że sda ​​/ sdb to jedno lustro, a sdc / sdd to drugie. Jeden z nich musi zostać, aby uniknąć utraty danych.

Polecenie „dd” odczytuje jeden raz (liczba = 1) jeden megabajt (bs = 1M) z przesunięciem o jeden megabajt od początku dysku (pomijanie = 1M). Nie pomijaj = 0, ponieważ początek dysku zawiera inne informacje. Dane zwykle zaczynają się po 1 MB.

Pascal
źródło
dd if=/dev/$disk skip=1M bs=1M count=1nie działało dla mnie. dd (coreutils) 8.23z Debian 8 (Jessie) nie obsługuje skipjednostki. Zamiast tego użyłem skip=1gdzie 1jest względne bs. Być może literówka?
Daniel Böhmer
FYI Jeśli widzisz sumę MD5 d41d8cd98f00b204e9800998ecf8427eTwojego ddpołączenia nie powiedzie się. To jest skrót pustego ciągu :-)
Daniel Böhmer
0

Myślę, że mówisz o prawdziwej macierzy RAID 10 (dublowanie w paski 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. Utwórz 4 tablice 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}

W tej chwili masz 4 tablice raid 1 z 2 TB miejsca na każdym,

2. Zbierzmy je!

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

Opcje --run są przydatne, ponieważ niektóre komponenty są aktywne w innej tablicy

3. Dostosuj plik mdadm.conf

Może być konieczne (w zależności od konfiguracji) dostosowanie tego pliku, aby odzwierciedlić zmiany dotyczące naszej nowej tablicy (/ dev / md4).

4. Ciesz się ... Twój nowy zestaw DIY raid10!

maxxvw
źródło
Nie, on mówi o osobowości mdadm raid10 Linuksa. Uważam, że twoja odpowiedź nie ma zastosowania (chociaż, szczerze mówiąc, daje OP szansę na osiągnięcie tego, co musi zrobić)
GnP
Różnią się także wydajność i obsługiwane funkcje.
Joachim Wagner
0

Zawsze możesz sprawdzić, które są kopiami lustrzanymi, porównując dane, na przykład:

# 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  -

(Jeśli nie otrzymasz żadnych wyników, może trzeba zwiększyć maskowania = , jak nie jesteś pomijając RAID superblocksl, a jeśli masz taką samą md5 dla więcej niż 2 dyski, może trzeba zwiększyć liczbę = , jak ty prawdopodobnie czytają i m5summing zera - aby uniknąć sytuacji, w której najpierw należy umieścić dane w nalocie, w przeciwnym razie mogą być pełne zer)

Jeśli chodzi o zamianę przewodów, nie musisz tego robić - mdadm powinien utworzyć nalot za pomocą urządzeń określonych w wierszu poleceń w mdadm - Utwórz , więc po prostu podaj napędy w innej kolejności w wierszu poleceń.

Matija Nalis
źródło
0

Uruchom „mdadm --examine device” na każdym urządzeniu składowym (tj. / Dev / sda1, / dev / sdb1 itp.). Informacje tam zawarte powinny pomóc ci określić, które komponenty są lustrzanymi odbiciami.

wurtel
źródło