Neues MD-Array ist schreibgeschützt und hat resync = PENDING

17

Ich habe ein neues MD-Array mit dem folgenden Befehl erstellt:

mdadm --create /dev/md1 -l 1 -n 2 /dev/sd[ed]1

Aber jetzt /proc/mdstatzeigt das Array als "Auto-Read-Only" mit resync = PENDING:

~ # cat /proc/mdstat 
Personalities : [raid1] 
md1 : active (auto-read-only) raid1 sde1[1] sdd1[0]
      976630336 blocks super 1.2 [2/2] [UU]
        resync=PENDING

md0 : active raid1 sdb1[0] sdc1[1]
      1953511936 blocks [2/2] [UU]

unused devices: <none>

Laut dieser Seite kann ich das beheben mit:

mdadm --readwrite /dev/md1

Und das funktioniert:

~ # mdadm --readwrite /dev/md1
~ # cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sde1[1] sdd1[0]
      976630336 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  0.0% (54400/976630336) finish=598.2min speed=27200K/sec

md0 : active raid1 sdb1[0] sdc1[1]
      1953511936 blocks [2/2] [UU]

unused devices: <none>

Aber ich würde immer noch gerne wissen, was hier los ist, und ich kann keine wirklichen Informationen darüber finden. Weiß jemand, warum das Array standardmäßig in diesem Zustand ist?

EDIT: Dmesg-Ausgabe hinzugefügt:

~ # grep kernel /var/log/syslog.1 
Nov 13 10:03:44 iserv kernel: [160446.860113] e1000: eth1 NIC Link is Down
Nov 13 10:04:48 iserv kernel: [160511.017666] e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
Nov 13 20:12:40 iserv kernel: [196982.775186]  sda: sda1
Nov 13 20:12:59 iserv kernel: [197001.598187]  sdd: sdd1
Nov 13 20:13:13 iserv kernel: [197016.344939]  sde: sde1
Nov 13 20:14:05 iserv kernel: [197067.520825] md: bind<sdd1>
Nov 13 20:14:05 iserv kernel: [197067.521263] md: bind<sde1>
Nov 13 20:14:05 iserv kernel: [197067.670215] md/raid1:md1: not clean -- starting background reconstruction
Nov 13 20:14:05 iserv kernel: [197067.670219] md/raid1:md1: active with 2 out of 2 mirrors
Nov 13 20:14:05 iserv kernel: [197067.670246] md1: detected capacity change from 0 to 1000069464064
Nov 13 20:14:05 iserv kernel: [197067.675101]  md1: unknown partition table
Nov 13 20:24:10 iserv kernel: [197672.572128] md: md1 switched to read-write mode.
Nov 13 20:24:10 iserv kernel: [197672.572269] md: resync of RAID array md1
Nov 13 20:24:10 iserv kernel: [197672.572273] md: minimum _guaranteed_  speed: 1000 KB/sec/disk.
Nov 13 20:24:10 iserv kernel: [197672.572275] md: using maximum available idle IO bandwidth (but not more than 200000 KB/sec) for resync.
Nov 13 20:24:10 iserv kernel: [197672.572280] md: using 128k window, over a total of 976630336k.
Martin von Wittich
quelle
Hast du nachgesehen dmesg?
Frostschutz
@frostschutz Ich habe die Dmesg-Zeilen hinzugefügt, die gestern im Syslog protokolliert wurden, Zeitzone UTC + 1 (Ich habe den Computer neu gestartet, daher habe ich keinen Zugriff mehr auf das ursprüngliche Dmesg). Soweit ich das beurteilen kann, nichts Außergewöhnliches.
Martin von Wittich
Neugierig, welche Kernel- und Mdadm-Versionen Sie haben ...
Derobert
@derobert Linux Hostname 3.10-0.bpo.3-686-pae # 1 SMP Debian 3.10.11-1 ~ bpo70 + 1 (2013-09-24) i686 GNU / Linux
Martin von Wittich
@derobert mdadm - v3.2.5 - 18. Mai 2012, von Debian wheezy
Martin von Wittich

Antworten:

25

Wenn ein Array zum ersten Mal zusammengestellt wird, wird es in den "Nur-Lese-Modus" versetzt. Ich habe schnell getestet, mit meinem Kernel (3.10.x) und mdadm (3.3), dass dies beim Erstellen nicht passiert - aber Sie müssen verschiedene Versionen ausführen.

Auto-Read-Only ist jedoch weder ein Fehler noch ein Grund zur Sorge. Die Grundidee dahinter ist --assemble, noch --createsicherer zu machen (und anscheinend sogar noch sicherer zu machen ): Es wird nichts auf die Festplatten geschrieben, bis das Array Lese- / Schreibzugriff erhält. (Ich bin nicht sicher, ob die Metadaten möglicherweise noch beim Erstellen geschrieben wurden.)

Das Array wechselt automatisch von Auto-Read-Only zu Read-Write, wenn es zum ersten Mal einen Schreibzugriff erhält. Wenn Sie also ein Dateisystem auf dem Gerät oder ein physisches LVM-Volume oder was auch immer erstellt hätten, hätte es auf Lese- / Schreibzugriff umgestellt und die Synchronisierung gestartet.

Der einzige Grund, warum Sie es ausführen müssen, mdadm --readwriteist, wenn Sie möchten, dass es synchronisiert wird, bevor Sie Schreibvorgänge ausführen.

derobert
quelle
Hmm ... würde es dann direkt nach dem ersten Schreiben mit der Synchronisierung beginnen, so dass die Synchronisierung nur durch automatisches Lesen verzögert wird?
Martin von Wittich
@MartinvonWittich Ja, die Synchronisierung würde direkt nach dem ersten Schreiben beginnen. Also ja, es verzögert it-Regel durch ein paar Sekunden, wie Sie es normalerweise etwas tun würden ( pvcreate, mkfsusw.) mit einem neuen Array ziemlich bald nach --create.
Derobert
"Sie müssen verschiedene Versionen ausführen" ist eine Vermutung? Ich verwende die neuesten Versionen und kann mich bei keiner älteren Version an dieses Verhalten erinnern. Es sei denn, @MartinvonWittich hat etwas getan, von dem er uns nichts erzählt hat (z. B. Neustart nach dem Erstellen), das nicht erklärt, was überhaupt passiert ist.
Frostschutz