Я настраиваю сервер CentOS 5.6 с помощью Kickstart. У меня четыре дисковода, sda-sdd. Это соответствующие строки кикстарта:
clearpart --linux --drives=sda,sdb,sdc,sdd --initlabel
part raid.11 --size 102400 --asprimary --ondrive=sda
part raid.21 --size 16384 --asprimary --ondrive=sda
part raid.31 --size 1024 --asprimary --grow --ondrive=sda
part raid.12 --size 102400 --asprimary --ondrive=sdb
part raid.22 --size 16384 --asprimary --ondrive=sdb
part raid.32 --size 1024 --asprimary --grow --ondrive=sdb
part raid.41 --size 1024 --asprimary --grow --ondrive=sdc
part raid.42 --size 1024 --asprimary --grow --ondrive=sdd
raid / --fstype ext3 --device md0 --level=RAID1 raid.11 raid.12
raid swap --device md1 --level=RAID1 raid.21 raid.22
raid /data1 --fstype ext3 --device md2 --level=RAID1 raid.31 raid.32
raid /data2 --fstype ext3 --device md3 --level=RAID1 raid.41 raid.42
В основном я разделил первые два диска на root, swap и data. Я разделил 3-й и 4-й диск как один большой раздел данных. Я настроил первые два диска для зеркального отображения друг друга, а два последних диска - для зеркального отображения друг друга. Очень просто.
Я наблюдаю странное поведение: когда я загружаю только что установленную машину, она синхронизирует некоторые рейды более одного раза. Вот соответствующие строки / var / log / messages:
Sep 5 15:09:22 dsp-hw1 kernel: md: md3: raid array is not clean -- starting background reconstruction
Sep 5 15:09:24 dsp-hw1 kernel: md: syncing RAID array md3
Sep 5 15:09:39 dsp-hw1 kernel: md: md2: raid array is not clean -- starting background reconstruction
Sep 5 15:09:39 dsp-hw1 kernel: md: syncing RAID array md2
Sep 5 15:09:53 dsp-hw1 kernel: md: md0: raid array is not clean -- starting background reconstruction
Sep 5 15:09:53 dsp-hw1 kernel: md: delaying resync of md0 until md2 has finished resync (they share one or more physical units)
Sep 5 15:30:12 dsp-hw1 kernel: md: md2: sync done.
Sep 5 15:30:12 dsp-hw1 kernel: md: syncing RAID array md0
Sep 5 15:40:37 dsp-hw1 kernel: md: md3: sync done.
Sep 5 15:42:02 dsp-hw1 kernel: md: md0: sync done.
Sep 5 16:16:03 dsp-hw1 kernel: md: syncing RAID array md1
Sep 5 16:16:03 dsp-hw1 kernel: md: syncing RAID array md3
Sep 5 16:16:03 dsp-hw1 kernel: md: delaying resync of md2 until md1 has finished resync (they share one or more physical units)
Sep 5 16:18:10 dsp-hw1 kernel: md: md1: sync done.
Sep 5 16:18:10 dsp-hw1 kernel: md: syncing RAID array md2
Sep 5 16:43:31 dsp-hw1 kernel: md: md2: sync done.
Sep 5 16:54:57 dsp-hw1 kernel: md: md3: sync done.
Таким образом, он запускает синхронизацию md2 и md3 параллельно (довольно разумно), затем выполняет md0 после завершения md2 (снова довольно разумно) и md1 после завершения md0. Все идет нормально. Затем, без видимой мне причины, он запускает еще одну синхронизацию md3 одновременно с запуском md1. Затем следует еще одна синхронизация md2 после завершения md1. Это полная синхронизация, длится столько же, сколько и оригинал. На самом деле, дольше. Синхронизация md3 длится 31 минуту и 37 минут соответственно, а синхронизация md2 - 21 минуту и 25 минут соответственно.
Возникает вопрос, почему нужно синхронизировать что-либо более одного раза? Я не видел, чтобы он запускал третий (пока), но не уверен, стоит ли этого ожидать. Что еще более важно, я не знаю, указывает ли это на какую-то проблему, которую я должен исправить, прежде чем помещать систему в производственную среду. Я не вижу ничего похожего на ошибку ни в одном из журналов, ничего, указывающего на проблему с первой синхронизацией, вообще ничего ненормального, кроме нечетных дополнительных синхронизаций.
Кто-нибудь может пролить свет на это?
Обновление: пытаясь диагностировать это, я переделывал кикстарт несколько раз. Заметил, что это не 100%. Один раз (только один раз) он вообще никогда не синхронизировал раздел подкачки (md1). В этом случае он синхронизировал каждый из других разделов только один раз.
Возможно, это какое-то состояние гонки, усугубляемое несколькими разделами raid, созданными одновременно на одних и тех же физических дисках?
Моя (CentOS 5.6, 3 раздела RAID на 2 физических дисках) каждую неделю выполняет задание под названием raid-check. В / var / log / messages проверка - это единственный раз, когда я вижу процессы синхронизации md.
Raid-check является частью пакета mdadm и включается / etc / sysconfig / raid-check. Сам сценарий находится в /etc/cron.weekly и называется 99-raid-check. Если вы посмотрите на сценарий, вы увидите некоторые из файлов / proc и / sys, которые показывают, считается ли массив чистым, синхронизируется и т. Д. Возможно, там есть какие-то подсказки.
Я уверен, что вы уже смотрели, но с / proc / mdstat все в порядке?
Мне не удалось определить причину наблюдаемого поведения. Подозреваю, что это просто ошибка. Это очень воспроизводимо в CentOS 5.6, происходит сразу после использования кикстарта для установки машины. Я предполагаю, что это вызвано первоначальным созданием рейда. Я еще не видел каких-либо повторяющихся повторных синхронизаций после первоначального танца.
Я также тестировал CentOS 6.0 и обнаружил, что проблема не возникает. Могу только предположить, что между двумя версиями ядра была исправлена какая-то ошибка.
В любом случае это не вызывает серьезного беспокойства. Если я замечу, что какой-либо из моих серверов 5.6 выполняет повторную синхронизацию после первоначальной установки, я еще раз вернусь к этому вопросу, но сейчас у меня есть более крупная задача. :-)