Il nuovo array md è di sola lettura automatica e ha resync = PENDING


17

Ho creato un nuovo array md con il seguente comando:

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

Ma ora /proc/mdstatmostra l'array come "sola lettura automatica" 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>

Secondo questo sito posso risolvere questo problema con:

mdadm --readwrite /dev/md1

E questo funziona:

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

Ma vorrei ancora sapere cosa sta succedendo qui e non riesco a trovare alcuna informazione reale al riguardo. Qualcuno sa perché l'array è impostato su questo stato?

EDIT: aggiunto l'output di dmesg:

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

Hai controllato dmesg?
frostschutz,

@frostschutz Ho aggiunto le righe di dmesg che erano state registrate ieri nel syslog, fuso orario UTC + 1 (ho riavviato la macchina da allora, quindi non ho più accesso al dmesg originale). Niente di straordinario per quanto posso dire.
Martin von Wittich,

Curioso quali versioni di kernel e mdadm hai ...
derobert

@derobert Nome host Linux 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 maggio 2012, da Debian wheezy
Martin von Wittich

Risposte:


25

Quando un array viene inizialmente assemblato, viene posto in modalità di "sola lettura automatica". Ho rapidamente testato, con il mio kernel (3.10.x) e mdadm (3.3), questo non accade su create, ma è necessario eseguire versioni diverse.

Tuttavia, la sola lettura automatica non è un errore, né è nulla di cui preoccuparsi. L'idea di base alla base è quella di rendere --assemble(e, a quanto pare ora, persino --create) più sicuro: nulla viene scritto sui dischi fino a quando l'array non passa in lettura-scrittura. (Non sono sicuro che forse i metadati siano ancora scritti su create.)

L'array passerà automaticamente dalla lettura automatica alla lettura / scrittura quando riceve la prima scrittura. Quindi, se avessi continuato e creato un filesystem sul dispositivo, un volume fisico LVM o qualsiasi altra cosa, sarebbe passato a lettura-scrittura e avvierebbe la sincronizzazione.

L'unico motivo per cui dovresti eseguirlo mdadm --readwriteè se vuoi che si sincronizzi prima di eseguire qualsiasi scrittura.


Hmm ... inizierebbe quindi a sincronizzarsi direttamente dopo la prima scrittura, in modo che la sola lettura automatica ritardi la sincronizzazione?
Martin von Wittich,

@MartinvonWittich Sì, inizierà la sincronizzazione subito dopo la prima scrittura. Quindi sì, lo ritarda, in genere da pochi secondi, come ci si fa normalmente qualcosa ( pvcreate, mkfs, ecc) con un nuovo array abbastanza presto dopo --create.
derobert

"devi eseguire versioni diverse" è un'ipotesi? Sto usando le ultime versioni e non ricordo questo comportamento per nessuna versione precedente. A meno che @MartinvonWittich abbia fatto qualcosa di cui non ci ha parlato (come riavviare dopo la creazione), ciò non spiega affatto cosa è successo.
frostschutz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.