Все мы храним дома коллекцию чего-то ценного, например фотографий из отпуска. Можно использовать для этого готовый NAS, например от Synology, но стоимость таких решений не вдохновляет. Можно собрать свой домашней сервер в качестве более бюджетного варианта, но использование программного RAID потребует ресурсов CPU, которые являются дефицитом в случае бюджетных решений. С другой стороны, можно использовать аппаратный RAID-контроллер, но стоимость нового контроллера сравнивается по стоимости с готовым NAS-решением. Тут на помощь приходят «проверенные временем» RAID-контроллеры, которые можно найти на интернет площадках типа ebay или aliexpress. Я остановил свой выбор на Adaptec ASR-51245. Далее пример конфигурации и тестирование производительности.
Пример конфигурации
Adaptec ASR-51245 позволят подключить до 16 дисков (12 через внутренние порты и 4 диска через внешний порт). Кроме самого Adaptec ASR-51245 потребуются кабели и охлаждение:
- Adaptec ASR-51245 2268100-R 300Mbps DDR2 PCIe x8 SAS/SATA Raid Controller Card — 1 шт — 2 332,62 руб
- 1pcs Mini SAS 4i SFF-8087 36P 36-Pin Male to 4 SATA 7-Pin Splitter Adapter Cable — 3 шт — 300,27 руб
- New PC Server Hard Drive 15Pin SATA 1 TO 5 Splitter Power Cable 18AWG Wire — 3 шт — 297,65 руб
- PCI Fan 2 * 80mm cooling fan for water cooling system use. FAN-PCI-2 — 1 шт — 663,99 руб
Тестирование производительности
Для тестирования производительности используется утилита 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