Вопрос или проблема
У меня есть 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 один из дисков работает медленнее, система может сосредоточиться на том диске, который предоставляет самые актуальные данные. Однако, это может негативно сказаться на производительности в вашем случае.
Возможные решения
Вот несколько подходов, которые могут помочь вам ускорить процесс синхронизации:
-
Перемещение Содержимого и Удаление Медленного Диска: Если вы хотите, чтобы
sde
использовался активно во время синхронизации, вы можете временно переместить содержимое с медленного диска на более быстрый. Для этого выполните следующие шаги:- Временно остановите массив (
mdadm --stop /dev/md0
). - Удалите медленный диск из массива (
mdadm --remove /dev/md0 /dev/sdd
). - Добавьте его обратно (
mdadm --add /dev/md0 /dev/sde
).
После этого массив будет использовать
sde
для восстановления данных. Как только процесс будет завершен, вы можете добавить новый диск. - Временно остановите массив (
-
Использование Параметра
--force
: Во время добавления нового диска к массиву можно использовать параметр--force
, чтобы принудительно включить диск, однако это напрямую не снимает ваших ограничений с медленным диском. Это сделает возможным использованиеsde
, что позволит вам провести синхронизацию с большими скоростями.mdadm --add /dev/md0 /dev/sde --force
-
Обновление конфигурации RAID и параметры: Вы можете изменить параметры вашего mdadm, чтобы адаптировать конфигурацию массива к условиям вашего оборудования. Для этого:
- Установите параметр
dev.raid.speed_limit_min
для ограничения минимальной скорости синхронизации. - Убедитесь, что у вас достаточно ресурсов системы.
- Убедитесь, что скорость чтения с диска
sde
не блокируется другими процессами.
Для изменения этих параметров используйте команду
sysctl
. - Установите параметр
-
Переход к RAID 10: Если вы часто сталкиваетесь с проблемой медленных дисков, рассмотрите возможность использования RAID 10, что может улучшить производительность и устойчивость массива в целом. RAID 10 сочетает в себе преимущества и RAID 1, и RAID 0, обеспечивая одновременно избыточность и скорость.
Заключение
Управление RAID массивами может быть сложным процессом, особенно если возникли проблемы с медленным диском. Если ни одно из предложенных решений не помогло, возможно, следует рассмотреть возможность замены диска на новый, а затем добавить его в массив. Однако, следуйте осторожности и старайтесь не потерять важные данные. Регулярное резервное копирование и мониторинг состояния ваших дисков помогут избежать подобных ситуаций в будущем.