Небольшая статья поствященная настройке и конфигурированию RAID контроллеров HP Smart Array под Linux, а так же описывающая последовательность действий при выходе дисков из строя. Написана по мотивам печальной истории произошедшей с одним из моих хороших знакомых: «Я поставил Fedora 12 в качестве файлового сервера, теперь все сильно тормозит, а на одном из дисков горит синяя лампочка…»

1. Установка программного обеспечения

Загружаем с сайта HP утилиту настройки RAID-контроллеров Array Configuration Utility CLI for Linux.

[root@kvmsrv ~]# wget ftp://ftp.hp.com/pub/softlib2/software1/pubsw-linux/p414707558/v65771/hpacucli-8.75-12.0.noarch.rpm

Устанавливаем

[root@kvmsrv ~]# rpm -ihv hpacucli-8.75-12.0.noarch.rpm
Preparing...                ########################################### [100%]
1:hpacucli               ########################################### [100%]

При установке на 64-х битную ос для работы утилиты понадобится доставить 32-битные библиотеки.

[root@kvmsrv ~]# yum install glibc.i686 libstdc++.i686

2. Получаем информацию о настройках

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

[root@kvmsrv ~]# hpacucli
HP Array Configuration Utility CLI 8.75-12.0
Detecting Controllers...Done.
Type "help" for a list of supported commands.
Type "exit" to close the console.
 
=> ctrl all show
 
Smart Array P400 in Slot 1                (sn: P61620F9VV82GC)

Таким образом получается системе установлен 1 контролер Smart Array P400 находящийся в первом слоте и имеющий серийный номер P61620F9VV82GC. Теперь мы можем просмотреть более подробно информацию о внутренних настройках контроллера.

=> ctrl slot=1 show
 
Smart Array P400 in Slot 1
   Bus Interface: PCI
   Slot: 1
   Serial Number: P61620F9VV82GC
   Cache Serial Number: PA82C0H9VVA4PJ
   RAID 6 (ADG) Status: Disabled
   Controller Status: OK
   Hardware Revision: Rev D
   Firmware Version: 7.22
   Rebuild Priority: High
   Expand Priority: Medium
   Surface Scan Delay: 15 secs
   Surface Scan Mode: Idle
   Wait for Cache Room: Disabled
   Surface Analysis Inconsistency Notification: Disabled
   Post Prompt Timeout: 0 secs
   Cache Board Present: True
   Cache Status: OK
   Accelerator Ratio: 100% Read / 0% Write
   Drive Write Cache: Enabled
   Total Cache Size: 256 MB
   No-Battery Write Cache: Disabled
   Battery/Capacitor Count: 0
   SATA NCQ Supported: True

Просматриваем информацию о конфигурации дисков и разделов.

ctrl slot=1 show config                                               
 
Smart Array P400 in Slot 1                (sn: P61620F9VV82GC)
 
   array A (SAS, Unused Space: 0 MB)
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)
 
   unassigned
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, OK)

В системе 2 жестких диска по 36Гб в объединенных в зеркальный RAID, и 6 свободных не привязанных ни к какому массиву жестких дисков по 146Гб. Более подробную информацию о состоянии каждого и массивов можно получить при помощи следующей команды, где параметр ld 1 обозначает логический диск с номером 1:

=> ctrl slot=1 ld 1 show
 
Smart Array P400 in Slot 1
 
   array A
 
      Logical Drive: 1
         Size: 136.7 GB
         Fault Tolerance: RAID 1
         Heads: 255
         Sectors Per Track: 32
         Cylinders: 35132
         Strip Size: 128 KB
         Status: OK
         Array Accelerator: Enabled
         Unique Identifier: 600508B100104639565638324743001A
         Disk Name: /dev/cciss/c0d0
         Mount Points: /boot 500 MB
         OS Status: LOCKED
         Logical Drive Label: A007CBB3P61620F9VV82GCBFA2
         Mirror Group 0:
            physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
         Mirror Group 1:
            physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)

3. Настройка RAID5 + HotSpare

3.1 Настройка

Итак в нашем распоряжении 6 дисков -  из первых  пяти собираем  RAID 5 массив:

=> ctrl slot=1 create type=ld drives=1I:1:2,1I:1:3,1I:1:4,2I:1:6,2I:1:7 raid=5

Посмотрим какой номер логического диска получил наш RAID 5.

=> ctrl slot=1 ld all show
 
Smart Array P400 in Slot 1
 
   array A
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
   array B
 
      logicaldrive 2 (546.8 GB, RAID 5, OK)

Смотрим на состояние созданного логического диска, в данный момент проходит инициализация четности для данного массива, весь процесс для 146Гб 10к винтов занял около 5ч.

=> ctrl slot=1 ld 2 show   
 
Smart Array P400 in Slot 1
 
   array B
 
      Logical Drive: 2
         Size: 546.8 GB
         Fault Tolerance: RAID 5
         Heads: 255
         Sectors Per Track: 32
         Cylinders: 65535
         Strip Size: 64 KB
         Status: OK
         Array Accelerator: Enabled
         Parity Initialization Status: In Progress
         Parity Initialization Progress: 3% complete
         Unique Identifier: 600508B100104639565638324743000F
         Disk Name: /dev/cciss/c0d1
         Mount Points: None
         Logical Drive Label: AEEEA2CBP61620F9VV82GCEAF3

Добавляем hotspare, при этом можно не дожидаться окончания процесса инициализации четности.

=> ctrl slot=1 array B add spares=2I:1:8

Просматриваем результат наших действий.

=> ctrl slot=1 show config
 
Smart Array P400 in Slot 1                (sn: P61620F9VV82GC)
 
   array A (SAS, Unused Space: 0 MB)
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)
 
   array B (SAS, Unused Space: 0 MB)
 
      logicaldrive 2 (546.8 GB, RAID 5, OK)
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, OK, spare)

3.2 Выход из строя дисков

Итак представим что один и жестких дисков вышел из строя.

=> ctrl slot=1 show config
 
Smart Array P400 in Slot 1
 
   array A (SAS, Unused Space: 0 MB)
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)
 
   array B (SAS, Unused Space: 0 MB)
 
      logicaldrive 2 (546.8 GB, RAID 5, OK)
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, Failed)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, Rebuilding, active spare)

Пересборка массива прошла как не странно всего за 35мин, при этом скорость упала до 28Мб/с на запись и 7Мб/с чтение. Такое падение производительности обусловлено выставленным высоким приоритетом для пересборки Rebuild Priority: High, изменить его мы можем при помощи комманды

=> ctrl slot=1 modify rebuildpriority=low

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

В качестве эксперимента можно предположить, что в нашем массиве нет HotSpare диска, а один из членов массива вышел из строя

   array B (SAS, Unused Space: 0 MB)
 
      logicaldrive 2 (546.8 GB, RAID 5, Interim Recovery Mode)
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, Failed)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)

Массив перейдет в состояние Interim Recovery Mode и продолжит свою работу до установки нового диска на место вышедшего из строя. На этот период скорость записи остается прежней около 60Мб/с, а скорость чтения упадет до 26Мб/с.

4. Сценарий №2: 4 диска RAID1+0 и 2 диска в RAID0

4.1. Настройка

Создаем RAID1+0:

=> ctrl slot=1 create type=ld drives=1I:1:2,1I:1:3,1I:1:4,2I:1:6 raid=1+0

Проверяем результат:

=> ctrl slot=1 show config                                               
 
Smart Array P400 in Slot 1                (sn: P61620F9VV82GC)
 
   array A (SAS, Unused Space: 0 MB)
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)
 
   array B (SAS, Unused Space: 0 MB)
 
      logicaldrive 2 (273.4 GB, RAID 1+0, OK)
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
 
   unassigned
 
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, OK)

Создаем массив RAID 1:

=> ctrl slot=1 create type=ld drives=2I:1:7,2I:1:8 raid=1

Еще раз смотрим на результат:

=> ctrl slot=1 show config                                               
 
Smart Array P400 in Slot 1                (sn: P61620F9VV82GC)
 
   array A (SAS, Unused Space: 0 MB)
 
      logicaldrive 1 (33.9 GB, RAID 1, OK)
 
      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 36 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 36 GB, OK)
 
   array B (SAS, Unused Space: 0 MB)
 
      logicaldrive 2 (273.4 GB, RAID 1+0, OK)
 
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 146 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 146 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 146 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 146 GB, OK)
 
   array C (SAS, Unused Space: 0 MB)
 
      logicaldrive 3 (136.7 GB, RAID 1, OK)
 
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 146 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 146 GB, OK)

В случае использования дисков с 10000 тысячами оборотами для RAID1+0 скорость чтения будет 173Мб/с, запись – 144Мб/с; а для RAID1 cкорость чтения 85Мб/с, запись 80Мб/с.

4.2 Выход из строя одного диска

В данном случае сценарий восстановления мало чем отличается от описанного в п. 3.2, мы просто меняем вышедший из строя накопитель на новый, и ждем пока пройдет процесс синхронизации. Хочется отметить что достаточно большой плюс использования RAID1 и RAID10 – это отсутствие падения производительности массива в случае выхода из строя одного из дисков.

2 Коммент. : “Настройка Smart Array под Linux”

  1. См. тж. http://www.strocamp.net/opensource/cpqarrayd.php (для новых контроллеров может не годиться); для LSI MPT есть mpt-status.

    PS: пришёл с http://www.opennet.ru/opennews/art.shtml?num=31740

  2. Alsigned пишет:

    Спасибо за информацию.

    PS: Забавно – OpenNet начал постить ссылки на мои статьи ;)

Оставить комментарий