Nowa tablica md jest tylko do odczytu i ma resync = PENDING

17

Utworzyłem nową tablicę md za pomocą następującego polecenia:

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

Ale teraz /proc/mdstatpokazuje tablicę jako „tylko do odczytu” z 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>

Według tej strony mogę to naprawić za pomocą:

mdadm --readwrite /dev/md1

I to działa:

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

Ale nadal chciałbym wiedzieć, co się tutaj dzieje i nie mogę znaleźć żadnych prawdziwych informacji na ten temat. Czy ktoś wie, dlaczego tablica domyślnie przyjmuje ten stan?

EDYCJA: dodano wyjście 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.
Martin von Wittich
źródło
Sprawdziłeś dmesg?
frostschutz
@frostschutz Dodałem wiersze dmesg, które zostały wczoraj zalogowane do syslog, strefa czasowa UTC + 1 (zrestartowałem maszynę, ponieważ nie mam już dostępu do oryginalnej dmesg). O ile wiem, nic niezwykłego.
Martin von Wittich
Ciekawe, jakie masz wersje jądra i mdadm ...
derobert
@derobert Nazwa hosta 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 maja 2012, z Debian wheezy
Martin von Wittich

Odpowiedzi:

25

Kiedy tablica jest wstępnie złożona, jest umieszczana w trybie „tylko do odczytu”. Szybko przetestowałem, używając mojego jądra (3.10.x) i mdadm (3.3), nie dzieje się to podczas tworzenia - ale musisz mieć uruchomione różne wersje.

Jednak funkcja automatycznego odczytu nie jest błędem ani nie ma się czym martwić. Podstawową ideą jest uczynienie --assemble(i najwyraźniej nawet teraz --create) bezpieczniejszym: nic nie jest zapisywane na dyskach, dopóki tablica nie przejdzie do odczytu i zapisu. (Nie jestem pewien, czy może metadane są nadal zapisywane przy tworzeniu).

Macierz automatycznie przełączy się z automatycznego odczytu tylko do odczytu i zapisu po otrzymaniu pierwszego zapisu. Więc jeśli poszedłeś naprzód i stworzyłeś system plików na urządzeniu lub wolumin fizyczny LVM, czy cokolwiek, to przełączyłby się na odczyt-zapis i rozpocząłby synchronizację.

Jedynym powodem, dla którego musisz go uruchomić mdadm --readwrite, jest synchronizacja przed wykonaniem zapisu.

derobert
źródło
Hmm ... czy wtedy zacząłby synchronizować bezpośrednio po pierwszym zapisie, tak że automatyczne tylko do odczytu opóźnia synchronizację?
Martin von Wittich,
@MartinvonWittich Tak, zacznie się synchronizacja zaraz po pierwszym zapisie. Więc tak, to opóźnia go, zazwyczaj przez kilka sekund, jak można zrobić coś (normalnie pvcreate, mkfsitd) z nowej tablicy wkrótce po --create.
derobert
Zgadujesz, że „musisz uruchamiać różne wersje”? Używam najnowszych wersji i nie mogę zapamiętać tego zachowania dla żadnej starszej wersji. O ile @MartinvonWittich nie zrobił czegoś, o czym nam nie powiedział (jak zrestartuj komputer po utworzeniu), to wcale nie wyjaśnia, co się stało.
frostschutz