Очень медленное восстановление raid
Сегодня взял в аренду очередной сервак у Hetzner-а, с тремя винтами по 1.5 Тб. После автоустановки образа Debian-a, я увидел, что из винтов сделан Raid5. Это меня устроило, и я продолжил настройку сервера. Однако при попытке разбить большой файл на несколько меньших с помощью команды split, я заметил, что скорость работы с винтами очень маленькая..
Тогда я решил проверить все ли с ними впорядке. Прежде всего я установил smartmontools:
1 2 3 |
# apt-get install smartmontools |
и проверил S.M.A.R.T. информацию каждого винта, на предмет сбоев:
1 2 3 4 5 6 7 |
# smartctl -a /dev/sda ... # smartctl -a /dev/sdb ... # smartctl -a /dev/sdc |
были только старые предупреждения о превышение температуры заданной производителем, но это не проблема.
После этого я решил проверить сам raid массив:
1 2 3 |
# cat /proc/mdstat |
Тут я увидел, что идет восстановление (синхронизация), и до его завершения осталось около недели:
1 2 3 4 5 6 |
Personalities : [raid1] [raid6] [raid5] [raid4] md2 : active raid5 sda3[0] sdc3[3] sdb3[1] 2925027328 blocks level 5, 512k chunk, algorithm 2 [3/2] [UU_] [==============>......] recovery = 72.5% (1061097000/1462513664) finish=1197.0min speed=940K/sec |
Разумеется, я сразу подумал, что мне достался какой-то убитый винт. Особенно смотря на скорость копирования инфы - меньше 1МБ/сек, это при том, что мои домашние SATA винты легко дают 100+МБ/сек:
Можно конечно, принять в учет, что сервер в этот момент, уже обслуживал много людей, однако все равно 1 МБ/сек это чертовски мало. Как всегда во время проблем, я полез в гугл за информацией, и нашел такой пост: HowTo: Speed Up Linux Software Raid Building And Re-syncing (http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html)
В этом посте, человек столкнулся с похожей проблемой, и оказалось, что это ограничение скорости задано в конфигах. Насколько я понял, это сделано чтобы не оказывать, во время выполнения, большой нагрузки на файловую систему. Однако в моем случае, надо было побыстрее закончить эту процедуру, и посмотреть не будет ли она возникать (а соотвественно и мешать) мне в будущем.
Согласно посту, для того чтобы "тюнингануть" скорость, надо записать значение в КБ/с, вот сюда: /proc/sys/dev/raid/speed_limit_min
Дабы удостовериться в необходимости этой процедуры, я вначале посмотрел существует ли такой файл у меня и что в нем за значение:
1 2 3 |
# cat /proc/sys/dev/raid/speed_limit_min |
На экране мне показали 1000. Значит, это именно то, про что и писали. Пробуем увеличить до 50 МБ/с ( или 50000 КБ/с ):
1 2 3 |
echo 50000 > /proc/sys/dev/raid/speed_limit_min |
После этого я вновь посмотрел на скорость восстановления:
1 2 3 4 5 6 |
Personalities : [raid1] [raid6] [raid5] [raid4] md2 : active raid5 sda3[0] sdc3[3] sdb3[1] 2925027328 blocks level 5, 512k chunk, algorithm 2 [3/2] [UU_] [==============>......] recovery = 74.9% (1095814656/1462513664) finish=132.8min speed=45988K/sec |
Теперь она поднялась до 45988 КБ/с, и время завершения сократилось с 7 дней, до 2 часов. Вот так тюнинг 🙂
После этого, я добавил так же, эти параметры в файл: /etc/sysctl.conf
1 2 3 |
nano /etc/sysctl.conf |
и добавляем, или если уже присутствует, меняем значения:
1 2 3 4 |
dev.raid.speed_limit_min = 50000 dev.raid.speed_limit_max = 200000 |
Значения вступят в силу после перезагрузки, а в случае необходимости задействовать их прямо сейчас, нужно дополнительно выполнить:
1 2 3 |
# sysctl -p |
Если у меня эпопея с винтами на этом не закончится, тогда возможно будет продолжение..
P.S. Для тех, у кого на этом проблемы не исчезли, вот полезная ссылка, по которой в доступной форме и на русском написано, как определить "плохой" диск и поменять его: Узнаем какой диск из софтварного райда надо менять (http://unix-forum.ru/topic774.html)
Author: | Tags: /
| Rating:
Leave a Reply