mdadm заставить использовать все диски в [повторной] синхронизации

Вопрос или проблема

У меня есть MD массив raid1 на 2 диска. Один из дисков медленный, поэтому я хочу его заменить. Но из-за паранойи и ради безопасности я хочу добавить новый (3-й) диск и синхронизировать его перед тем, как удалить медленный диск, так как он просто медленный, но в остальном работает и на нем есть действительные данные, и я хочу избежать ухудшения массива, пока это не станет обязательным.

Итак, я добавил третий диск, и он начал синхронизироваться, так что пока все хорошо. Но он использует только 1 из 2 существующих дисков в качестве источника для синхронизации, и как бы вы знали, согласно моему правилу 50/50/90, он использует медленный диск в качестве (единственного) источника синхронизации. Я могу видеть, что он (только) использует медленный диск с помощью sar:

01:21:55 PM       tps     rkB/s     wkB/s     dkB/s   areq-sz    aqu-sz     await     %util DEV
01:22:00 PM     91.60      0.00  45147.30      0.00    492.87      0.14      1.48     11.26 sdb
01:22:00 PM      0.40      0.00      1.70      0.00      4.25      0.13    314.00     48.08 sde
01:22:00 PM     91.60  45145.60      1.70      0.00    492.87      3.41     37.26     88.30 sdd
01:22:00 PM      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00 md0

sdd — это медленный диск. Если бы MD читал с sde, скорость была бы около 4x больше:

# dd if=/dev/sde of=/dev/null bs=1M count=5000
5000+0 записей введено
5000+0 записей выведено
5242880000 байт (5.2 ГБ, 4.9 GiB) скопировано, 23.1946 с, 226 МБ/с

Честно говоря, я удивлен, что MD так упрощает процесс и не читает с всех дисков при восстановлении, именно по этой причине/случаю.

Итак, есть ли способ заставить использовать sde в этой синхронизации, либо вместе с sdd, либо вместо него?

P.S. Скорость синхронизации не ограничивается dev.raid.speed_limit_max:

# sysctl -n dev.raid.speed_limit_max
20000000

[1] Называйте меня параноиком, но вы знаете, что момент, когда ваш массив остается на одном диске, это момент, когда этот единственный диск и выйдет из строя.

[2] Если у вас есть 50/50 шанс, что что-то произойдет так или иначе, 90% случаев оно произойдет не так, как вы хотели.

Ответ или решение

К сожалению, в RAID-массивах mdadm нет встроенных возможностей для принудительного использования определённого диска при синхронизации (re-sync) массива. Очевидно, что ваш текущий массив RAID 1 использует только медленный диск sdd, что может значительно замедлить процесс синхронизации. Данный подход mdadm основан на гарантии целостности данных: когда в массиве RAID 1 один из дисков работает медленнее, система может сосредоточиться на том диске, который предоставляет самые актуальные данные. Однако, это может негативно сказаться на производительности в вашем случае.

Возможные решения

Вот несколько подходов, которые могут помочь вам ускорить процесс синхронизации:

  1. Перемещение Содержимого и Удаление Медленного Диска: Если вы хотите, чтобы sde использовался активно во время синхронизации, вы можете временно переместить содержимое с медленного диска на более быстрый. Для этого выполните следующие шаги:

    • Временно остановите массив (mdadm --stop /dev/md0).
    • Удалите медленный диск из массива (mdadm --remove /dev/md0 /dev/sdd).
    • Добавьте его обратно (mdadm --add /dev/md0 /dev/sde).

    После этого массив будет использовать sde для восстановления данных. Как только процесс будет завершен, вы можете добавить новый диск.

  2. Использование Параметра --force: Во время добавления нового диска к массиву можно использовать параметр --force, чтобы принудительно включить диск, однако это напрямую не снимает ваших ограничений с медленным диском. Это сделает возможным использование sde, что позволит вам провести синхронизацию с большими скоростями.

    mdadm --add /dev/md0 /dev/sde --force
  3. Обновление конфигурации RAID и параметры: Вы можете изменить параметры вашего mdadm, чтобы адаптировать конфигурацию массива к условиям вашего оборудования. Для этого:

    • Установите параметр dev.raid.speed_limit_min для ограничения минимальной скорости синхронизации.
    • Убедитесь, что у вас достаточно ресурсов системы.
    • Убедитесь, что скорость чтения с диска sde не блокируется другими процессами.

    Для изменения этих параметров используйте команду sysctl.

  4. Переход к RAID 10: Если вы часто сталкиваетесь с проблемой медленных дисков, рассмотрите возможность использования RAID 10, что может улучшить производительность и устойчивость массива в целом. RAID 10 сочетает в себе преимущества и RAID 1, и RAID 0, обеспечивая одновременно избыточность и скорость.

Заключение

Управление RAID массивами может быть сложным процессом, особенно если возникли проблемы с медленным диском. Если ни одно из предложенных решений не помогло, возможно, следует рассмотреть возможность замены диска на новый, а затем добавить его в массив. Однако, следуйте осторожности и старайтесь не потерять важные данные. Регулярное резервное копирование и мониторинг состояния ваших дисков помогут избежать подобных ситуаций в будущем.

Оцените материал
Добавить комментарий

Капча загружается...