La nueva matriz de md es de solo lectura automática y tiene resincronización = PENDIENTE

17

He creado una nueva matriz de md con el siguiente comando:

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

Pero ahora /proc/mdstatmuestra la matriz como "auto-read-only" con 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>

De acuerdo con este sitio , puedo solucionar esto con:

mdadm --readwrite /dev/md1

Y eso funciona:

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

Pero todavía me gustaría saber qué está pasando aquí, y no puedo encontrar ninguna información real al respecto. ¿Alguien sabe por qué la matriz predeterminada a este estado?

EDITAR: salida de dmesg agregada:

~ # 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
fuente
¿Lo comprobaste dmesg?
frostschutz
@frostschutz He agregado las líneas dmesg que se registraron ayer en el syslog, zona horaria UTC + 1 (reinicié la máquina desde entonces, así que ya no tengo acceso al dmesg original). Nada fuera de lo común por lo que puedo decir.
Martin von Wittich
Curioso qué versiones de kernel y mdadm tienes ...
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 de mayo de 2012, de Debian wheezy
Martin von Wittich

Respuestas:

25

Cuando una matriz se ensambla inicialmente, se coloca en modo de "solo lectura automática". Probé rápidamente, con mi kernel (3.10.x) y mdadm (3.3), esto no sucede en create, pero debes estar ejecutando versiones diferentes.

Sin embargo, la lectura automática no es un error, ni tampoco es algo de qué preocuparse. La idea básica detrás de esto es hacer --assemble(y, aparentemente ahora, incluso --create) más seguro: no se escribe nada en los discos hasta que la matriz se convierte en lectura-escritura. (No estoy seguro de si tal vez los metadatos todavía están escritos en create).

La matriz cambiará automáticamente de lectura automática a lectura-escritura cuando reciba su primera escritura. Entonces, si siguió adelante y creó un sistema de archivos en el dispositivo, o un volumen físico LVM, o lo que sea, se habría cambiado a lectura-escritura, y comenzaría la sincronización.

La única razón por la que necesitaría ejecutarlo mdadm --readwritees si desea que se sincronice antes de realizar cualquier escritura.

derobert
fuente
Hmm ... ¿comenzaría a sincronizarse directamente después de la primera escritura, de modo que la lectura automática retrase la sincronización?
Martin von Wittich
@MartinvonWittich Sí, comenzaría a sincronizarse justo después de la primera escritura. Así que sí, que retrasa-típicamente por unos segundos, como normalmente lo haría algo ( pvcreate, mkfs, etc.) con una nueva gama muy poco después --create.
derobert
"¿debe estar ejecutando diferentes versiones" es una suposición? Estoy usando las últimas versiones y no puedo recordar este comportamiento para ninguna versión anterior. A menos que @MartinvonWittich haya hecho algo de lo que no nos habló (como reiniciar después de crear), eso no explica en absoluto lo que sucedió.
frostschutz