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/mdstat
zeigt 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.
dmesg
?Antworten:
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--create
sicherer 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 --readwrite
ist, wenn Sie möchten, dass es synchronisiert wird, bevor Sie Schreibvorgänge ausführen.quelle
pvcreate
,mkfs
usw.) mit einem neuen Array ziemlich bald nach--create
.