Новый массив md доступен только для чтения и имеет функцию reync = PENDING


17

Я создал новый массив md с помощью следующей команды:

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

Но теперь /proc/mdstatпоказывает массив как «только для чтения» с 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>

Согласно этому сайту я могу это исправить с помощью:

mdadm --readwrite /dev/md1

И это работает:

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

Но я все еще хотел бы знать, что здесь происходит, и я не могу найти никакой реальной информации об этом. Кто-нибудь знает, почему массив по умолчанию принимает это состояние?

РЕДАКТИРОВАТЬ: добавлен вывод 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.

Вы проверяли dmesg?
— frostschutz

@frostschutz Я добавил строки dmesg, которые были зарегистрированы вчера в системном журнале, часовой пояс UTC + 1 (с тех пор я перезагрузил машину, поэтому у меня больше нет доступа к исходному dmesg). Насколько я могу судить, ничего необычного.
— Мартин фон Виттих,

Любопытно, какие версии ядра и mdadm у вас есть ...
— 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
— Мартин фон Виттих,

@derobert mdadm - v3.2.5 - 18 мая 2012 года, из Debian wheezy
— Мартин фон Виттич,

Ответы:


25

Когда массив изначально собран, он помещается в режим «только для чтения». Я быстро проверил, с моим ядром (3.10.x) и mdadm (3.3), это не происходит при создании, но вы должны использовать разные версии.

Тем не менее, только для автоматического чтения не является ошибкой и не о чем беспокоиться. Основная идея заключается в том, чтобы сделать --assemble(и, по-видимому, теперь даже --create) более безопасным: ничего не записывается на диски, пока массив не перейдет в режим чтения-записи. (Я не уверен, что, возможно, метаданные все еще пишутся при создании.)

Массив будет автоматически переключаться с автоматического чтения на чтение и запись, когда он получит свою первую запись. Итак, если вы продолжите и создали файловую систему на устройстве или физический том LVM, или что-то еще, он переключился бы на чтение-запись и запустил синхронизацию.

Единственная причина, по которой вам нужно его запустить, - mdadm --readwriteэто если вы хотите, чтобы он синхронизировался перед выполнением любых операций записи.


Хм ... начнется ли синхронизация сразу после первой записи, так что только для автоматического чтения задерживает синхронизацию?
— Мартин фон Виттих

@MartinvonWittich Да, он начнет синхронизироваться сразу после первой записи. Так что да, это задерживает его, как правило , на несколько секунд, как вы обычно делаете что - то ( pvcreate, mkfsи т.д.) с новым массивом довольно скоро после --create.
— Дероберт

"Вы должны работать с разными версиями" - это предположение? Я использую последние версии и не могу вспомнить это поведение для любой старой версии. Если @MartinvonWittich не сделал что-то, о чем он нам не говорил (например, перезагрузка после создания), это не объясняет того, что произошло вообще.
— frostschutz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.