Sie müssen herausfinden, welche Laufwerke im RAID-10-Array gespiegelt sind


8

Ich habe einen Home Media Server unter openSUSE 12.2. Ich verwende acht 2-TB-Laufwerke in einer RAID-10-Konfiguration. Ich habe absichtlich zwei verschiedene Arten von Laufwerken gekauft: vier Seagate Barracuda Green und vier Western Digital Red. Mein Ziel ist es, das RAID so zu konfigurieren, dass jedes gespiegelte Paar innerhalb des Arrays aus unterschiedlichen Laufwerken besteht (dh einem Seagate-Laufwerk und einem WD-Laufwerk). Leider hat mir YaST2 Partitioner in der Struktur des Arrays diese Auswahl nicht gegeben. Daher versuche ich jetzt herauszufinden, wie die Standard-RAID10-Struktur aussieht.

Ich kenne folgendes:

  • sdc, sdd, sde und sdf sind alle WD-Laufwerke
  • sdg, sdh, sdi und sdj sind alle Seagate-Laufwerke

Beim Erstellen des RAIDs habe ich das Standardlayout 'n2' gewählt. Meine Vermutung basiert auf Informationen aus diesen beiden Quellen, dass benachbarte Laufwerke gespiegelt sind (dh sdc == sdd, sde == sdf usw.), aber ich möchte sicher wissen:

Hier ist die Ausgabe von '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

Und hier sind die Inhalte von / 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>

Meine Fragen sind also:

  1. Woran erkenne ich, welche Laufwerke Spiegel voneinander sind?
  2. Gibt es eine Möglichkeit, dies zu ändern, oder sollte ich einfach die Drähte vertauschen (da dies die Laufwerksbuchstaben vertauscht) und dann das RAID neu erstellen?

Danke im Voraus.


Tangentialer Hinweis, für alle, die meine Überlegungen dazu kennen möchten: Laufwerke desselben Modells und derselben Charge, die unter ähnlichen Betriebslasten, Betriebszeiten und Temperaturen betrieben werden, weisen nur geringe systematische Abweichungen auf, und Unterschiede in der Zeit bis zum Ausfall zwischen den Laufwerken werden hauptsächlich angetrieben durch zufällige Variation im Herstellungsprozess. Dies erhöht das Risiko, dass mehrere Laufwerke gleichzeitig sterben. Durch den Kauf von Laufwerken nicht nur aus verschiedenen Chargen, sondern auch von völlig verschiedenen Herstellern, füge ich meinem Array systematische Variationen hinzu und beeinflusse so, welche Laufwerke zu ähnlichen Zeiten ausfallen.


1
Heimmedienserver sind für ServerFault inaktiv. Das heißt, Sie haben offensichtlich einige Anstrengungen unternommen, und ich werde es für die Migration auf Unix.SE markieren .
Andrew B

@ AndrewB, warum ist das so?
Poige

Es ist eine sehr interessante Frage und die Gründe dafür sind so gut verstanden. Sie müssen die Drähte nicht wechseln, da die Angabe der Festplatte beim (erneuten) Erstellen von RAID viel einfacher ist.
Poige

@poige Dies fällt unter nichts in einer häuslichen Umgebung . Ich habe versucht klarzumachen, dass ich die Frage trotzdem für ausreichend recherchiert halte.
Andrew B

Wenn ich wild spekulieren würde, würde ich vermuten, dass Sie sich die RaidDeviceKolumne ansehen könnten . Es könnte so einfach sein wie (0,1), (2,3), (4,5), (6,7). Das würde mich vermuten lassen, dass Sie RaidDevice wie WD / Sea / WD / Sea / etc ausrichten müssen ... Aber da bin ich mir nicht 100% sicher.
Zoredache

Antworten:


5

Aktuelle Versionen von mdadmzeigen dies direkt in den Details des Arrays. Beispiel ausmdadm 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

Beachten Sie die Bezeichnung set-Aoder set-B. In dem oben genannten Fall kann sddund sdbohne Datenverlust zusammen versagen. Es ist jedoch möglich, dass diese Daten nicht verfügbar sind, während das Array wiederhergestellt wird.


1

Ich hatte das gleiche Problem und nach einer Weile googeln fand ich keine zuverlässige Antwort. Nachdem ich darüber nachgedacht hatte, stellte ich fest, dass die Spiegel dieselben Daten haben und wir einen Teil davon vergleichen konnten.

HINWEIS: VORSICHT: WÄHLEN SIE EINEN ANDEREN OFFSET, WENN SIE MEHR ALS 2 ANTRIEBE MIT DER GLEICHEN PRÜFSUMME HABEN, DIE SIE MIT LEEREM DISKSPACE VERGLEICHEN (Überspringen-Option).

Mit diesen wenigen Befehlen können Sie es herausfinden:

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

Dies wird ungefähr so ​​aussehen:

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

Jetzt wissen wir, dass sda / sdb ein Spiegel und sdc / sdd ein anderer ist. Einer von jedem muss bleiben, um Datenverlust zu vermeiden.

Der Befehl "dd" liest einmal (count = 1) ein Megabyte (bs = 1M) mit einem Megabyte Versatz vom Plattenstart (skip = 1M). Überspringen Sie nicht = 0, da der Anfang der Festplatte unterschiedliche Informationen enthält. Die Daten beginnen normalerweise nach 1 MB.


dd if=/dev/$disk skip=1M bs=1M count=1hat bei mir nicht funktioniert. dd (coreutils) 8.23von Debian 8 (Jessie) unterstützt kein skipGerät. Stattdessen habe ich verwendet, skip=1wo 1relativ zu ist bs. Möglicherweise ein Tippfehler?
Daniel Böhmer

Zu d41d8cd98f00b204e9800998ecf8427eIhrer Information Wenn Sie die MD5-Summe sehen dd, schlägt Ihr Anruf fehl. Das ist der Hash der leeren Zeichenfolge :-)
Daniel Böhmer

0

Ich denke, Sie sprechen von einem echten RAID 10-Array (1 + 0 Striped Mirroring).

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

1. Erstellen Sie Ihre 4 RAID1-Arrays:

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}

Zu diesem Zeitpunkt haben Sie 4 RAID 1-Arrays mit jeweils 2 TB Speicherplatz.

2. Lass sie uns zusammenbauen!

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

--run options ist nützlich, da einige Komponenten in einem anderen Array aktiv sind

3. Passen Sie Ihre mdadm.conf-Datei an

Möglicherweise müssen Sie (abhängig von Ihrer Konfiguration) diese Datei anpassen, um Änderungen an unserem neuen Array (/ dev / md4) widerzuspiegeln.

4. Viel Spaß .. Dein neues DIY raid10 Array!


Nein, er spricht von der Persönlichkeit von mdadm raid10 unter Linux. Ich glaube, Ihre Antwort trifft nicht zu (obwohl es dem OP, um fair zu sein, eine Alternative gibt, um das zu erreichen, was er tun muss)
GnP

Die Leistung und die unterstützten Funktionen unterscheiden sich ebenfalls.
Joachim Wagner

0

Sie können immer überprüfen, welche Spiegel sind, indem Sie die Daten grob vergleichen, zum Beispiel:

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

(wenn Sie keine Streichhölzer erhalten, können Sie erhöhen müssen skip = , wie Sie nicht RAID superblocksl Überspringen, und wenn Sie gleiche MD5 - Summe für mehr als 2 Festplatten erhalten, können Sie erhöhen müssen count = , wie Sie lese und summiere wahrscheinlich Nullen - um zu verhindern, dass Sie zuerst einige Daten auf den Schlachtzug setzen, da sie sonst voller Nullen sein könnten)

Was das Vertauschen von Drähten betrifft, müssen Sie dies nicht tun - mdadm sollte ein RAID mit Geräten erstellen, die in der Befehlszeile in mdadm --create angegeben sind , sodass Sie in der Befehlszeile nur Laufwerke in unterschiedlicher Reihenfolge angeben.


0

Führen Sie "mdadm --examine device" auf jedem Komponentengerät aus (dh / dev / sda1, / dev / sdb1 usw.). Anhand der dortigen Informationen können Sie ermitteln, welche Komponenten der Spiegel des jeweils anderen sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.