Сценарий: мы запускаем большую (всего 3 ТБ в кластере) установку Solr в EC2. Меня беспокоит только производительность диска на стороне чтения. Мы подозреваем, что ограничены дисковым вводом-выводом и, в частности, сталкиваемся с проблемами, когда том EBS начинает давать сбои и замедляться.
Я думаю попробовать RAID 1. Насколько я понимаю, программный RAID Linux разделит чтение между дисками, но я не уверен, насколько это разумно. Если один из дисков в паре RAID 1 будет резервироваться при чтении, отправит ли он больше чтений на другой диск? Если чтение слишком долго откладывается, перенесет ли он это чтение на другой диск?
Я не могу придумать способа проверить это поведение. Я бы с удовольствием посмотрел код, но я даже не уверен, будет ли это обрабатываться планировщиком ввода-вывода или это часть драйверов RAID. Я не могу найти никакой документации, которая бы углубилась в это глубже, чем Software RAID HowTo.
решение1
Балансировка чтения выполняется в драйверах md в ядре; drivers/md/raid1.c
Он не супер умный. Он пытается минимизировать поиски и все. Я не уверен, что какая-либо из реализаций RAID настолько умна, как вам хотелось бы...
Достаточно ли памяти в ваших системах? Если она действительно интенсивно читается, кэширование должно немного помочь.