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.


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.


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.


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!


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ń.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.