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

7327
Community

Ich habe einen Heim-Medienserver, der unter openSUSE 12.2 ausgeführt wird. Ich verwende acht 2-TB-Laufwerke in einer RAID-10-Konfiguration. Ich habe mir bewusst zwei verschiedene Laufwerkstypen 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). YaST2 Partitioner gab mir diese Auswahlmöglichkeit in der Struktur des Arrays leider nicht vor, daher versuche ich jetzt herauszufinden, wie die Standard-RAID10-Struktur aussieht.

Ich weiß Folgendes:

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

Ich habe beim Erstellen des RAID das Standardlayout "n2" gewählt. Ich schätze, basierend auf Informationen aus diesen beiden Quellen, dass benachbarte Laufwerke gespiegelt werden (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. Wie erfahre ich, welche Laufwerke sich gegenseitig spiegeln?
  2. Gibt es eine Möglichkeit, dies zu ändern, oder sollte ich einfach die Kabel vertauschen (da sonst die Laufwerksbuchstaben ausgetauscht werden) und das RAID dann neu erstellt wird?

Danke im Voraus.


Tangentiale Anmerkung für jeden, der wissen möchte, warum ich dies tun möchte: Laufwerke desselben Modells und Satzes, die unter ähnlichen Nutzungslasten, Betriebszeit und Temperatur betrieben werden, weisen nur geringe systematische Schwankungen 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 absterben. Durch den Kauf von Laufwerken nicht nur von unterschiedlichen Chargen, sondern von völlig unterschiedlichen Herstellern führe ich systematische Variationen in mein Array ein, wodurch beeinflusst wird, welche Laufwerke zu ähnlichen Zeiten ausfallen.

8
Heim-Medienserver sind für ServerFault nicht relevant. Das heißt, Sie haben sich eindeutig Mühe gegeben und ich werde es für die Migration nach [unix.SE] (http://unix.stackexchange.com/) kennzeichnen. Andrew B vor 11 Jahren 1
@AndrewB, warum ist das so? poige vor 11 Jahren 0
Es ist eine sehr interessante Frage und die Gründe dafür sind so gut verstanden. Sie müssen die Kabel nicht wechseln, da das Festlegen der Festplatte bei der (Neu-) Erstellung von RAID wesentlich einfacher ist. poige vor 11 Jahren 0
@poige Dies gilt unter [* irgendetwas in einer Heimumgebung *] (http://serverfault.com/faq#questions). Ich versuchte klar zu stellen, dass ich die Frage trotzdem angemessen untersucht habe. Andrew B vor 11 Jahren 0
Wenn ich heftig spekulieren würde, könnte ich mir vorstellen, dass Sie sich die RaidDevice-Spalte ansehen könnten. Es könnte so einfach sein wie (0,1), (2,3), (4,5), (6,7). Ich würde davon ausgehen, dass Sie RaidDevice wie WD / Sea / WD / Sea / etc zusammenstellen müssen. Aber ich bin mir nicht 100% ig sicher. Zoredache vor 11 Jahren 0
Der Inhalt des Abschnitts [Raid10] (http://linux.die.net/man/4/md) legt nahe, dass Blöcke "willkürlich" verstreut sind, was bedeutet, dass kein Laufwerk eine exakte Kopie eines anderen Laufwerks ist. Vielleicht habe ich es falsch verstanden. Um eine genaue Kontrolle über "gespiegelte" Daten zu erhalten, müssen Sie meiner Meinung nach manuell vier Raid1-Volumes erstellen, die jeweils aus einem Wd / Seagate-Paar bestehen, und dann diese vier Volumes in Raid0 zerlegen. Dies ist jedoch nicht optimal, da der Totalverlust nur von 2 Laufwerken verursacht werden könnte. Ярослав Рахматуллин vor 11 Jahren 0

5 Antworten auf die Frage

5
parasietje

Aktuelle Versionen von mdadmzeigen dieses Recht 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 obigen Fall können sddund sdbohne Datenverlust zusammen ausfallen. Es ist möglich, dass diese Daten nicht verfügbar sind, während das Array neu erstellt wird.

1
Pascal

Ich hatte das gleiche Problem und nachdem ich eine Weile gegoogelt hatte, fand ich keine verlässliche Antwort. Nachdem ich mir einige Gedanken gemacht hatte, kam ich zu dem Schluss, dass die Spiegel die gleichen Daten haben und wir einen Teil davon vergleichen konnten.

HINWEIS: Seien Sie vorsichtig, wenn Sie mehr als 2 Antriebe mit dem gleichen Prüfsummen haben, in dem Sie wahrscheinlich leeren Arbeitsbereich miteinander vergleichen. Wählen Sie einen anderen Versatz (Option überspringen).

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 gibt etwas aus wie:

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

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

Der Befehl "dd" liest einmalig (count = 1) ein Megabyte (bs = 1M) bei einem Megabyte-Versatz vom Start der Festplatte (überspringen = 1M). Überspringen Sie nicht = 0, da der Beginn der Festplatte unterschiedliche Informationen enthält. Die Daten beginnen normalerweise nach 1 MB.

`dd if = / dev / $ disk überspringen = 1M bs = 1M count = 1 'hat bei mir nicht funktioniert. `dd (coreutils) 8.23` von Debian 8 (Jessie) unterstützt` überspringen` mit einer Unit nicht. Stattdessen habe ich "überspringen = 1" verwendet, wobei "1" relativ zu "bs" ist. Möglicherweise ein Tippfehler? Daniel Böhmer vor 8 Jahren 0
Zu Ihrer Information Wenn die MD5-Summe `d41d8cd98f00b204e9800998ecf8427e` angezeigt wird, schlägt Ihr` dd`-Aufruf fehl. Das ist der Hash der leeren Zeichenkette :-) Daniel Böhmer vor 8 Jahren 0
0
maxxvw

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/ mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/ mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/ mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/ 

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

2. Lass sie zusammenbauen!

mdadm --create /dev/md4 --run --level=0 --raid-devices=4 /dev/md 

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

3. Passen Sie Ihre Datei mdadm.conf an

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

4. Genießen Sie Ihr neues DIY raid10 Array!

Nein, er spricht über die mdadm raid10-Persönlichkeit von Linux. Ich glaube, dass Ihre Antwort nicht zutrifft (obwohl dies fair ist, gibt es dem OP eine Alternative, um das zu erreichen, was er tun muss) GnP vor 10 Jahren 0
Die Leistung und unterstützten Funktionen unterscheiden sich ebenfalls. Joachim Wagner vor 6 Jahren 0
0
Matija Nalis

Sie können immer anhand einer groben Art und Weise, die Daten zu vergleichen, die Spiegel sind, 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 Übereinstimmungen erhalten, müssen Sie möglicherweise überspringen = erhöhen, da Sie keine RAID-Superblöcke überspringen; und wenn Sie dieselbe MD5-Summe für mehr als 2 Festplatten erhalten, müssen Sie möglicherweise count = erhöhen, wie Sie Wahrscheinlich lesen und m5summing Nullen - um zu verhindern, dass Sie zuerst Daten in den Raid setzen sollten, sonst könnten sie voller Nullen sein.)

Für das Vertauschen von Drähten müssen Sie das nicht tun - mdadm sollte ein Raid mit Geräten erstellen, die in der Befehlszeile in mdadm --create angegeben sind. Daher geben Sie Laufwerke in der Befehlszeile nur in anderer Reihenfolge an.

0
wurtel

Führen Sie "mdadm --examine device" auf jedem Komponentengerät aus (z. B. / dev / sda1, / dev / sdb1 usw.). Anhand der Informationen können Sie feststellen, welche Komponenten sich gegenseitig spiegeln.