Skip to content

Monthly Archives: February 2021

Storage upgrade

Последний пост тут был пять с половиной лет тому назад, когда полетел у меня диск на компьютере. Там я почему-то не сказал о том, что полетели у меня тогда все диски и все из-за высокой температуры. Я тогда же приобрёл себе NAS: Synology Diskstation D-414 и загрузил в неё четыре трёх-терабайтных диска. Тогда казалось, что 9 терабайт хватит лет на пять… И вот прошло пять с половиной лет и места стало не хватать. Стали копиться внешние USB диски, куда я сбрасывал то, что не требует постоянного присутствия – просмотренные фильмы и сериалы. Но это привело к тому, что я не знаю где что лежит и заводить какой-то каталог, где будет написано “Кунг Фу Панда 2 – лежит на красном диске”, мне не прельстиво. Поэтому было решено поменять все четыре диска и резко увеличить пространство на диске. Приобрёл четыре диска по восемь гигабайт. Старые у меня были HGST, теперь выяснилось, что бренда такого больше нет, но диски такие всё же есть. Только теперь они продаются под брендом Western Digital. Инструкция говорит, что менять диски надо по одному, данные не потеряются и что после замены восстановление займёт какое-то время. Первый диск менялся 36 часов… Второй – 24 часа. Но вот когда я вставил третий диск, то меня ждал сюрприз. Оказалось, что мой D-414 не понимает volume больше 16Тб и надо будет создавать новый volume. Но для этого надо будет что-то там внутри переписать потому как существующий volume не поддерживает multivolume. Ok, делай как знаешь, железяка. Восстановление заняло 20 часов, и потом запустился raid reshape который должен был закончиться через 2 с половиной суток. Поэтому пошёл я рыть интервебы на предмет ускорения сего процесса. И вот что нарыл. Первым делом надо узнать, как называется существующий raid volume:
cat /proc/mdstat

Personalities : [linear]
[raid0] [raid1] [raid10] [raid6] [raid5] [raid4]

md2 : active raid5 sdd5[7]
sda5[4] sdc5[6] sdb5[5]

      8776305792 blocks super 1.2 level 5, 64k
chunk, algorithm 2 [4/3] [UUU_]

      [===>.................]  recovery = 16.2% (476574016/2925435264)
finish=284.9min speed=143223K/sec

md3 : active raid5 sda6[0]
sdc6[2] sdb6[1]

      9767501824 blocks super 1.2 level 5, 64k
chunk, algorithm 2 [3/3] [UUU]

 md1 : active raid1 sdd2[3]
sda2[0] sdb2[1] sdc2[2]

      2097088 blocks [4/4] [UUUU]

 md0 : active raid1 sdd1[3]
sda1[0] sdb1[1] sdc1[2]

      2490176 blocks [4/4] [UUUU]

 unused devices:
<none>

Из этого видно, что мой называется “md3”. Запомним.

Теперь надо увеличить всяческие лимиты, по-умолчанию установленные в какие-то ну очень малые величины:

echo 600000 > /proc/sys/dev/raid/speed_limit_min

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

echo 4096 > /sys/block/md3/queue/read_ahead_kb

blockdev --setra 4096 /dev/md3

Интервебы рекомендуют ещё бОльшие величины, но в моей железяке памяти всего гигабайт, поэтому я решил не рисковать.

Всё это помогло и reshape сказал что он закончит за 36 часов. Ускорение!

Пока я занимался поиском этих установок и игрой с параметрами, у меня был запущен htop в котором я смотрел чтоб swap не рос и чтоб памяти хватало впритык. Помимо этого, было замечено что хоть md2_raid5 и использует больше всего cpu, но приоритет у него совсем себе стандартный. Как и у md2_resync. Плюс эти два процесса постоянно прыгают между двумя процессорами – то на одном работают, то на другом.

Поэтому было решено дать этим двум процессам приоритет побольше и привязать каждый к одному процессору:

renice -n -10 -p 5560   # md2_raid5 PID

renice -n -10 -p 5570 # md3_resync 

taskset -p 1 5560

taskset -p 2 5570

На такое действие reshape среагировал – закончит за 15 часов! Отличный результат!

Дождался я когда это всё завершилось и вставил последний диск.

> cat /proc/mdstat | grep finish

10:43:35 [>....................] recovery =  2.0% (58834048/2925435264) finish=1146.2min speed=40964K/sec

То есть после перегрузки все установки слетели в default и ждать мне надо 19 часов.

Посмотрим какие установки помогают больше всего…

После echo+blockdev:

10:47:07 [>....................] recovery =  2.3% (67632000/2925435264) finish=862.2min speed=55236K/sec

14 часов.

После renice+taskset:

10:47:38 [>....................] recovery =  2.4% (71944064/2925435264)  finish=327.7min speed=145083K/sec

6 часов!

Ожидалось что будет у меня 24 терабайта на одном volume. Теперь получается, что будет у меня 16 на одном и 8 на другом. Некрасиво, но ничего не поделать.

А для старых дисков я куплю usb3 raid sata железяку, которая будет подключена к теперешнему устройству как внешний диск. И на этой железяке будет 9 терабайт. (Хотелось бы, конечно, купить второй NAS, но стоят они в два с лишним раза больше, чем точно такое-же устройство, но без сетевой карты.) Должно хватить лет на пять!