synology.forum архив спільноти · 2005–2022
ai.synology.forum →
ГлавнаяУстановка, Загрузка и Настройка › Время ребилда RAID 5

Время ребилда RAID 5

wintermute · 14.09.2016

Добрый день.

После миграции с DS211j (RAID1) на DS416Play встал вопрос о выборе RAID для работы со всеми четырьмя дисками.

Выбрал RAID5 т.к. вскоре планирую нарастить объемы хардов, а на RAID10 замена осложняется.

 

DSM позволяет изменить тип RAID1 на RAID5 уже после добавления 3-го диска, так что никаких проблем вроде слива информации на донора, а потом её восстановления нет. Просто вставляем диски и делаем rebuild.

 

Вот только идет он очень медленно. При настройках по-умолчанию скорость ребилда не поднимается выше 3мб\с.

С моим массивом из 4х2TB ребилд займет около 8.000 мин ~ 6 дней .

В поисках решения проблемы я перелопатил много разных форумов и сайтов, хочу поделиться с вами полученным опытом.

 

Здесь считаю нужным сделать оговорку, что я выполнял данные операции на свой страх и риск, при этом имея в запасе бекап критически важных данных. Если у вас нет бекапа и вы не понимаете что делаете, не рекомендую экспериментировать.

 

При этом реальной информации о сроках окончания DSM не дает. В диспетчере хранения мы можем увидеть только процент текущего выполнения (да и то от медитации на эти цифры оказывается больше вреда чем пользы, но об этом ниже).

http://www.pro-blog.com/wp-content/uploads/2015/02/rebuild-percentage.png

 

Посмотреть текущую скорость и время окончания можно по SSH.

Для выполнения команд нужно использовать логин root, сейчас насколько я понимаю Synology что-то поменяли в логике аутентификации SHH поэтому сразу под ним зайти нельзя.

Сначала вводим учетку ADMIN и пароль от нее. Затем выполняем команду

sudo -i

И снова вводим пароль админа.

 

курсор должен смениться на

root@DiskStation:~#

 

Для оценки скорости и длительности процесса нужно подключаться к NAS через SHH и воспользоваться командой.

 

# cat /proc/mdstat

 

Которая будет возвращаять что-то вроде

 

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4]
md2 : active raid5 sdd3[3] sdc3[2] sdb3[0] sda3[1]
      1948792256 blocks super 1.2 level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [======>..............]  reshape = 3.2% (608558016/1948792256) finish=8936.4min speed=2385K/sec

 

Почитав форумы и несколько статей, выяснилось что по умолчанию переменные отвечающие за пропускную способность RAID выставлены в минимальные значения.

Видимо, так сделали для того что бы не страдали от дефицита ресурсов остальные задачи сервера.

Но нам с вами остальные задачи не важны, нам нужно поскорее перестроить массив и наслаждаться.

Установим минимальную скорость в 50 Мб/сек, а максимальную в 300 Мб/cек (вы можете варьировать данные значения)

 

 
echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

 

Уже это многим помогает увеличить скорость в разы.

Однако, в моем случае данная команда помогла не сильно, скорость осталась в районе 3мб/с.

 

Здесь важно отметить - если у вас открыт диспетчер хранения (что в общем-то логично, при мониторинге процесса), это может замедлить скорость ребилда до 10 (!!!) раз.

Как это объяснить - не понимаю. Возможно кто-то из вас знает - поделитесь.

А пока нам остается смотреть скорость и время ребилда через SHH при закрытом DSM.

 

Так же имеет смысл увеличить stripe_cache_size. Данный способ нельзя назвать полностью безопасным, т.к. вот тут http://www.pro-blog.com/fix-synology-long-...-rebuild-times/ один из пользователей развалил свой RAID после неё (хотя очевидно он где-то ошибся в синтаксисе, в любом случае доступ к данным ему удалось восстановить через службу поддержки synology).

 

Синтаксис команды:

echo ххххх >/sys/block/md2/md/stripe_cache_size

 

Где ххххх - величина в байтах.

А md2 - создаваемый RAID5. Нумерация идет след. образом. md0 - первый диск зеркала, md1 - второй диск в зеркале, md2 - новый массив.

Соответственно перед вводом команды проверьте нумерацию, если мигрируете с другой конфигурации (например 3 диска), то она может отличаться, в любом случае cat /proc/mdstat покажет структуру.

Задавая значение кеша нужно опираться на количество доступной в вашем NAS паяти и количество дисков в массиве. Для своего DS416Play я выставил значение в 24мб.

Табличку с рассчетом потребления памяти можно найти тут: https://romanrm.net/mdadm-raid

2010-05-30t140105z-stripe_cache_size.png

 

Там же приведен синтаксис команд для параметров Chunk size и Read Ahead.

Chunk size - не получиться изменить на работающем массиве, так что на ней останавливаться не будем.

А вот параметр read ahead может быть интересен.

 

# Посмотреть текущий:
blockdev --getra /dev/md?

#Поменять:
blockdev --setra <новое значение в секторах (512 байт)> /dev/md?

 

У себя я использовал след. параметры

 

 blockdev --setra 65536 /dev/md0
blockdev --setra 65536 /dev/md1

 

Т.е. увеличил для обоих дисков с зеркала (т.к. с них идет основное чтение, кстати по умолчанию там стояло что-то около 4000)

 

Повышаем приоритет обработки процесса ребилда. Диапозон параметра от -20 до 19.

renice 5 -p PID

 

PID - id номер процесса, который возвращает команда

 

pidof program_name

 

program_name - можно найти в мониторе процессов DSM. В данном случае повышался приорите для 2х задач:

md2_raid5

md0_resync

Соответственно с приоритетом 5 и 6.

 

В итоге удалось повысить скорость с 3мб/с сначала до 30-35 мб/с, а затем до 130 мб/с что приближается к максимальной скорости дисков.

Ребилд занял около 12 часов вместо 140.

 

http://i85.fastpic.ru/big/2016/0915/58/e5a07c6d537705804c92e397c8ed4758.png

 

 

Надеюсь моя компиляция данных по этому вопросу кому-то поможет.

Дополнения - приветствуются.

 

 

 

RandomUser · 23.11.2016

Премного благодарен!

Наконец-то стало ясно в чем проблема долгого ребилда рейдов.

В закладки.