Adaptec ASR-51245: Бюджетный RAID

Все мы храним дома коллекцию чего-то ценного, например фотографий из отпуска. Можно использовать для этого готовый NAS, например от Synology, но стоимость таких решений не вдохновляет. Можно собрать свой домашней сервер в качестве более бюджетного варианта, но использование программного RAID потребует ресурсов CPU, которые являются дефицитом в случае бюджетных решений. С другой стороны, можно использовать аппаратный RAID-контроллер, но стоимость нового контроллера сравнивается по стоимости с готовым NAS-решением. Тут на помощь приходят «проверенные временем» RAID-контроллеры, которые можно найти на интернет площадках типа ebay или aliexpress. Я остановил свой выбор на Adaptec ASR-51245. Далее пример конфигурации и тестирование производительности.

Пример конфигурации

adaptec-asr-51245
Adaptec ASR-51245 позволят подключить до 16 дисков (12 через внутренние порты и 4 диска через внешний порт). Кроме самого Adaptec ASR-51245 потребуются кабели и охлаждение:

Тестирование производительности

Для тестирования производительности используется утилита bonnie++. Запускаем тест указывая путь к каталогу, в котором будут создаваться файлы, а так же объем ОЗУ, чтобы тест оказался честным и тестировалась работа дисковой подсистемы, а не подсистемы памяти:

$ bonnie++ -d /export/tmp -r 20480
Writing a byte at a time...done
Writing intelligently...done
Rewriting...done
Reading a byte at a time...done
Reading intelligently...done
start 'em...done...done...done...done...done...
Create files in sequential order...done.
Stat files in sequential order...done.
Delete files in sequential order...done.
Create files in random order...done.
Stat files in random order...done.
Delete files in random order...done.
Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
smr-mini.rascal 40G  1246  98 765249  30 346243  18  3962  86 1026027  28 445.0   6
Latency              6803us   28729us     421ms   42907us     131ms     251ms
Version  1.96       ------Sequential Create------ --------Random Create--------
smr-mini.rascal.loc -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
              files  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
                 64 52749  92 +++++ +++ 78727  82 50218  87 +++++ +++ 60032  84
Latency             53670us     110us   38960us   42951us       6us   31315us
1.96,1.96,linux,1,1476731751,40G,,1246,98,765249,30,346243,18,3962,86,1026027,28,445.0,6,64,,,,,52749,92,+++++,+++,78727,82,50218,87,+++++,+++,60032,84,6803us,28729us,421ms,42907us,131ms,251ms,53670us,110us,38960us,42951us,6us,31315us

Наглядные результаты тестирования для RAID6 из 12 SATA-дисков емкостью 1 Тб.

Version 1.96 Sequential Output Sequential Input Random Seeks Sequential Create Random Create
Size Per Char Block Rewrite Per Char Block Num Files Create Read Delete Create Read Delete
K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU
linux 40G 1246 98 765249 30 346243 18 3962 86 1026027 28 445.0 6 64 52749 92 +++++ +++ 78727 82 50218 87 +++++ +++ 60032 84
Latency 6803us 28729us 421ms 42907us 131ms 251ms Latency 53670us 110us 38960us 42951us 6us 31315us

S.M.A.R.T. для дисков за RAID-контроллером

Несмотря на то что диски подключенные к RAID-контроллеру как блочные устройства не доступны в системе по отдельности, доступ к ним все-таки может быть получен через универсальный SCSI-драйвер linux (устройства /dev/sg*). Определить какому жесткому диску соответствует некоторый интерфейс sg поможет утилита sg_map из пакета sg3_utils, которая выводит карту SCSI-устройств:

$ sg_map -i
/dev/sg0  /dev/sda  ATA       OCZ-AGILITY2      1.32
/dev/sg1  /dev/sdb  ATA       OCZ-VERTEX2       1.37
/dev/sg2  /dev/sdc  Adaptec   Export            V1.0
/dev/sg3            ST1000DM003-1SB1  CC43
/dev/sg4            ST1000VX000-1ES1  CV26
/dev/sg5            ST1000DM003-1SB1  CC43
/dev/sg6            ST1000DM003-1SB1  CC43
/dev/sg7            ST31000528AS      CC49
/dev/sg8            ST31000528AS      CC49
/dev/sg9            ST31000528AS      CC49
/dev/sg10            ST1000DM003-1SB1  CC43
/dev/sg11            ST1000DM003-1ER1  CC46
/dev/sg12            ST1000VX000-1ES1  CV27
/dev/sg13            TOSHIBA DT01ACA1  MS2O
/dev/sg14            ST31000528AS      CC49

За присутствие в системе устройства /dev/sg* отвечает модуль ядра sg, в некоторых случаях может потребоваться загрузить его вручную:

$ modprobe sg

После этого можно получать всю информацию о дисках за raid-контроллером через стандартную утилиту smartctl

$ smartctl -H --device=sat /dev/sg7
smartctl 6.5 2016-05-07 r4318 [x86_64-linux-4.7.5-200.fc24.x86_64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED