MD RAID 1 с внешним битовым массивом не полностью синхронизируется

MD RAID 1 с внешним битовым массивом не полностью синхронизируется

У меня интересная конфигурация: система с двойной загрузкой с RAID 1, который должен быть виден как в Windows, так и в Linux. Установка Windows — Win 7 Enterprise, а установка Linux — Kubuntu 10.04. Чтобы RAID заработал, я настроил его с помощью RAID 1 «Dynamic Disks» Windows и поднял его в Linux с помощью MD без постоянного суперблока и битовой карты с намерением записи на другом разделе. (Без этой битовой карты MD не мог узнать, что массив синхронизирован, и выполнял бы полную повторную синхронизацию каждый раз при запуске массива.) Массив собирается следующим образом:

mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2

Я ожидал, что при первом запуске этой команды она пересинхронизирует массив, запишет битовую карту без грязных фрагментов, и все будет хорошо. Этого не произошло: после завершения пересинхронизации битовая карта былапо большей частичистый, но около 5% грязных блоков осталось, как показало исследование

mdadm -X /var/local/md1.bitmap

Я не монтировал файловую систему на /dev/md1 и не трогал ее каким-либо другим образом.

Затем я обнаружил, что остановка и перезапуск массива:

mdadm --stop /dev/md1
mdadm --build /dev/md1 -l 1 -n 2 -b /var/local/md1.bitmap /dev/sdb2 /dev/sdc2

действительно считывал битовую карту, с последующей повторной синхронизацией, которая прошла быстро, потому что большинство блоков были помечены как чистые. Смущает то, что эта повторная синхронизация еще больше уменьшила количество грязных блоков, но все еще не удалила их все. Многократно останавливая и перезапуская, я смог медленно снизить количество грязных блоков примерно до 0,6%, где оно, казалось, выровнялось.

Есть идеи, что может быть причиной этого? Мне кажется, что где-то есть состояние гонки, которое приводит к тому, что блоки либо пропускаются во время синхронизации, либо не очищаются должным образом из битовой карты, но у меня нет никаких доказательств, подтверждающих это. Это не похоже на проблемы с оборудованием, поскольку оба диска новые и не имеют ошибок чтения и перераспределенных секторов, о которых сообщает smartctl -a.

решение1

Надеюсь, я не обижу вас этой быстрой догадкой, но вы следили за /proc/mdstatфайлом, чтобы убедиться, что --buildоперация завершена, прежде чем проверять mdadm -X?

# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 nbd0[3] sda10[0]
      53246315 blocks super 1.2 [3/1] [U__]
      [>....................]  recovery =  1.0% (537088/53246315) finish=203.0min speed=4326K/sec
      bitmap: 1/1 pages [4KB], 65536KB chunk

Второе, что нужно проверить, это является ли /var/local ext2/ext3, цитируя man:

Примечание: внешние битовые карты работают только на ext2 и ext3. Хранение файлов битовых карт в других файловых системах может привести к серьезным проблемам.

Связанный контент