@ Карта сайта News Автора!

Bog BOS: hardware:  Использование RAID контроллеров в Linux

Последнее изменение файла: 2011.10.25
Скопировано с www.bog.pp.ru: 2012.02.04

Bog BOS: hardware: Использование RAID контроллеров в Linux

В статье описываются технические возможности некоторых RAID (Redundant Array of Independent Disk) контроллеров, драйверов и утилит. Массив дисков может позволить преодолеть ограничение максимальной ёмкости отдельных дисков, может обеспечить сохранность данных при выходе одного из дисков из строя, может ускорить доступ к данным, может обеспечить непрерывное функционирование системы при сбое и даже в момент замены диска.

Наличие RAID - не повод для расслабления. Не забудьте также, что купленный для замены диск должен быть не меньше старого, а у некоторых производителей объём диска может меняться от версии к версии (фактически от партии к партии). Или можно поставить диск большего объёма и при инициализации массива использовать не всё доступное место. Массив, проинициализированный одним контроллером, скорее всего не будет распознан контроллером другого типа. Так что резервный RAID контроллер необходим. Многие контроллеры отказываются кешировать операции записи при отсутствии специальной батарейки (и это правильно). При этом скорость записи может снижаться очень сильно, так что стоимость закупаемой дополнительно батарейки необходимо учесть в смете.

Первоначально "I" в слове RAID означало "Inexpensive" (дешёвых), но быстро выяснилось, что цена самого массива очень высока).

Общие сведения

Возможные причины потери данных:

Первоначально деление RAID массивов на уровни (типы) было предложено Гибсоном, Катцом и Патерсоном (University of California at Berkeley), часть предложенных уровней в настоящее время не используется, зато исторически добавились новые (скорость зависит от реализации и доступности кеширования записи, может отличаться от ожидаемой на порядок; терминология составных массивов - 10, 01, 0+1 - не устоялась окончательно):

Правильный расчёт размера полоски, размера блока файловой системы и группы блоков (ext2/3) в зависимости от типа нагрузки - большое искусство. Если полоска маленькая (относительно среднего размера файла), то получаем большую задержку и большую пропускную способность.

RAID может быть организован с помощью аппаратного контроллера (в этом случае массив представляется BIOS и ОС как один диск) или программного драйвера. В настоящее время многие изготовители оборудования выдают [полу]программный RAID (hostRAID) в качестве аппаратного, при этом поддержка аппаратной части в Linux отсутствует или плохо работает. Разработчики ядра Linux рекомендуют использовать для таких "недо-RAID" стандартный программный драйвер RAID (device-mapper и mdadm). Так как формат данных RAID не стандартизован, то переносить диски от одного аппаратного контроллера в другой в общем случае нельзя. Требуется покупка нового контроллера того же типа. Программная реализация:

Кеширование записи на физических дисках включать нельзя - при сбое питания велик шанс порчи данных. Кеширование записи в контроллере (Write-Back) включать можно только при наличии BBU (Battery Backup Unit), а ещё лучше TBBU (Transport BBU), которая позволяет спасти данные из кеша даже в случае выхода из строя контроллера. Write-Through - это отсутствие кеширования записи.

Запасные диски (hot disk, hot spare) обеспечивают возможность при отказе одного из действующих дисков массива автоматически заменить его запасным. При этом массив сохраняет устойчивость к возможному сбою другого диска. Запасной диск (диски) могут быть привязаны к массиву, группе массивов или быть общими. Перестроение массива (копирование данных или вычисление контрольных сумм и запись на запасной диск) может выявить плохие блоки на одном из оставшихся дисков, что вызовет полный развал массива. Рекомендуется регулярная проверка на наличие плохих блоков пока всё ещё хорошо (некоторые контроллеры имеют встроенную возможность периодической проверки в фоновом режиме).

Возможность горячей замены (hot swap, hot plug) позволяет заменить неисправный диск, не останавливая системы. Требуется поддержка со стороны диска (PATA диски не предназначены для горячей замены; SCSI SCA - предназначены; SATA - зависит от модели), корзины (хороший признак - совмещённый разъём питания и логики в корзине) и контроллера (после замены PATA диска необходимо сканировать шину - hdparm - и прочитать заново таблицу разделов; SATA драйвер в ядре 2.6 должен сработать; для SCSI может потребоваться ручное вмешательство - /proc/scsi/scsi). В некоторых случаях можно обеспечить горячую замену там, где она не подразумевалась производителем, но можно и сжечь оборудование. Например, я многократно менял обычные SCSI диски, подключенные внешним кабелем, не выключая Sun SparcServer, но требовалось соблюдать правильную последовательность действий (размонтировать файловые системы, выключить питание диска, отсоединить кабель в точке присоединения к хосту, заменить диск и т.д.).

SAF-TE (SCSI Accessed Fault-Tolerance Enclosure) позволяет мониторить наличие и работоспособность дисков, блоков питания, температуру и т.д.. Представляется в виде дополнительного SCSI устройства (для SCSI) или I2O устройства (для ATA, SATA).

Нет смысла размещать раздел подкачки (swap) на RAID массиве с целью ускорения работы - ядро умеет балансировать нагрузку на несколько разделов подкачки с равными приоритетами. Однако использование RAID-1/5/6 позволит продолжить работу при сбое диска.

Intel RAID controller SRCS28X

Intel RAID controller SRCS28X. Отзывается на кличку LSI Logic MegaRAID LD (является аналогом MegaRAID SATA 300-8X). Интерфейс: PCI-X 1.0a (64 bit, 133 MHz, может работать на частоте 66 или 100 MHz). Содержит собственный процессор Intel 80331 (аппаратный XOR для RAID 4/5, 100 MHz?) и память под кеш (128MB embedded, unbuffered ECC DDR 333 SDRAM). Поддерживает 8 независимых SATA II портов на контроллере Marwell 88SX6081. Поддерживает SAF-TE. Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50. Текущая версия прошивки 814b (у меня 813i/H430, т.к. в описании ничего полезного не заявлено). Инициализируется больше минуты.

Для включения кеширования записи необходимо докупить батарейку AXXRIBBU1 867464 INTEL (заряжается несколько часов; менять через 3 года). Держит содержимое кеша два дня (по неофициальной информации), при восстановлении питания записывает содержимое кеша записи на диск. Без неё кеширование записи write back нельзя включить из BIOS (можно сделать это из web консоли, но не советую). Скорость записи без кеширования для RAID-5 меньше 10 MB/sec, с кешированием - более 90 MB/s (переход на RAID-50 без кеширования скорость записи не увеличивает). Не помогает при пропадании питания при включённом кешировании на самих дисках (можно включить/выключить только в BIOS 813i/H430).

Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине). Возможность задержки раскручивания дисков. Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk, hot spare). Запасной диск можно добавить позднее (в общий пул или для конкретного массива). При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail" и восстановлению не подлежит. При сбое одного диска (состоягие массива "Degradated") необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву (в версии 813g/H425 не сработало). Автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки (необходимо указать при создании - FlexRAID PowerFail в BIOS, указывается доля расходуемой на это пропускной способности, при 30% и запрете кеширования записи восстановление диска 400 GB занимает больше суток, более 50% может не понравиться ОС, та же доля используется при проверке массива; собственно, создание массива RAID-5 есть непрерываемый режим проверки; при нахождении различия данные считаются правильными, а контрольная сумма перевычисляется).

Имеет собственный звучок (включается при переходе одного из массивов в состояние Fail или Error; отключается программно или в BIOS временно или навсегда; равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск; на одном экземпляре звук очень тихий - как щелчки).

Чтобы войти в BIOS RAID необходимо нажать ^G при загрузке. Не срабатывает, если разрешена загрузка с CD-ROM или ATA и загрузка возможна (например, установлен загружаемый CD-ROM). Требуется отключить в BIOS материнской платы всякие там Quick boot, Fast boot, Silent boot и прочее. Можно сконфигурировать до 30 логических дисков на контроллер, до 32 физических дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять только в порядке обратном порядку создания. Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50), может состоять только из части массива. Массив конструируется из физических дисков. Логический диск после создания должен быть проинициализирован (заполняется нулями). BIOS позволяет объединять/заменять физические диски слегка различающегося размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале. Все настроечные данные хранятся на диске и в NVRAM (настройка контроллера BIOS Config Auto Selection позволяет выбирать при их несовпадении).

Политика ввода/вывода: с использованием кеша, прямой доступ. Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование. Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш), write through (контроллер рапортует о завершении записи после передачи на диск). Кеширование записи можно включать только при наличии батарейки (см. выше). Кеширование записи дисков необходимо выключить.

По типу управления входит в семейство Software Stack 2 (нельзя взять диск из массива, созданного контроллером семейства Software Stack 1). Официально поддерживается RHEL AS 4.0 (включая EM64), Red Hat 8.0 и 9 (megaraid_mbox). CentOS 4.2 нормально устанавливается на массив с использованием встроенного драйвера. Управление осуществляется исключительно с помощью web-консоли (ir2_Linux_Webconsole_v2.8-00-5.tgz). Для этого на компьютер с RAID контроллером устанавливается управляющее Java-приложение (вместе с собственной JVM!), которое изображает HTTP-сервер (порт 3570 для HTTP и --beep-- динамически выделяемый порт для TLS, номера портов и другие параметры хранятся в файле /opt/SVR/svr.properties, создаются файлы "/usr/share/applications/Start Web Server.desktop" и "/usr/share/applications/Stop Web Server.desktop") - 60MB в /opt/SVR (это имя заносится в /etc/profile). Сервис называется reboot ( --beep-- ; при установке в /etc/rc6.d/ делается ссылка S50reboot на ../init.d/reboot со всеми вытекающими проблемами при перезагрузке: дважды --beep--). HTTP-сервер получает информацию от RAID сервера (порт 3571, /usr/sbin/RSLinux, сервис rslinux, /usr/sbin/K255megadev, /usr/sbin/StopServer, /etc/rc.d/init.d/rslinux, /dev/megadev0, /var/log/PollMessages.log, /var/log/RSMessages.log, /var/log/javaraid.log, иногда подвисает при запуске, так что автоматический запуск при загрузке лучше не делать). Для работы RAID сервера требуется пакет compat-libstdc++-296. На управляющем компьютере никаких специальных программ устанавливать не нужно (только браузер с включённым JavaScript). Имеется также сервер регистрации, который позволяет управлять RAID массивами на хостах с динамическими IP (управляющее приложение на таком хосте извещает сервер регистрации о своём адресе - адрес сервера регистрации в /etc/regsrv.dat; при установке необходимо указать networking вместо Standalone. Установка: ./RAID_Web_Console_Linux.bin -console. Запуск: /opt/SVR/binstartup.sh (/opt/SVR/binshutdown.sh). Рекомендуется сразу озаботиться правами доступа к /opt/SVR, т.к. после установки любой может запустить или остановить web консоль. Кстати, защиты доступа на чтение по HTTP - нет. Можно запустить только одну сессию с доступом на запись. Пароль доступа по сети устанавливается утилитой /usr/sbin/SetPass (закрыть /etc/raidpass.val!). Можно сохранить (в двоичном виде) конфигурацию контроллера и загрузить её в дальнейшем. Нет ни возможности узнать серийные номера, ни возможности помигать лампочками, чтобы физически идентифицировать сбойнувший диск. Фоновые задания начинают показываться (Device Progress) только после достижения 1%. Попытка переставить диск с одного контроллера (813i) на другой (813g) кончилась плохо (пришлось заполнять диск мусором с помощью badblocks). Поддержки SMART нет. Управление сделано настолько неудобно, что возникает мысль, что это неслучайно. К счастью, утилиты megarc и megamgr от LSI Logic MegaRAID подходят и к этому контроллеру (однако серийные номера и информацию SMART увидеть всё равно невозможно).

Замена firmware: скопировать 813I.rom (ir2_SRCS28X_FW_v813i_package_v1.0.zip) на флоппи, скопировать irflash (заменить внутри "/usr/sbin" на "./") и irflash.bin на флоппи (irflash-4.01.00-0.i386.rpm), загрузиться (CentOS 4.2 x86_64 не подошёл), cd флоппи, ./irflash -p, ввести 813I.rom.

Результаты тестирования с помощью bonnie:

SE7230NH1LX (E7230), Pentium D 3000 MHz, RAM: 1 GB, 6 Seagate ST3400832AS (400GB)

RAID-5 6x400G Write Thru,  No Read Ahead, Direct I/O, hd cache - Write Thru
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000  7682 16.5  7259  2.9  5879  1.9 23415 41.5 72048 10.0  304.0  1.0

RAID-5 6x400G Write Thru,  No Read Ahead, Cached I/O, hd cache - Write Thru
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000  7196 15.4  6870  2.7  5676  1.9 28476 50.7 60275  8.4  307.9  0.9

RAID-5 6x400G Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write Thru
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000  7304 15.7  7056  2.8  5993  2.0 26043 46.2 56675  8.1  314.2  0.9

RAID-5 6x400G Write Back, Adaptive ReadAhead, Cached I/O, hd cache - Write Thru
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000 45858 97.6 109810 43.5 34725 10.5 34700 61.4 57584  8.1  345.3  1.0

RAID-5 6x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
RAID   1*4000 15368 34.0 16212  6.6 13546  4.4 32698 63.0 56587  8.1  310.8  0.9

RAID-50 2x3x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000 13847 30.5 13987  5.8 11277  3.7 29361 55.6 50942  7.3  334.0  1.0

RAID-50 2x3x400GB Write-Back, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
m7     1*4000 44556 98.2 94405 40.3 31298  9.6 31920 60.5 51559  7.3  356.3  1.3

LSI Logic MegaRAID SATA300-8X

LSI Logic MegaRAID SATA300-8X (аналог Intel RAID controller SRCS28X). Интерфейс: PCI-X 1.0a (64 bit, 133 MHz, может работать на частоте 66 или 100 MHz). Содержит собственный процессор Intel 80331 (аппаратный XOR для RAID 4/5, 100 MHz?) и память под кеш (128MB embedded, unbuffered ECC DDR 333 SDRAM). Поддерживает 8 независимых SATA II портов (с NCQ и TCQ) на контроллере Marwell 88SX6081 (нумеруются снизу и от платы). Поддерживает SAF-TE (управление контроллером ящика, I2C). Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50. Текущая версия прошивки 814B, BIOS H431, U828, WebBIOS 3.23 (813G загружался быстрее, а задержка раскрутки дисков так и не появилась). Инициализируется больше минуты.

Для включения кеширования записи необходимо докупить батарейку LSIBBU03 (640 mAH, 32 часа) или LSIiBBU01 (880 mAH, 72 часа, автоматический заряд и информация о напряжении, температуре и токе). Заряжается несколько часов; менять через 3 года. Держит содержимое кеша, при восстановлении питания записывает содержимое кеша записи на диск. Без неё кеширование записи write back нельзя включить из BIOS. Скорость записи без кеширования для RAID-5 меньше 10 MB/sec, с кешированием - более 90 MB/s (переход на RAID-50 без кеширования скорость записи не увеличивает). Не помогает при пропадании питания при включённом кешировании на самих дисках (можно включить/выключить только в BIOS 813i/H430).

Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине). Возможность задержки раскручивания дисков. Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk, hot spare). Запасной диск можно добавить позднее (в общий пул или для конкретного массива). При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail" и восстановлению не подлежит. При сбое одного диска (состояние массива "Degradated") необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву (в версии 813g/H425 не сработало). Автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки (необходимо указать при создании - FlexRAID PowerFail в BIOS, указывается доля расходуемой на это пропускной способности, при 30% и запрете кеширования записи восстановление диска 400 GB занимает больше суток, более 50% может не понравиться ОС, та же доля используется при проверке массива; собственно, создание массива RAID-5 есть непрерываемый режим проверки; при нахождении различия данные считаются правильными, а контрольная сумма перевычисляется).

Имеет собственный звучок (включается при переходе одного из массивов в состояние Fail или Error; отключается программно или в BIOS временно или навсегда; равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск; на одном экземпляре звук очень тихий - как щелчки).

Чтобы войти в настройки RAID необходимо нажать ^M (текстовый режим) или ^H (графический режим) при загрузке. Не срабатывает, если разрешена загрузка с CD-ROM или ATA и загрузка возможна (например, установлен загружаемый CD-ROM). Требуется отключить в BIOS материнской платы всякие там Quick boot, Fast boot, Silent boot и прочее. Можно сконфигурировать до 30 логических дисков на контроллер, до 32 физических дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять только в порядке обратном порядку создания. Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50), может состоять только из части массива. Массив конструируется из физических дисков. Логический диск после создания должен быть проинициализирован (заполняется нулями). BIOS позволяет объединять/заменять физические диски слегка различающегося размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале. Все настроечные данные хранятся на диске и в NVRAM (настройка контроллера BIOS Config Auto Selection позволяет выбирать при их несовпадении).

Политика ввода/вывода: с использованием кеша, прямой доступ. Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование. Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш), write through (контроллер рапортует о завершении записи после передачи на диск). Кеширование записи можно включать только при наличии батарейки (см. выше). Кеширование записи дисков необходимо выключить.

Мультипликатор портов (до 4, PM-ENBL, нельзя включать при наличии логических дисков, требуется перезагрузка).

С точки зрения драйверов и утилит - аналог Intel RAID controller SRCS28X, так что можно использовать megamgr и megarc.

LSI Logic (Symbios Logic) MegaRAID SATA150-6

LSI Logic (Symbios Logic) MegaRAID SATA150-6 SER523 Rev B2. Интерфейс: PCI 2.2 66 MHz, 64-bit, 3.3V или 5V (для 32-битной шины необходим 3-позиционный джампер). Содержит собственный процессор Intel GC80302 (аппаратный XOR) и память под кеш (64 MB, 66 MHz, ECC SDRAM). Поддерживает 6 независимых SATA-1 портов (150 MB/s, 3 контроллера Silicon Image SATALink Sil3112ACT144, порт 0 с края корпуса). Джамперы: PCI 32-bit, использовать ли BIOS, Mode 0 (?), 3.3V load sharing (питание снимается с одновременно с линий 3.3V и 5V, иначе только с линии 5V). Поддерживает протокол SAF-TE (интерфейс I2C с процессором SEP стойки). Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50. Текущая версия прошивки 713N (не обновлялась с 2004 года), BIOS Version : G119.

Для включения кеширования записи необходимо докупить батарейку LSIBBU01 (NiMH, 600 mAH, быстрая зарядка - 6 часов - не сработала (из-за температуры выше 40?); менять ежегодно (?!) или через 1000 циклов зарядки - счётчик доступен в megamgr). Держит содержимое кеша 53 часа (свежая полностью заряженная батарейка, обещание изготовителя), при восстановлении питания записывает содержимое кеша записи на диск, имеется интерфейс для подключения индикатора наличия незаписанных данных в кеше.. Без неё кеширование записи write back нельзя включить. Скорость записи без кеширования для RAID-5 меньше 6 MB/sec, с кешированием - более 40 MB/s. Не помогает при пропадании питания при включённом кешировании на самих дисках.

Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине). Возможность задержки раскручивания дисков (не работает). Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk, hot spare). Запасной диск можно добавить позднее (только общий пул). При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail" и восстановлению не подлежит. При сбое одного диска (состояние массива "Degradated") необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву. Возможно автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки, необходимо указать при создании FlexRAID PowerFail в BIOS. Указание доли пропускной способности, расходуемой на восстановление. При 30% и запрете кеширования записи восстановление диска 400 GB занимает больше суток, более 50% может не понравиться ОС. Та же доля используется при проверке массива (создание массива RAID-5 есть непрерываемый режим проверки). При нахождении различия данные считаются правильными, а контрольная сумма перевычисляется, если при чтении произошла ошибка ввода, то данные перевычисляются из контрольной суммы, а блок переназначается на резервную дорожку. Рекомендуется периодически делать проверку массива, т.к. если "плохой" блок "проявится" при восстановлении, то данные будут потеряны.

Имеет собственный звучок (включается при переходе одного из массивов в состояние Fail или Error; отключается программно или в BIOS временно или навсегда; равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск).

Настройка во время загрузки BIOS - ^M, графический режим настройки - ^H (дополнительные функции - отключение BIOS, требуется при загрузке не с массива; coercion; отключение восстановления данных при проверке; остановка при ошибке в конфигурации; выбор конфигурации при расхождении между версиями в NVRAM и на диске; задержка раскрутки; отключение автовосстановления). Можно сконфигурировать до 40 логических дисков на контроллер, до 32 физических дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять только в порядке обратном порядку создания. Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50), может состоять только из части массива или частей массива (даже несмежных), но на реконфигурацию такого логического диска накладывается множество ограничений. Массив конструируется из физических дисков. Логический диск после создания должен быть проинициализирован (заполняется нулями). BIOS позволяет объединять/заменять физические диски слегка различающегося размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале. Все настроечные данные хранятся на диске и в NVRAM (настройка контроллера BIOS Config Auto Selection позволяет выбирать при их несовпадении). Это позволяет перемещать диск внутри контроллера. Чтобы переместить массив целиком на новый контроллер (того же типа), необходимо очистить конфигурацию нового контролера, диски необходимо подключать в те же самые позиции, что и на сгоревшем контроллере. Если в кеше записи остались данные, а батарейный модуль не типа TBBU, то они при смене контроллера будут потеряны. Реконфигурацию массива (добавление диска, смена типа RAID) нельзя прерывать и перезагружаться (что происходит с данными не уточняется ;).

Политика ввода/вывода: с использованием кеша, прямой доступ. Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование. Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш), write through (контроллер рапортует о завершении записи после передачи на диск). Кеширование записи можно включать только при наличии батарейки (см. выше). Кеширование записи дисков необходимо выключить.

Заявлена поддержка RHL 7.3 и 8.0. Работает в RHL 9 (состояние /proc/megaraid) и в CentOS 4.2 (модули megaraid_mbox и megaraid_mm, управление megarc и megamgr).

Материнская плата S875WP1, Pentium 4 3000 MHz, 1GB

RAID-5 5x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - off
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
       3*2000  5326 12.6  5292  2.5  4753  1.8 25555 51.8 49339  7.7  253.6  0.8

RAID-5 5x400GB Write Back, Adaptive ReadAhead, Cached I/O, hd cache - off
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
       2*2000 34438 85.4 42080 19.4 14883  5.0 24167 76.0 27510  4.2  249.9  0.8

Утилита LSI Logic megarc

megarc 1.11 (ut_linux_megarc_1.11.zip) позволяет мониторить и управлять из командной строки RAID-контроллерами Intel SRCS28X, MegaRAID SATA 300-8x и MegaRAID SATA150-6. Нет работы с батарейкой, получения серийного номера и данных SMART. Не все обещанные (и имеющиеся в BIOS утилите) функции имеются: настройка быстрой инициализации; задержка раскручивания диска; настройка интервала сброса кеша; отключение BIOS; автоматическое восстановление; coercion; выбор между конфигурацией в NVRAM и на диске; прерывание фоновой инициализации и проверки; мультипликатор портов; NCQ. Содержит скрипт megarc, который создаёт /dev/megadev0 и запускает megarc.bin (собран статически). При запуске в текущем каталоге создаётся файл megarc.log. Краткую справку можно получить задав параметр "?". Между ключом и значением параметра пробел ставить не надо.

Параметры (номер диска для SATA контроллеров выглядит, например, как 0:4):

Команды мониторинга и управления (команда указывается первым ключом; -aN указывать почти всегда; команды конфигурации массива описаны в документации в формате .doc ;):

Утилита LSI Logic megamgr

megamgr 5.20 (ut_linux_mgr_5.20.zip) - интерактивная утилита (curses) позволяющая настроить контроллер и сконфигурировать массив. В отличие от megarc умеет показывать состояние батарейки. По функциям аналогичен текстовой версии в BIOS (т.е. нет функции миграции). Некоторые управляющие клавиши:

Обещанных в документации патрульного чтения, SAF-TE, FlexRAID Virtual Sizing не обнаружено.

Реконструкция. F2 - показать параметры логического устройства. Пробел - выбрать диск для удаления (из RAID-0 удалить диск нельзя) или добавления (пометка не ставится!). Enter - выбрать логическое устройство. Следующий Enter - войти в меню выбора режима. Здесь можно преобразовать RAID-5 в RAID-0 (10 часов на массив из 5x73GB, 293GB в 349GB, Linux не заметил изменения размера устройства - придётся перезагрузиться), поменять размер полоски и начать реконструкцию. Прерывать реконструкцию нельзя. После этого можно добавить диск и преобразовать массив обратно в RAID-5. Linux не замечает изменения размера устройства - приходится перезагружаться, затем использовать LVM.

LSI Logic MegaRAID Configuration Console Package

Аналог (точнее прародитель) вебконсоли от Intel. Устанавливать не стал.

megamon

Мониторинг состояния RAID для LSI Logic (Intel ???, Dell Perc) - вывод состояния массива на syslog, извещение администратора о неприятностях (включая SMART и состояние батареи), планирование проверки массива. Устанавливал из комплекта Dell perc-cerc-apps-6.03-A06.tar.gz, который содержит пакет Megamon-4.0-0a.i386.rpm. Пробный запуск: /etc/rc.d/init.d/raidmon start (после тестирования: chkconfig --add raidmon). Настроечный файл: /etc/megamon.conf (список e-mail адресов получателей извещений). Интервал опроса контроллера задаётся в файле /etc/megapoll.conf в виде: $pollingInterval число-секунд. Журнал: /var/log/megaserv.log и /etc/megamonitor/monitor (?!). Документация в комплекте отсутствует, но есть у добрых японцев, а также ключ -help у команды MegaCtrl:

Упал при извлечении диска (при этом RAID не перешёл в состояние critical, зато файловая система стала read-only со всеми вытекающими последствиями, на всякий случай отключил):

MegaServ[4845]: segfault at 0000000000000046 rip 000000000807851c rsp 00000000ffffd0a0 error 4

LSI Logic GAM

GAM (Global Array Manager) - "тяжёлый" пакет управления большим количеством контроллеров (агент, SNMP, сервер управления).

Power Console Plus не имеет версии под Linux (позволяет преобразовать RAID0 в RAID1 или RAID5 добавлением диска; позволяет преобразовать деградировавший RAID5 в оптимальный RAID0 с удалением диска; позволяет преобразовать RAID5 в RAID0; позволяет мониторить производительность; позволяет остановить диск; позволяет немедленно записать кеш на диск): клиент (позволяет мониторить зарегистрированные сервера), сервер (обеспечивает интерфейс с контроллером), сервер регистрации, SNMP агент (обеспечивает сетевой интерфейс), монитор.

Intel RAID controller SRCS14L

Intel RAID controller SRCS14L Низкопрофильная PCI 2.2 (64 bit, 66 MHz) плата, с собственным процессором (Intel 80303, аппаратный XOR для RAID 4/5, 100 MHz) и памятью под кеш (64MB embedded, unbuffered PC100 ECC SDRAM), поддерживает 4 независимых SATA порта (A:0, A:1, B:0, B:1) на двух контроллерах (Silicon Image Sil3112A). Переключатели. Имеет собственный звучок (80 dB, включается при переходе одного из массивов в состояние Fail или Error; отключается только програмно - Advanced Setup > Configure Controller > F4) и индикаторы. Обеспечивает JBOD, chain (disk span), RAID уровней 0, 1, 5, 10, до 2 массивов. Физический диск перед использованием инициализируется (первая инициализация RAID-5 деструктивна, при этом выдаётся неверное сообщение; повторная инициализация на том же контроллере - не деструктивна), чтобы перенести RAID на другой компьютер, он должен иметь такой же контроллер (SRCS14L), хотя в режимах RAID-0 и RAID-1 таблица разделов стандартная. Все настроечные данные хранятся в 2 экземплярах на каждом диске. Логический диск конструируется из физических (физического), может содержать часть физического диска (полезно, если принесённый на замену диск окажется на пару мегабайт меньше исходных). Каждый массив содержит не менее 2 дисков (логических) и представляется системе как SCSI диск (Host Drive, /dev/sda и т.д.) или 2 диска (после расширения или разделения). Похоже, что разработчики сами путаются между физическими, логическими и хост устройствами (содрали у IBM не разобравшись?), так что надо быть осторожнее. Порядок хостовых дисков можно изменить (загрузочный только из BIOS). При удалении хостового диска, имеющего напарника, удаляются оба устройства (с потерей всех данных). Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk, hot spare). Запасной диск можно добавить позднее (в общий пул или для конкретного массива). При отсутствии запасного диска после сбоя одного диска массив переходит в состояние "Fail", необходимо отключить его (BIOS или storcon), вынуть неисправный диск, вставить новый, добавить его к массиву (перестроение 114 ГБ заняло 12 часов). При этом обеспечивается горячее подключение PCI-платы (требуется поддержка со стороны материнской платы и ОС) и дисков (сам диск должен это уметь). При сбое двух дисков в массиве он переходит в состояние "Error", данные теряются. Описание и установка. По типу управления входит в семейство Software Stack 1. Официально поддерживается Red Hat 7.3, 8.0 (ядро 2.4.18-18.8.0) и 9 (драйвер gdth (GDT-HA, 3.04 для ядра 2.6.8.1), /proc/scsi/gdth/, имеет множество не особо полезных параметров). Конфигурация, управление, мониторинг и статистика осуществляется с помощью BIOS (Ctrl-G при загрузке, некоторые возможности - destructive build, очистка журнала, изменение номера загрузочного диска, форматирование, разделение и слияние хост дисков, управление разделами - доступны только из BIOS) или утилитой storcon 2.16.6. Утилита поставляется в виде пакетов различного типа (rpm, deb, tar.gz), но в действительности оттуда необходимо извлечь программу storcon и документацию storcon.8 (не содержит ничего полезного). Имеется также утилита удалённого управления, о которой лучше сразу забыть. Функции:

Утилиту, позволяющую получить доступ к контроллеру из скриптов, найти не удалось. Видимо, опять придётся искать аналог как в случае с SRCS28X.

Текущая версия firmware 2.36.02-R048, имеется 2.42.02-R07A. Для обновления требуется само firmware и Firmware Recovery Utility (FRU), создающая загружаемую дискету, или System Update Package (SUP) создающий загружаемый CD-ROM. Кстати, найти их на сайте Intel можно только гуглом, ссылки на странице поддержки контроллера ведут в никуда. Чтобы посмотреть Release Notes фирма Intel предлагает записать ISO на CD-R, загрузиться с него и выбрать соответствующий пункт из меню. Приколисты. Самое смешное, что выводимый в результате текст не содержит никакой информации об изменениях в firmware.

История: деградировавший БП привёл к зацикливанию контроллера во время POST, так что не было доступа даже к обычному BIOS.

Результаты тестирования с помощью bonnie 1.4:

i875, Intel(R) Pentium(R) 4 CPU 2.80GHz, RAM: 1 GB, 4 Seagate ST3120026AS (120GB), RH 9, 2.6.8.1

RAID-5 4x120G Delayed Write - off, hd cache - off
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
       1*2000  7010 98.8 13289  2.8  8100  2.1  6153 84.9 36931  4.3  263.4  0.4

RAID-5 4x120G Delayed Write - on, hd cache - off
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
       1*2000  6921 97.9 11782  2.5  9164  2.3  6023 83.3 43438  4.9  265.3  0.5

RAID-5 4x120G Delayed Write - on, hd cache - on
              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
       1*2000  7011 99.2 20625  4.4 16007  4.2  6618 91.4 39487  4.7  274.1  0.5

Mylex AcceleRAID 170

Mylex (в девичестве BusLogic, потом IBM, ныне часть LSI Logic) AcceleRAID 170 на базе Intel 960RM (100 MHz) и QLogic ISP 10160A, плата PCI 2.2 (33 MHz, 32 бит, 5V), один канал Ultra 160 SCSI (внешний 68 Pin, внутренний 68 Pin), LVD, 80 MHz, 16 бит, глубина очереди - 16, контроллер имеет идентификатор 7. На дисках необходимо отключить терминаторы (кроме последнего активного терминатора в цепочке) и включить termination power. Контроллер имеет автоматический терминатор с распознаванием SE и LVD. 32 MB ECC DIMM на неиспользуемый из-за отстутствия батарейки кеш (можно увеличить до 128 MB). Индикация LED: Single Ended, LVD и сбой. Разъём под LED индикации несброшенного кеша. Поддерживает RAID 0, 1, 0+1 (Mylex RAID 6), 5, 10, 50 и JBOD (Mylex RAID 7), диски горячего резерва (standby, hot spare, при сбое диска данные перевычисляются и записываются на резервный диск, резервный диск переводится в состояние Online, сбойнувший диск вынимается, вставляется новый и помечается как резервный) и автоматическое восстановление массива (требуется SAF-TE, по умолчанию выключено). Фоновая инициализация. PCI Hot Plug (только замена; требуется поддержка со стороны материнской платы и ОС). Hot Swap: при отказе диска контроллер выдаёт предупреждение оператору, отказавший диск вынимается, вставляется заменяющий диск, оператор выдаёт команду перестроения массива (в EzAssist). Логический диск не более 2 ТБ. Не более 32 логических дисков. Поддержка SAF-TE (по SCSI) и SES. Возможность перемещать диски внутри контроллера. Поддержка SMART. Кеширование записи write-through (без кеширования) и write-back (с кешированием). Конфигурация массивов и настройка контроллера хранится в NVRAM и на дисках (COD), образующую массив группу дисков можно переносить на аналогичный контроллер. При ошибке чтения блока данные считываются с зеркала или перевычисляются с других дисков.

firmware 7.00-03 (имеется 7.02), BIOS 6.01-30, EzAssist 3.00-02 (утилита конфигурации в BIOS). Вызов утилиты настройки BIOS при загрузке - Alt-M (отключение BIOS - BIOS требуется для загрузки с диска или CD-ROM, подключённого к контроллеру; разрешить загрузку с CD-ROM, подключённого к контроллеру; геометрия диска 2 GB (128/32) или 8 GB (255/63) - при изменении требуется форматирование файловой системы, загрузочный раздел должен находиться в первых 2 или 8 GB; для больших дисков необходимо поставить 8 GB, иначе могут быть проблемы). Вызов утилиты конфигурирования массива (RAID EzAssist) при загрузке - Alt-R. Настройка параметров контроллера (TAB, +, -, пробел): автоматическое восстановление массива (отслеживает удаление неисправного диска и вставку нового, требуется SAF-TE); выделяемая на восстановление или расширение (MORE) доля пропускной способности (50); инициализация в фоновом режиме (включено) и доля пропускной способности на него (50); доля пропускной способности на проверку (50); округление (coercion) размера физического диска (запрещено); параметры постепенного запуска дисков; регулярное тестовое чтение данных и интервал (patrol read, выключено); SMART (IEC, PFA; выключено). 3 метода конфигурации массива (Drive Groups, Packs): автоматическая (один логический диск из всех физических), с помощью проводника, ручная. Состояния физического диска: READY (работоспособен, но незадействован), ONLINE, STANDBY (горячий резерв), OFFLINE (добавлен в массив вместо вышедшего из строя, но ещё не синхронизирован), REBUILD (в процессе восстановления). Состояние дисков хранится в NVRAM. Физические диски объединяются в массив. Из массива можно сделать один или несколько логических дисков. К массиву (не JBOD, RAID 10, 30 или 50) можно добавить новый диск, но на нём придётся сделать новый логический диск. Можно добавить диск горячего резерва для конкретного массива или в общий пул или убрать его из пула. Можно делать логический диск из нескольких массивов (spanning, в массивах должно быть одинаковое число дисков; RAID 10, 50; необходимо озаботиться до создания первого массива; к связанным массивам нельзя добавлять диски). Состояния логического (системного) диска: ONLINE, CRITICAL (отказ одного диска), OFFLINE (отказ 2 дисков). EzAssist позволяет обновить с гибкого диска firmware, BIOS и сам EzAssist (FAT-12, без поддиректорий, имя файла запрашивается, при вводе необходимо указывать "A:\", автораспознавание содержимого), сохранить в файл и восстановить конфигурацию контроллера и массива, очистить конфигурацию и вывести её в файл в читаемом виде. Мониторинг и управление: статус массива и информация о нём (свободное место, физические диски); статус логического диска и информация о нём (уровень RAID, объём, физические диски (можно поморгать лампочками), тип кеширования записи (можно изменить), размер страйпа (можно изменить, данные теряются), размер строки кеша); список ошибок логического диска; запустить фоновую задачу для логического диска: проверка состояния (сравнение данных на зеркале или сравнение контрольных сумм, с исправлением или без), пересчёт контрольных сумм, инициализация логического диска; прервать фоновую задачу; посмотреть состояние фоновых задач. Для физического диска можно посмотреть статус и информацию (изготовитель, модель, версия прошивки, объём, канал и идентификатор, кеширование чтения (можно изменить), кеширование записи (можно изменить)), получить список плохих блоков (первичный и дополнительный), посмотреть и обнулить счётчики ошибок (чётности, исправляемых, фатальных; в моём экземпляре вместо кнопки "Reset" оказалась кнопка "Ok", которая не обнуляет счётчики), поморгать лампочками, запустить фоновую задачу восстановления массива (пересчёт данных и запись их на физический диск, находящийся в состоянии Offline; необходимо прервать, чтобы перезагрузиться - почему тогда задача называется фоновой?), запустить фоновую задачу низкоуровневого форматирования (эту задачу прервать нельзя), перевести диск из Online в Offline, перевести диск из Offline в Online (рекомендуется задуматься о последствиях и отказаться от неразумного желания), посмотреть SCSI настройки: скорость, глубина очереди заданий (можно изменить), ширина шины, сканировать SCSI шину в поисках новых устройств. В реальности никаких фоновых задач нет - задачу необходимо остановить перед перезагрузкой.

Модуль ядра 2.4 и 2.6 DAC960 (описание - README.DAC960; DAC - Disk Array Controller). Поддерживает eXtremeRAID 1100/2000/3000, AcceleRAID 352/170/160, AcceleRAID 250/200/150, DAC960PJ, DAC960PG, DAC960PU, DAC960PD, DAC960PL, DAC960P. Имена дисков выглядят как /dev/rd/c0d0p1 (SCSI подсистема не используется, НМЛ и CD-ROM не поддерживаются), имена дисков не меняются при сбое диска с меньшим номером. Блочное устройство имеет major 48 для первого контроллера (55 для восьмого), minor состоит из 5 старших бит для номера логического диска и 3 младших бит для номера раздела (т.е. не более 7 разделов на логический диск, расширенный раздел тоже надо учитывать). Файл /proc/rd/status содержит краткую информацию о состоянии массива (OK, ALERT). Обновляется каждые 10 секунд. Файл /proc/rd/c0/current_status содержит информацию о физических дисках (канал, идентификатор, изготовитель, модель, серийный номер, интерфейс, состояние, объём), настройках контроллера (тип, версия прошивки, количество каналов, объём кеша, размер очереди команд контроллера и драйвера, наличие SAF-TE) и логических дисков (имя устройства, состояние, объём, размер полоски, длина строки кеша, кеширование чтения, кеширование записи), текущих фоновых заданиях. Обновляется каждые 60 секунд. Изменения состояния записываются в syslog (подсистема kern, сообщения начинаются со строки 'DAC960#'). Также в syslog выдаются сообщения о проблемах с дисками (включая "мягкие" ошибки чтения). При загрузке сообщения об обнаруженных физических и логических дисках и их состоянии записывается в /var/log/dmesg. Файл /proc/rd/c0/initial_status содержит аналогичную информацию на момент загрузки. Файл /proc/rd/c0/user_command позволяет передавать команды контроллеру и считывать результат их выполнения (записывается также в syslog):

fdisk, grub и lilo умеют работать с DAC960. RH9 и Centos 4 ставятся на раздел логического диска, подключённого к контроллеру типа DAC960. Рекомендуется создавать файловую систему ext3fs с параметрами "mke2fs -b 4096 -R stride=16" (при стандартном размеры полоски 64 KB).

Имеется gam сервер под Linux (Global Array Manager, 5.00-17 от 2002-11-15, не пробовал, требуется wine?!). nvram.exe - утилита (DOS 16-bit) для доступа к журналу событий в NVRAM.

Материнская плата Intel D865PERL, Pentium 3000

cache: disable, RAM: 512 MB

              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
t03    1*2000 14435 36.7 13931  6.6 10672  3.7 22210 44.6 42235  6.4  307.0  1.0

cache: disable, RAM: 1 GB

              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
t03    2*2000 13443 34.3 14106  6.7 10606  3.6 23517 47.1 42803  6.4  239.2  1.0

cache: Write-Back, RAM: 1 GB

              ---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU   /sec %CPU
t03    2*2000 18637 48.2 18455  9.3 12742  4.3 22698 45.2 42479  6.3  248.9  1.1

HP Smart Array P400 (SAS/SATA)

HP Smart Array P400 - серия RAID контролеров SAS (3Gbps) и/или SATA (1.5Gbps). P400i - встроенный вариант (процессор - PowerPC 440, память под кеш - ECC DDR2/533 256МБ 40-bit, наращивается до 512МБ 72-bit, PCI-Express x8), P400/256 (на базе SAS 1078, память под кеш - ECC DDR2/533 256МБ 40-bit, PCI-Express x8, имеется 8 индикаторов активности и сбоев). Обещается совместимость между всеми моделями серии Smart Array по формату данных, утилитам конфигурирования и управления. До 8 дисков SAS (3Gb) или SATA (1.5Gb, с NCQ). Диски (корзины) подсоединяются 2 каналами SAS x4 (SFF8484, 1.2GBps на порт), каждый канал поддерживает до 4 устройств (работа не прерывается, если 3 из 4 phy окажутся повреждены), имеется 2 варианта с подключением на лицевой или обратной стороне. Звучок отсутствует.

Стандартная NiMH батарейка (BBWC, Battery-Backed Write Cache, 390936-001, кабель 399034-001) хранит данные 72 часа (по другим данным - 2 суток) при пропадании питания или поломке сервера; менять через 3 года; имеет индикатор, который мигает при сохранении данных из кеша на диск (на самом деле, индикаторов много и они подмигивают азбукой морзе, подробности в документации); начальная зарядка - 4 часа, обычная зарядка - 2 часа. Обязательна для кеширования записи и некоторых операций над массивами (при проблемах с батарейкой кеширование отключается и восстанавливается при их разрешении). При поломке сервера необходимо перенести контроллер с батарейкой и дисками на другой сервер. При поломке контроллера модуль кеша с батарейкой необходимо переставить на новый контроллер того же типа.

Поддерживаемые уровни: RAID-0, RAID-1 (утверждается, что с балансировкой чтения - не заметил), RAID-1+0, RAID-5, RAID-6 (ADG, только при наличии BBWC). Может настраиваться автоматически в зависимости от числа имеющихся дисков на момент включения. Инициализация в фоновом режиме.

Адаптивное упреждающее чтение. Кеширование записи (write-back) при наличии батарейки. Умеет объединять последовательные операции записи до размеров полоски (stripe), что значительно ускоряет запись на RAID-5 и RAID-6. Имеется управление распределением кеша на упреждающее чтение и запись (по умолчанию - 50/50 или 25/75, возможные значения: 0/100, 25/75, 50/50, 75/25, 100/0).

Физические диски одного типа (SAS или SATA) объединяются в массив. От каждого физического диска берётся не более размера самого маленького диска массива. Имя назначается автоматически - A, B и т.д.. Сложная система идентификации физических дисков - канал[I|E]:ящик:слот.

Логический диск (до 32, до 16?) делается из части массива. Нумеруются с единицы. Тип RAID, размер полоски, MaxBoot (для NT4), кеширование чтения и записи настраиваются на уровне логического диска. Один массив может содержать логические диски различного уровня RAID. Размер логического диска может превышать 2ТБ.

Мониторинг количества операций в секунду, среднего времени выполнения операции и загрузки контроллера.

Добавление диска к массиву или замена всех дисков на диски большего размера осуществляется без прерывания работы (данные равномерно перераспределяются по всем дискам, приоритет задаётся, требуется батарейка). Образовавшееся свободное место может быть добавлено к существующему логическому диску или использовано для создания нового логического диска. Также без остановки эксплуатации происходит смена типа RAID и размера полоски. Только одна операция одновременно. Требуется наличие BBWC для нормальной скорости миграции. При закупке дополнительной лицензии возможно изъятие "лишнего" диска из массива. RAID-1 и RAID-1+0 можно разбить на 2 массива (требуется выключение сервера) и слить обратно (данные второго массива будут потеряны) с помощью загрузочного диска с ACU (Split Mirrored Array и Re-Mirror Array).

Загрузить новую прошивку можно не останавливая работы, она будет активирована автоматически при перезагрузке. Запасная копия прошивки в ROM. Более простой способ обновления прошивки - загрузка с Firmware Maintenance CD.

Неограниченное количество локальных и глобальных запасных дисков (нельзя смешивать SAS и SATA). При замене сломанного диска данные переписываются на него, а запасной диск опять становится резервным.

Восстановление массива начинается автоматически при наличии резервного диска или добавлении нового диска (того же типа и достаточной ёмкости) при включённом сервере (ручного запуска нет!). Если при восстановлении будут обнаружены неисправимые ошибки чтения, то восстановление будет прервано (в инструкции рекомендуется сделать резервное копирование, восстановиться обратно, затем повторить попытку реконструкции массива). Если новый диск добавляется при выключенном сервере, то при загрузке требуется нажать F1 для начала восстановления. При невосстановимом разрушении массива можно перезагрузиться и нажать F2 в момент получения сообщения 1779 POST. Массив будет помечен как рабочий, но часть данных на нём будет потеряна.

Фоновое сканирование дисков в поиске плохих блоков.

Диски можно безнаказанно переставлять в другой слот, доступный тому же контроллеру (не получилось). Массив целиком в нормальном состоянии и без задействованных запасных дисков можно переносить на другой контроллер (сообщения 1724 или 1727 при загрузке означают удачу, сообщение 1785 - вернуть немедленно обратно).

Настройка массива при начальной загрузке (ORCA, минимальный набор возможностей) - нажать F8 (или "Esc 8" при использовании последовательного порта, глотаются символы при вводе). Интерфейс в виде меню или командный режим. При работе в командном режиме необычно расположение команды и параметров:

Драйвера и утилиты собраны на диске SmartStart CD.

Драйвер для Linux - cciss (поставляется вместе с RHEL/CentOS и есть своя версия, только для поставочного ядра RHEL, но в пакете есть исходные тексты). В /proc/scsi/scsi попадают только НМЛ и автозагрузчики (?!). Имена устройств: /dev/cciss/c"НомерКонтроллера"d"НомерЛогическогоДиска". Номер устройства: major - 104 для cciss0, minor - состоит из номера логического диска (старший полубайт) и номера раздела на нём (младший полубайт). Информация в /proc/driver/cciss/cciss0:

cciss0: HP Smart Array P400i Controller
Board ID: 0x3235103c
Firmware Version: 5.26
IRQ: 90
Logical drives: 1
Sector size: 2048
Current Q depth: 0
Current # commands on controller: 0
Max Q depth since init: 159
Max # commands on controller since init: 159
Max SG entries since init: 31
Sequential access devices: 0

cciss/c0d0:	 146.77GB	RAID 1(1+0)

Утилита /sbin/cciss_id (часть device-mapper-multipath) выводит WWID логического диска.

В комплекте с "родным" драйвером поставляются утилиты /sbin/cciss_phys_devs (выводит список SCSI-устройств, подключённых к указанному контроллеру) и /sbin/cciss_hotplug (поиск НЛМ).

Утилита hpacucli (HP Array Configuration Utility CLI, пакет hpacucli-8.28-13.0.noarch.rpm) предоставляет командный интерфейс для настройки и мониторинга. В начале указывается объект, затем действие, затем параметры (параметр "forced" заранее подверждает потенциально опасное действие). В качестве объекта можно указать

Действия:

При установке создаётся /opt/compaq. В документации утверждается, что для работы требуется "HP Management Base". Я не заметил такой потребности. Можно вызывать из скрипта: "hpacucli controller slot=0 show status; hpacucli controller slot=0 ld 1 show status". "ctrl all diag file=/tmp/temp" выдаёт почти 3 тысячи строк информации со всей подноготной. Например:

# добавление отдельного диска под видом RAID-0
hpacucli controller slot=0 create type=ld raid=0 drives=allunassigned drivetype=sata

# не использовать кеш контроллера при работе с этим диском
hpacucli controller slot=0 logicaldrive 2 modify arrayaccelerator=disable

# разрешить использование кеширования записи на всех (!) дисках
hpacucli controller slot=0 modify drivewritecache=enable

# удалить логический диск
hpacucli controller slot=0 logicaldrive 2 delete 

# вернуть диск из массива в строй (если не помог rebuild)
hpacucli controller slot=0 logicaldrive 2 modify reenable
blockdev --rereadpt /dev/cciss/c0d1

Утилита cpqacuxe (HP Array Configuration Utility) пристраивает к веб-интерфейсу для настройки и мониторинга (объединённая System Management Homepage, HTTPS, порт 2381) возможность настраивать RAID контроллер (выпрыгивающее окошко). Сервер cpqacuxe запускается как демон. Может использоваться как для настройки локального контроллера (--disable-remote), так и удалённой настройки контроллера (cpqacuxe --enable-remote). После использования можно остановить (-stop). Есть возможность изготовить скрипт из текущей конфигурации (-c имя-файла) и выполнить его (-i имя-файла [-reset]). Декларативный язык создания конфигурации описан в документации. Есть автономный загрузочный диск с cpqacuxe.

Утилита hpadu (HP Array Diagnostic Utility) пристраивает к веб-интерфейсу для настройки и мониторинга (объединённая System Management Homepage, HTTPS, порт 2381) веб-интерфейс для генерации отчётов. Имеется также командный интерфейс (hpaducli -f имя-файла), который не требует SMH (вывод подозрительно похож на "hpacucli diag").

Загрузочный диск для автономной настройки массива - hpacucd.

Простейший способ обновить прошивку - загрузиться с Firmware Maintenance CD (заодно можно обновить прошивку дисков, BIOS и прочее).

Данные SMART (обощённые) для отдельных физических дисков доступны утилитам из комплекта smartmontools. Настройки для smartd (/etc/smartd.conf, один логический диск 0 из двух физических в слотах 0 и 1):

/dev/cciss/c0d0 -d cciss,0 -m root -M daily
/dev/cciss/c0d0 -d cciss,1 -m root -M daily

Вызов smartctl:

smartctl -a -d cciss,НомерДиска /dev/cciss/c0d0

Измерение производительности

HP Proliant DL320 G5p, P400/256, RAID 1+0 из двух SATA дисков 250GB, 7200RPM, кеширование включено

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
s191.cs.niis 11000M           31349   7 16120   2           68845   4 270.9   0

HP Proliant DL365 G5, P400i/512, RAID 1+0 из двух SAS дисков 146.8GB, 10000RPM, кеширование включено

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
             40000M           76154  15 28177   3           72999   5 369.7   0

HP Proliant DL365 G1, RAID 5 из четырёх SAS дисков 146.8GB, 10000RPM, кеширование включено

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
             40000M           80360  54 41559  20           146629  32 176.5   1

LSI Logic MegaRAID 320-1

LSI Logic MegaRAID 320-1 LSI53C1020. Интерфейс: PCI 2.2 66 MHz, 64-bit (можно 32-bit), 3.3V или 5V. Содержит собственный процессор Intel GC80302 (аппаратный XOR, 66 MHz) и память под кеш (64 или 128 MB распаяно на борту, 100 MHz, ECC SDRAM). Поддерживает один канал SCSI Ultra320 (LSI53C1020, внутренний разъём HDCI 68 pin, внешний разъём VHDCI 68 pin, до 255 команд параллельно, scatter/gathers, ), до 15 физических устройств на логический массив (14 при использовании SAF-TE), до 40 логических устройств на контроллер, сам контроллер имеет ID 7, автоматическое терминирование при подключении только одного разъёма. Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50, отдельный диск. Джамперы: использовать ли BIOS, SCSI terminator power, SCSI terminator, очистка EPROM. Индикаторные разъёмы: кеш содержит несохранённые данные, активность SCSI. Поддерживает протокол SAF-TE (интерфейс I2C с процессором SEP стойки) и SMART. Последняя версия прошивки (1 MB) - 1L49 (G500, HTML 3.23, WebBIOS 2.01, U828 от 14 октября 2005), глюк при ручном создании массива (сообщение о размере массива более 2 ТБ и отказ). Отличия 1L47-3 (BIOS G121) относительно 1L37 (BIOS G119): прерывание перестроения под большой нагрузкой, проблема загрузки с CD-ROM, ^M/^H работает не всегда, зависание при включённом Read-Ahead и плохом блоке; убрано низкоуровневое форматирование:

Для включения кеширования записи необходимо докупить батарейку LSIBBU01 (NiMH, 600 mAH, может работать при температуре от 10 до 40 градусов; быстрая зарядка - 6 часов - не срабатывает на одном устройстве (из-за температуры выше 40?); менять ежегодно (?!) или через 1000 циклов зарядки - счётчик доступен в megamgr). Держит содержимое кеша 48 (53?) часов (свежая полностью заряженная батарейка, обещание изготовителя), при восстановлении питания записывает содержимое кеша записи на диск, имеется интерфейс для подключения индикатора наличия незаписанных данных в кеше. Без неё кеширование записи (write back) включать не рекомендуется. Не помогает при пропадании питания при включённом кешировании на самих дисках.

Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине). Возможность задержки раскручивания дисков (интервал между парами дисков). Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk, hot spare). Если запасной диск имеет больший размер, то свободное место использовать не получится. И вообще, выделить логический диск из куска свободного места не удастся. Как удалить диск из массива? Только через WebBIOS? Запасной диск можно добавить позднее (только общий пул). При вставке нового диска в корзину он автоматически становится запасным. При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail" и восстановлению не подлежит. При сбое одного диска (состояние массива "Degradated") необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву. Возможно автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки, необходимо указать при создании FlexRAID PowerFail в BIOS (странно, что отсчёт остатка всегда начинается с нуля). При вставке обратно временно изъятого диска перестроение происходит быстрее. Указание доли пропускной способности, расходуемой на восстановление. При 30% и запрете кеширования записи восстановление диска 400 GB занимает больше суток, более 50% может не понравиться ОС. Та же доля используется при проверке массива (создание массива RAID-5 есть непрерываемый режим проверки). При нахождении различия данные считаются правильными, а контрольная сумма перевычисляется, если при чтении произошла ошибка ввода, то данные перевычисляются из контрольной суммы, а блок переназначается на резервную дорожку. Рекомендуется периодически делать проверку массива, т.к. если "плохой" блок "проявится" при восстановлении, то данные будут потеряны.

Имеет собственный звучок (включается при переходе одного из массивов в состояние Fail или Error; отключается программно или в BIOS для текущего события или навсегда; равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск).

Настройка во время загрузки BIOS - ^M, графический режим настройки - ^H (дополнительные функции - отключение BIOS, требуется при загрузке не с массива; округление размера дисков вниз (coercion) - требуется для последующей беспроблемной замены диска; отключение восстановления данных при проверке; остановка при ошибке в конфигурации; выбор конфигурации при расхождении между версиями в NVRAM и на диске; задержка раскрутки; отключение автовосстановления). Можно сконфигурировать до 40 логических дисков на контроллер, до 32 физических дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять только в порядке обратном порядку создания (megarc под Linux обещает возможность удаления произвольного логического диска). Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50), может состоять только из части массива или частей массива (даже несмежных), но на реконфигурацию такого логического диска накладывается множество ограничений. Массив конструируется из физических дисков. Логический диск после создания должен быть проинициализирован (заполняется нулями). BIOS позволяет объединять/заменять физические диски слегка различающегося размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале. Все настроечные данные хранятся на диске (COD) и в NVRAM 32 KB (настройка контроллера BIOS Config Auto Selection позволяет выбирать при их несовпадении). Это позволяет перемещать (roaming) диск внутри контроллера (необходимо отключение питания). Чтобы переместить (migration) массив целиком на новый контроллер (того же типа), необходимо очистить конфигурацию нового контролера, диски необходимо подключать в те же самые позиции, что и на сгоревшем контроллере. Если в кеше записи остались данные, а батарейный модуль не типа TBBU, то они при смене контроллера будут потеряны. Реконфигурацию массива (добавление диска, смена типа RAID) нельзя прерывать и перезагружаться (что происходит с данными не уточняется ;).

Политика ввода/вывода: с использованием кеша, прямой доступ. Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование. Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш), write through (контроллер рапортует о завершении записи после передачи на диск). Кеширование записи можно включать только при наличии батарейки (см. выше). Кеширование записи дисков необходимо выключить.

Экспериментальным путём выяснено, что распараллеливания чтения в режиме RAID-1 не производится.

Заявлена поддержка RHL 7.3 и 8.0, RHEL3 и RHEL4. Работает в CentOS 4.4 (модули megaraid_mbox и megaraid_mm, состояние /proc/megaraid) и CentOS 5.0 (модули megaraid_mbox и megaraid_mm). Управление megarc и megamgr. Совместим с safte-monitor.

megaraid cmm: 2.20.2.6 (Release Date: Mon Mar 7 00:01:03 EST 2005)
megaraid: 2.20.4.6-rh2 (Release Date: Wed Jun 28 12:27:22 EST 2006)
megaraid: probe new device 0x1000:0x1960:0x1000:0x0520: bus 4:slot 0:func 0
megaraid: fw version:[1L37] bios version:[G119]
scsi4 : LSI Logic MegaRAID driver
scsi[4]: scanning scsi channel 0 [Phy 0] for non-raid devices
  Vendor: ESG-SHV   Model: SCA HSBP M27      Rev: 1.14
  Type:   Processor                          ANSI SCSI revision: 02
scsi[4]: scanning scsi channel 1 [virtual] for logical drives
  Vendor: MegaRAID  Model: LD0 RAID5 79512R  Rev: 1L37
  Type:   Direct-Access                      ANSI SCSI revision: 02
SCSI device sda: 572440576 512-byte hdwr sectors (293090 MB)
sda: asking for cache data failed
sda: assuming drive cache: write through
 sda: sda1 sda2
Attached scsi disk sda at scsi4, channel 1, id 0, lun 0
Attached scsi generic sg0 at scsi4, channel 0, id 6, lun 0,  type 3
Attached scsi generic sg1 at scsi4, channel 1, id 0, lun 0,  type 0

SE7230NH1 (E7230), Pentium D 2800 MHz, RAM: 1 GB, PCI32/33
5 Seagete CHEETAH ST373207LC (10000 rpm, Ultra320)

RAID-5 5x73G  Write Thru, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              3000M  8234  19  7853   3  6505   1 27060  55 42828   4 541.8   1

при плотном потоке записи компьютер "подвисает"

RAID-5 5x73G  Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              3000M 40353  93 51799  22 22260   5 34104  69 43591   4 604.1   1

RAID-5 5x73G  Write Thru, Adaptive Read Ahead, Cached I/O, hd cache - on
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              3000M 11459  26 10705   4  9500   2 33896  69 42680   4 559.3   1

RAID-5 5x73G  Write Back, Adaptive Read Ahead, Cached I/O, hd cache - on
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              3000M 40742  95 56377  23 19886   5 33768  68 43685   4 591.8   1

SE7230NH1 (E7230), Pentium D 2800 MHz, RAM: 2 GB, PCI32/33
5 Seagete CHEETAH ST373207LC (10000 rpm, Ultra320)

RAID-0 5x73G  Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              5000M 40531  94 68731  28 25717   6 40108  81 52590   5 634.6   1

Intel 5000P/Intel 3100/PXH, Intel Xeon 5110 (C2D, 1.6 GHz), RAM: 2 GB, PCI-X
Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
Seagete CHEETAH ST3146707LC (10000 rpm, Ultra320)

RAID-1

bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
infra         8000M 34283  91 46545  17 15769   4 38066  93 67274   6 338.1   0

LVM stripe поверх двух RAID-1

bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
infra         8000M 32752  89 53432  20 21082   5 38389  93 59056   7 432.2   1

Автономный дисковый массив Sun StorEdge 3310 (SCSI)

Фирма Sun Microsistems (в девичестве Dot Hill Systems) выпускала семейство автономных дисковых массивов Sun StorEdge 3000 (Sun StorageTek), монтируемых в стойку и подключаемых к серверам с помощью интерфейса SCSI или Fibre-Channel. Например, модель Sun StorEdge3310 SCSI Array представляет собой

Изменения в версии прошивки 4:

Для обновления с версии 3 до версии 4 (версия 4.21E, 113722-17.zip) необходимо использовать специальную инструкцию (58 страниц) и скрипт s3kdlres

Настройка извещений SNMP и e-mail производится путём засылки файла agent.ini через FTP (режим binary) в /cfg, после чего необходимо сбросить контроллер (уровни: 1 - все сообщения, 2 - предупреждения, 3 - аварийные сообщения):

[SNMP_TRAP]
ENABLED=1
SEVERITY=1
COMMUNITY=имя-сообщества
RECEIVER1=IP-адрес
[EMAIL]
ENABLED=1
SEVERITY=1
SUBJECT=тема письма
SENDER_MAIL_BOX=обратный адрес
SMTP_SERVER=IP-адрес
RECEIVER1=адрес получателя

Автономный дисковый массив HP StorageWorks MSA 2012i (iSCSI)

Фирма HP выпускает MSA2000 - младшее семейство автономных дисковых массивов, монтируемых в стойку и подключаемых к серверам с помощью интерфейса iSCSI или Fibre-Channel (в девичестве Dot Hill). Например, модель MSA 2012i (Dot Hill 2330) представляет собой

Обещания по производительности (использовалась MSA2012i с 2 контроллерами и 48 SAS дисками (15K RPM, 300GB, по 12 штук на виртуальный диск)

RAID 10

Random Reads IOPs 8,200
Random Writes IOPs 4,500
Sequential Reads MB 300
Sequential Writes MBs 260

RAID 5

Random Reads IOPs 7,800
Random Writes IOPs 1,600
Sequential Reads MBs 300
Sequential Writes MBs 270

RAID 6

Random Reads IOPs 7,800
Random Writes IOPs 1,200
Sequential Reads MBs 300
Sequential Writes MBs 270

Равномерное распределение виртуальных дисков по контроллерам настолько агрессивно, что распределяет вновь созданный виртуальный диск на несуществующий контроллер. При смене привязки сбрасываются все отображения LUN (а потом тихонько возвращаются?).

Тестирование скорости (dd ibs=256k of=/dev/null; dd obs=256k if=/dev/zero; в МБ/сек), скорость ограничивается скоростью интерфейса и особенностями работы и настройками стека TCP и multipath round-robin в частности, скорость чтения через 2 порта значительно меньше суммы скоростей, а параметры необходимо подбирать исходя из характера загрузки):

Для справки: netperf в пределах сети - 941.07*10^6 Mbps, 10160.36 Tps

None-RAID 1 диск SATA-2 750GB

чтение через 1 порт  - 65369.60
запись через 1 порт  - 56459.20
чтение через 2 порта - 31961.60 и 32256.00
запись через 2 порта - 28173.60 и 28238.40

RAID-5 из 11 дисков SATA-2 750GB
чтение через 1 порт  - 68023.22
чтение через 2 порта - 60736.00 и 60608.00

2 MSA по RAID-5 из 11 дисков SATA-2 750GB
одновременное чтение через порты в одной сети   - 33775.11 и 31785.71
одновременное чтение через порты в разных сетях - 64742.77 и 64397.00

RAID-6 из 12 дисков SATA-2 750GB, multipath через порты в разных сетях

bonnie++
        ------Sequential Output------ --Sequential Input- --Random-
        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
 33000M           55690  11 30400   7           67892   6 321.4   0 # память 16GB
 65000M          105654  26 20665   3           60103   6 420.3   4 # ext4 через полгода bacula в 2 потока, память 32 GB
 65000M           98104  23 17668   3           50772   4 474.3   1 # --//--, суперпоследовательная оптимизация кеша
 65000M           30368   6 13508   1           65082   3 415.0   0 # после 2 лет работы bacula на ext3/4 в 8 потоков 
                                                                      (некоторое время был заполнен на 97%) 
130000M           90122  22 23518   4           72975   5 391.2   1 # --//--

суперпоследовательная оптимизация кеша, jumbo=on
pvcreate -M2 --dataalignment 640
vgcreate
lvcreate --extents 100%FREE
mkfs.xfs -f -L bacula -d su=64k,sw=10 -i attr=2,maxpct=5 -l su=64k,lazy-count=1

xfs_check # потребовал 15GB (2GB по-настоящему) и 10 секунд для 7.5TB
xfs_db -c frag -r # 6.5% после заполнения 50ГБ в 2 потока
xfs_fsr -v [-t 600] /dev/backup/bacula

        ------Sequential Output------ --Sequential Input- --Random-
        -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
 65000M           96573  18 30252   3           73352   4 304.9   0 # allocsize=512m, кеш чтения - Default
 65000M           98545  18 43868   4           90004   5 264.3   0 # кеш чтения - максимум
 65000M           92294  16 44052   4           86076   4 263.3   0 # кеш чтения - максимум, biosize=64k,logbufs=8,allocsize=512m

Однако:
  пересылка по сети и раз-tar-ивание (3 потока параллельно) - 115 MB/s (видимо, ограничивается сетью)
  дефрагментатор xfs - 50 MB/s
  "tar -cvf - | dd bs=1024k of=/dev/null" - 100 MB/s

Автономный дисковый массив HP StorageWorks MSA 2012fc G2 (FC)

Фирма HP выпускает MSA2000 - младшее семейство автономных дисковых массивов, монтируемых в стойку и подключаемых к серверам с помощью интерфейса iSCSI или Fibre-Channel (в девичестве Dot Hill). Например, модель MSA 2012fc G2 (контроллер MSA 2312fc G2, Dot Hill 5730) представляет собой

Тестирование скорости с помощью bonnie++

RAID-0 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
Chunk Size : 64KB, оптимизация упреждающего чтения автоматическая, по умолчанию

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
  2           70000M           102553  12  55371   5           184087   6 430.3   0
  3           70000M           131077  15  75538   7           292132  13 532.7   0
  4           70000M           149183  17  79300   8           258126  14 574.8   0
  5           70000M           194501  23  98743  10           346520  17 634.5   0
  6           70000M           214002  25 107817  12           379969  19 649.4   0
  8           70000M           242218  29 116467  13           373382  21 699.8   1
 12           70000M           265360  31 125728  15           341852  19 731.8   1

RAID-10 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm

  4           70000M           100837  12  56266   6           184465  10 602.6   0
  8           70000M           178517  21  92754  10           349848  20 735.3   1
 12           70000M           212653  25 106621  12           366181  21 747.9   1

RAID-50 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm

2 группы по 6 70000M           174710  21  96354  11           373342  22 728.7   0
3 группы по 4 70000M           186787  22 100600  11           384155  21 735.0   1 stride=48
4 группы по 3 70000M           167989  20  91020  11           377848  22 723.0   1

программный RAID-0 из аппаратных RAID-5 на 12 дисках
pvcreate --metadatasize 250k /dev/sdX
vgcreate test /dev/sdX ...
lvcreate --name test --size 1000G --stripes N --stripesize 256 test
mke2fs -j -v -m 0 -L raid5lvm -F -E stride=64,resize=4026531840 /dev/test/test

2 RAID-5 по 6 70000M           206390  25 111458  10           374298  13 736.2   1
3 RAID-5 по 4 70000M           227099  28 117402  11           383920  15 731.2   1 --stripesize 256, stride=64
3 RAID-5 по 4 70000M           227976  28 114904  11           337288  13 688.2   1 --stripesize 128, stride=32
3 RAID-5 по 4 70000M           229970  28 123886  13           390505  19 713.7   1 --stripesize 512, stride=128

RAID-6  из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm

  4           70000M            36873   4 17997   1            53444   2 349.5   0 в процессе инициализации
  4           70000M            63670   7 38334   4           174501   9 403.4   0
  5           70000M            39123   4 21356   2            70664   3 315.9   0 в процессе инициализации
  5           70000M            79752   9 50187   5           272188  14 469.0   0
  6           70000M            41005   4 31172   3           119483   6 348.9   0 в процессе инициализации
  6           70000M            96113  11 69414   7           309956  17 419.9   0 в процессе инициализации других массивов
  7           70000M            94743  11 60511   6           319309  17 464.7   0
  8           70000M           102035  12 64456   7           358320  21 560.5   1
 10           70000M           108381  13 68288   8           358073  21 639.1   0
 11           70000M           111613  13 75990   9           358021  20 678.0   0
 12           70000M           105093  12 65210   7           358328  21 667.4   0
 12           70000M            32013   3 18330   2           108484   6 257.2   0 stride=192, в процессе инициализации
 12           70000M           104753  12 66509   7           353305  19 623.6   0 stride=192
 12           70000M            60431   7 42133   5           348516  19 548.5   0 write-through
 12           70000M           105530  12 66456   7           345446  17 587.3   0 Super Seq
 12           70000M           105564  12 59943   7           252558  14 742.5   0 disable read ahead
 12           70000M           103455  12 54955   6           147436   8 490.4   0 verify vdisk
 12           70000M           102950  12 55329   6           165259   9 476.8   0 Media Scrub 
 12           70000M            92934  11 60056   6           324321  18 631.1   1 без одного диска
 12           70000M            69466   8 29889   3            66511   3 434.5   0 без двух дисков
 12           70000M            30106   3  8400   0            15417   0 319.0   0 во время восстановления 2 дисков

RAID-5  из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm

  3           70000M            42334   5 21988   2            74152   3 297.3   0 в процессе инициализации
  3           70000M            74033   8 44589   4           184143  10 423.4   0 в процессе инициализации других массивов
  3           70000M            74337   8 44193   4           185166  10 429.6   0
  4           70000M            84052  10 52809   5           252145  14 432.7   0 в процессе инициализации других массивов
  5           70000M           106571  12 64520   7           315761  16 513.9   0
  6           70000M            37603   4 29330   3           112317   6 500.6   0 в процессе инициализации
  6           70000M           113185  13 66457   7           335388  18 479.1   0 в процессе инициализации других массивов
 10           70000M           133464  21 79293  12           355243  25 600.8   3
 11           70000M           140085  16 81787   9           379964  22 711.3   1
 12           70000M           141929  18 83381  10           376638  22 716.9   1

Single Point of Connectivity Knowledge (SPOCK)

Автономный дисковый массив HP StorageWorks MSA P2000 G3 (FC)

Фирма HP выпускает MSA2000 - младшее семейство автономных дисковых массивов, монтируемых в стойку и подключаемых к серверам с помощью интерфейса iSCSI, SAS или Fibre-Channel. Например, модель MSA P2000 G3 (контроллер HP P2000 G3 8G FC Array Controller) представляет собой (есть также модели контроллеров с подключением к хосту с использованием интерфейсов: GbE iSCSI (4 порта), 10GbE iSCSI (2 порта), комбинированный на 2 порта 8G FC и 2 порта GbE iSCSI, 6Gb SAS-2 (4 порта))

Тестирование скорости с помощью bonnie++ (сервер - 2 Xeon X5570 @ 2.93GHz, 32GB, HBA QLE2460 4Gb, нагружен средне, CentOS 5.4)

RAID-5  из 12 дисков 2TB SATA-2 7200rpm (ST32000644NS и Hitachi HUA72202)

mkfs.xfs -L raid5big -d sunit=128,swidth=1408 -i attr=2 -l sunit=128,lazy-count=1 /dev/sdc

Version  1.03             Sequential Output         Sequential Input    Random 
                     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
s87.cs.niis 100000M           445521  38 96895   8           218010  10 271.7   1
s87.cs.niis 200000M           246986  47 60964  13           221932  30 209.6   2
   на пристежной полке во время восстановления 2 дисков на основной

...................

RAID-6  из 12 дисков 2TB SATA-2 7200rpm (ST32000644NS)

mkfs.xfs -L raid6big -d sunit=128,swidth=1280 -i attr=2 -l sunit=128,lazy-count=1 /dev/sdc

Version  1.03             Sequential Output         Sequential Input    Random 
                     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
s87.cs.niis 200000M           403834  35  94620   7           273076  13 235.0   0
s87.cs.niis 200000M           410771  56  75923  10           282271  22 225.3   1 LVM (в фоне счётные задачи)
s87.cs.niis 200000M           410386  56  74963  10           292353  23 222.9   1 выровненный LVM (в фоне счётные задачи)
s87.cs.niis 200000M           229486  22  52521   5           301293  18 215.3   1 одновременно с пристяжной
s87.cs.niis 200000M           392023  41  65142   7           296032  20 209.5   1 на пристяжной полке
s87.cs.niis 200000M           186969  17  79849   8           258048  18 199.6   1 на пристяжной одновременно с основной
s87.cs.niis 200000M           404755  36  47188   3           121812   5 214.7   0 во время verify vdisk
s87.cs.niis 200000M           405970  35 100979   8           270521  12 200.7   0 без одного диска
s87.cs.niis 200000M           408703  35  60981   4           188220   9 193.5   0 во время восстановления 1 диска 
s87.cs.niis 200000M           415483  41  65207   7           111853   6 178.3   0 без двух дисков
s87.cs.niis 200000M           315359  28  17613   1            22529   1 135.6   0 во время восстановления 2 дисков 
s87.cs.niis 200000M            45914   4  20441   2            68359   4 191.4   1 во время расширения
s87.cs.niis 200000M           425988  36 107832  10           272421  17 254.8   0 из 16 дисков

................

RAID-50 (2 группы по 4 диска)

mkfs.xfs -L raid50 -d sunit=128,swidth=768 -i attr=2 -l sunit=128,lazy-count=1 /dev/sdd

s87.cs.niis 200000M           202880  20 76383   9           349293  23 210.2   1 во время расширения другого массива

................

RAID-50 (2 группы по 12 дисков)

s87.cs.niis 200000M           59542   4 49486   4           254665  15 333.9   0 том на часть пространства
s87.cs.niis 200000M           29588   2 23242   2           150873   9 329.7   0 одновременно 2 тома

...........................

2 RAID-6 из 12 дисков, объединённые в LVM (stripe)

pvcreate --metadatasize 250k /dev/sdc
pvcreate --metadatasize 250k /dev/sdd
vgcreate test /dev/sdc /dev/sdd
lvcreate --name test --extents 9529026 --stripes 2 --stripesize 64 test

mkfs.xfs -L raid6x2 -d sunit=128,swidth=256 -i attr=2 -l sunit=128,lazy-count=1 /dev/test/test

s87.cs.niis 200000M           338832  40 111083  13           298993  23 219.5   1

mkfs.xfs -L raid6x2 -d sunit=128,swidth=2560 -i attr=2 -l sunit=128,lazy-count=1 /dev/test/test

s87.cs.niis 200000M           409243  52 117945  11           297577  17 222.6   1

......................

кусочки от 3 RAID-6 из 8 дисков по 2ТБ, объединённые в LVM (stripe)

pvcreate -M2 --dataalignment 393216 ... # ошибочка вышла
lvcreate --extents 100%FREE --stripes 3 --stripesize 64

mkfs.xfs -f -L raid603x8 -d sunit=128,swidth=2304 -i attr=2 -l sunit=128,lazy-count=1

s87.cs.niisi 65000M           469612  50 114022  10           227135  11 404.5   1

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=96,resize=4294967295

mount -o stripe={96|16}[,nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,\
    delalloc[,commit=60,max_batch_time=30000,min_batch_time=1000]]

s87.cs.niisi 65000M  450800  73 68420   8  198869  13 572.5   3 # запись давит чтение

mount -o nodiratime,data=journal,stripe=96,delalloc /dev/shareh/shareh /mnt

s87.cs.niisi 65000M  150459  28 105857  17  308509  18 606.5   3 # чтение быстрее, чем с блочного устройства

...............................................
кусочки от 3 RAID-6 из 8 дисков по 2ТБ, объединённые в LVM (stripe), jumbo

pvcreate -M2 --dataalignment 384
vgcreate /dev/sdc
lvcreate --extents 100%FREE --stripes 3 --stripesize 4096

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=1024,resize=4294967295

mount -o nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=1024,\
    delalloc,commit=60,max_batch_time=30000,min_batch_time=1000

s87.cs.niisi 65000M           473415  69 180215  21           316363  19 574.2   3
s87.cs.niis 200000M           423135  65 213959  26           364651  22 416.9   3
s87.cs.niis 200000M           298759  39 100980   8           243675  10 272.8   1 \ доступ к 2 массивам
s88.cs.niis 200000M           303136  41 101154   8           240795  10 298.3   1 / с двух серверов

mkfs.xfs -f -L raid603x8 -d sunit=128,swidth=2304 -i attr=2 -l sunit=128,lazy-count=1

s87.cs.niisi 65000M           477041  52 270923  28           302693  17 345.7   1
s87.cs.niis 200000M           423966  52 282959  31           336305  20 291.6   2

mkfs.xfs -L имя -d su=64k,sw=6,unwritten=0 -i attr=2 -l su=64k,lazy-count=1 
# 32 группы
mount -o nodiratime,attr2,logbufs=8,logbsize=65536

s87.cs.niisi 65000M           448391  54 281009  30           296841  18 358.7   2
s87.cs.niis 200000M           416060  53 286569  31           332648  19 276.2   2
s87.cs.niis 200000M           228723  30 140457  15           254638  17 255.1   1 \ доступ к 2 массивам
s88.cs.niis 200000M           229845  27 141177  12           256869  13 207.3   1 / с двух серверов
...................................................................................
кусочки от 2 RAID-6 из 8 дисков по 2ТБ, объединённые в LVM (stripe), 

lvcreate  --stripes 2 --stripesize 4096

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=96,resize=4294967295
(метаданные пишутся только на первый том)
mount -o nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=96,\
   delalloc,commit=60,max_batch_time=30000,min_batch_time=1000

s87.cs.niisi 65000M           495005  61 164577  14           358421  14 653.3   1

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=1024,resize=4294967295
(метаданные пишутся только на первый том)
mount -o nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=1024,\
   delalloc,commit=60,max_batch_time=30000,min_batch_time=1000

s87.cs.niisi 65000M           443255  59 162881  14           368351  15 734.7   1

.....

добавить потом третий: lvresize -l +100%FREE --alloc anywhere -i 1 /dev/shareh/shareh /dev/sde

s87.cs.niisi 60000M           409946  49 119859  12           165101   7 613.9   1

.....

lvcreate --name shareh -l 2384184 --stripes 2 --stripesize 512
mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=128,resize=4294967295
метаданные пишутся на оба тома

mount -o nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=128,\
   delalloc,commit=60,max_batch_time=30000,min_batch_time=1000

s87.cs.niisi 65000M           494875  67 82333   8           272691  16 800.7   3

.....

lvcreate --name shareh -l 2384184 --stripes 2 --stripesize 1024
mkfs.ext4 -t ext4 -v -j -m 0 -L shareh3 -N 50000000 -b 4096 -E stride=16,stripe-width=256,resize=4294967295
на первый том пришется вдвое больше метаданных

s87.cs.niisi 65000M           495058  63 101828   8           312680  12 814.4   1

Удаление 9.2 ТБ (12.2 миллионов файлов) в один поток: ext4 на RAID-6 из 12 дисков по 2ТБ - 69 минут.

Восстановление большого объёма данных в один поток (ext4 на 3 с большим stripe, 2.6TB, 850 тысяч файлов) - 161 MB/s.

Восстановление большого объёма данных (2 сервера хранения bacula по 2 потока, ферма загружена расчётами, HBA 4Gb, 6.9TB, 9.1 миллиона файлов):

Размножение каталога размером 40ГБ (60000 файлов) в 10 раз:

Сбор архива (find|cpio|dd в /dev/null, 400GB, 600000 файлов):

Опять столкнулся с проблемой "перенасыщения" канала записи: если долгое время (полчаса) записывать со скоростью, превосходящей возможности устройства, то оно устраивает итальянскую забастовку - начинает работать очень медленно (пробовал ext4 и xfs). Методы борьбы:

Ощущения:

Single Point of Connectivity Knowledge (SPOCK)

Автономный дисковый массив Xyratex RS-1220-F4-5412E-DL-2 (FC)

Фирма Xyratex является OEM изготовителем автономных дисковых массивов для крупных фирм (например, DotHill кое-что покупал у них и перепродавал Sun Microsystems), но и под своим именем продаёт кое-что (документация). В частности, массив RS-1220-F4-5412E-DL-2 представляет собой

Тестирование производительности с помощью bonnie++

RAID-0 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, пленных не брать

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
 2           70000M           154034  18 52089   5           105465   5 339.8   0
 3           70000M           199079  23 66847   8           134836   7 412.3   0
 4           70000M           198228  23 72659   9           152535   8 453.1   0
 8           70000M           355126  43 97116  12           173164   9 555.8   0
12           70000M           366382  45 97940  12           171738   9 588.7   0

RAID-10 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64

 4           70000M           130748  15 45017   4           92608   5 379.6   0
 8           70000M           189578  23 65095   7           139989   8 500.4   0
10           70000M           194612  22 70603   8           145007   8 552.0   0
10           70000M           194612  22 70603   8           145007   8 552.0   0 stride=32
10           70000M           194612  22 70311   8           146595   8 508.6   0 stride=64
10           70000M           202690  24 69621   8           144356   7 511.4   0 stride=64, отключение sync
10           70000M           194545  23 67260   8           138141   7 454.8   0 stride=64, оптимизация записи High
10           70000M           172109  20 44177   4           105450   4 540.8   1 read ahead - 256KB, write cache - 16MB
                                                                                  blockdev --setra 512
RAID-50 из 12 дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64

2 по 6       97000M           187672  22 68720   6           135397   5 608.6   0
3 по 4       97000M           194267  23 71579   7           135391   5 607.7   0
4 по 3       97000M           145088  17 65661   6           127827   4 618.8   0

программный RAID-0 из аппаратных RAID-5 на 12 дисках
pvcreate --metadatasize 250k /dev/sdX
vgcreate test /dev/sda ...
lvcreate --name test --size 1000G --stripes N --stripesize 256 test
mke2fs -j -v -m 0 -L raid5lvm -F -E stride=64,resize=4026531840 /dev/test/test

2 RAID-5 по 6 97000M           199205  25 88243   7           225708   7 638.3   0
3 RAID-5 по 4 97000M           208597  25 97573   8           240688   8 641.6   0
4 RAID-5 по 3 97000M           187081  23 89140   7           236289   7 626.5   0

RAID-6  из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
 4           70000M           48907   5 27848   3           114471   6 345.0   0
 4           70000M           25808   3 12185   1           30171   1 211.2   0 в процессе расширения массива
 5           70000M           78305   9 39589   4           112156   6 396.4   0
 6           70000M           86364  10 42772   4           126988   6 430.0   0
 8           70000M           113673  13 51845   6           156686   8 474.7   0
 9           70000M           128714  15 57132   7           147807   8 514.5   0
10           70000M           128102  15 57878   7           140892   7 556.0   0
11           70000M           143667  16 62470   7           152459   8 551.7   0
12           70000M           147563  17 64106   7           154492   8 565.8   0
12           70000M           143845  17 64253   8           153855   8 547.4   0 write cache - 256MB
12           70000M           147071  17 44473   4           133638   5 568.7   0 read ahead - 256KB, blockdev --setra 512
                                                                                  write cache - 256MB
12           70000M           122178  14 56704   6           195442  11 564.4   0 Chunk Size : 64KB, stride=16
12           70000M           141995  16 59529   7           177273   9 566.3   0 Chunk Size : 128KB, stride=32
12           70000M            56035   6 37342   4           138382   7 467.0   0 Chunk Size : 128KB, stride=32, вынул диск
12           70000M            32879   4 17748   1            52531   2 198.6   0 Chunk Size : 128KB, stride=32, rebuild 90%
12           70000M            29835   3 16093   1            36037   2 217.2   0 Chunk Size : 128KB, stride=32, 2 rebuild 90%

RAID-5  из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков   Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
 3           70000M           56985   6 31489   3           108444   6 340.9   0
 4           70000M           82293   9 41021   4           141218   7 399.7   0
 5           70000M           90372  10 44551   5           152603   8 441.8   0
 6           70000M           106993  12 52880   6           156807   8 462.7   0
 8           70000M           127602  14 57122   6           162605   8 507.1   0
 9           70000M           128950  15 59892   7           145479   8 495.7   0
10           70000M           145503  18 62516   7           154679   8 565.7   0
11           70000M           151682  17 66264   8           158711   8 444.5   0
11           70000M           122347  14 57301   7           191635  10 578.2   0 Chunk Size : 64KB, stride=16
11           70000M           123191  14 59004   5           238416   8 582.3   0 Chunk Size : 64KB, stride=16
                                                                                  blockdev --setra 1024

Автономный дисковый массив Axus Yotta YB-16SAEF4PR4 (FC)

Фирма Axus выпускает семейство автономных дисковых массивов, монтируемых в стойку и подключаемых к серверу с помощью интерфейса SCSI SPI или Fibre-Channel. Например, модель Yotta YB-16SAEF4PR4 представляет собой

Интерфейсы управления и настройки: панель управления с 2 строками текста и 4 кнопками, терминал (RS-232, VT100, текстовое меню), telnet (текстовое меню, VT100, 80x24), WWW, SNMP (только чтение). Только один сеанс управления доступен в каждый момент времени. Меню панели управления, терминала, telnet похожи.

Нет возможности аккуратного выключения - ни кнопки, ни через меню, ни через telnet/HTTP.

Нет возможности завершить сеанс HTTP или telnet. Более того, если сеанс прервать, то любой человек может зайти с любого IP адреса в нечении некоторого времени без аутентификации.

Аутентификация только открытым текстом - telnet и HTTP/Basic.

Восстановление массивов идёт по очереди - сначала один диск, потом второй (восстановление одного диска 750G занимает 15 часов).

Как сбросить забытый пароль? Написать в службу поддержки, получить программу vm (под DOS) и файл с начальными параметрами conf.ini, подключиться к терминальному входу и запустить её (все параметры, включая пароль, будут сброшены).

При выдёргивании кабеля Ethernet теряется адрес, полученный по DHCP, при дальнейшем появлении Ethernet, устройство начинает требовать себе адрес 0.0.0.0, в чём сервер DHCP ему отказывает, и переключается на IP адрес из локальных настроек. В результате, требуется выключение питания.

Тестирование производительности на потоковой операции (bonnie++, всё возможное кеширование включено):

RAID-0 of N ST3750330NS
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
               Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
3             6000M           173555  50 89097  20           259319  20 363.5   0
4             6000M           220602  64 101328 22           293002  23 393.9   0
5             6000M           270277  76 105348 23           306952  24 416.6   0
6             6000M           278196  79 117769 26           313490  24 430.3   0
7             6000M           275877  79 126692 28           316171  25 437.1   1
8             6000M           277159  78 119052 27           317854  26 450.3   0

RAID-1 of N ST3750330NS
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N              Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
2             6000M 39321  70 68552  20 34338   7 58647  93 103914   8 348.6   0
3             6000M           92042  27 55674  12           142539  11 359.9   0
4             6000M          138135  40 67912  15           190412  15 404.6   0

RAID-10 of 4 ST3750330NS
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N              Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
4             6000M           106097  29 70521  16           183222  14 405.5   0

RAID-5 of N ST3750330NS
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N              Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
3             6000M 42525  76 72995  21 45319  10 58902  91 206924  16 344.9   0
4             6000M           82129  23 57135  13           237482  19 389.6   0
5             6000M           89913  26 62805  14           258380  20 412.7   0
6             6000M          102240  30 70719  16           277214  22 429.8   0
7             6000M          110708  32 71952  16           280487  21 437.5   1
8             6000M          107539  32 73482  16           280100  22 439.5   1
9             6000M          132069  39 80662  18           283864  22 459.0   1
15            6000M          172463  46 105782 21           248563  19 585.0   1

RAID-6 of N ST3750330NS
Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N              Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
4             6000M           70336  20 49095  11           154773  12 390.2   0
5             6000M           84675  25 57985  13           235946  18 403.7   0
6             6000M           88725  26 64081  14           256832  20 418.6   0
7             6000M          105024  30 70119  16           276273  21 438.2   1
8             6000M          109307  31 69979  16           259965  20 471.4   0
9             6000M          110556  32 75198  17           283948  22 480.5   0
10            6000M          130276  37 82174  18           284371  22 478.2   1
11            6000M          140261  40 80693  18           276098  21 494.2   0
12            6000M          135555  39 82743  19           308627  24 508.5   1
13            6000M          168146  49 93225  21           277336  21 513.9   1
14            6000M          170925  49 91337  21           283634  22 520.8   1
15            6000M 53128 94 170712  46 99981  20 59003  91 353813  29 537.1   1
16            6000M          144650  42 87374  20           296136  23 532.1   1
16           60000M          127740  37 89675  21           372879  30 231.9   0

Программный RAID в ядре 2.4 (raidtools)

RAID массив создаётся из разделов, а не из дисков. При создании разделов необходимо указывать тип "fd" (Linux RAID auto). Далее надо описать массив в файле /etc/raidtab и создать его командой mkraid (пакет raidtools). Информация о конфигурации заносится на диск, что позволяет ядру при загрузке распознавать элементы RAID массивов и собирать массивы автоматически. Формат файла /etc/raidtab (raidtab(5), значение каждого параметра на отдельной строке вслед за именем параметра):

Ключи программы инициализации массива mkraid (первый параметр - имя массива):

Созданный массив можно форматировать и монтировать как обычный раздел. Состояние массива можно посмотреть в файле /proc/mdstat, который для каждого массива показывает его имя (md0), состояние (active), тип (raid1), составляющие массив разделы и их порядок в массиве, объём массива и состояние разделов ("U" - нормально, "_" - сбой).

Утилита lsraid позволяет получить информацию о RAID массиве, в т.ч. о вышедших из строя дисках (получает информацию с "оставшихся в живых", но хоть какая-то часть устройств должна быть доступна):

Утилита raidstop удаляет raid-устройство, не трогая исходные блочные устройства. Утилита raidstart собирает массив вновь без инициализации (запускает перестроение массива при добавлении вручную отформатированного раздела в массив взамен неисправного). Ключи:

Утилита raidreconf пытается (предварительное резервирование данных обязательно!) преобразовать массив из одного формата в другой или одиночный диск в массив (RAID-0 и RAID-5) или массив в одиночный диск, может также увеличить или уменьшить массив (RAID-0 и RAID-5). Ключи:

Для манипуляции дисками в массиве имеются утилиты raidhotadd, raidhotremove, raidsetfaulty.

Ещё более старый комплект mdtools делал RAID массив без сигнатур, для совместимости с этими старымим массивами имеется утилита raid0run.

device-mapper

Пакет device-mapper создаёт и обеспечивает работу нового логического блочного устройства на основе списка интервалов секторов блочных устройств (каждый сектор логического устройства отображается с помощью одного из методов - target - на существующие блочные устройства). Поддерживает методы отображения интервала (target, методы могут смешиваться при описании одного нового блочного устройства): linear, striped, error (для описания "дырок"), snapshot и snapshot-origin, mirror (для pvmove из пакета lvm2), zero, multipath, crypt. Используется в программном RAID, LVM2, dm-crypt (шифрование раздела), device-mapper-multipath (несколько путей доступа к устройству) и EVMS. Состоит из модулей ядра (CONFIG_BLK_DEV_DM) dm_mod (linear, faulty, dm-zero, dm-snapshot, dm-round-robin, dm-emc, dm-crypt, dm-multipath), библиотеки libdevmapper, устройства для управления модулем ядра из библиотеки /dev/mapper/control (c:10,63; создаётся с помощью "dmsetup mknodes"), утилиты dmsetup(8). В каталоге /dev/mapper также хранятся логические устройства. Наличие определяется по содержимому /proc/misc, /sys/class/misc/device-mapper (/sys/devices/virtual/misc/device-mapper).

Первый параметр утилиты dmsetup задаёт команду, второй - логическое устройство. Опции:

Команды:

Формат таблицы (каждая строка описывает один интервал, параметры разделяются пробелом):

dm-crypt - шифрование блочного устройства с использованием device-mapper

Текст перенесён в статью о LUKS.

Псевдо-RAID в ядре 2.6

Физический доступ к дискам на псевдо-RAID контроллерах поддерживается специальными модулями ядра (подсистема libata):

Пакет dmraid обеспечивает поддержку псевдоаппаратного RAID (S, 0, 1, 10) с помощью device-mapper. Читает множество форматов метаданных описания RAID различных изготовителей (но не умеет делать изменения - например, в случае сбоя): Adaptec HostRAID ASR, JMicron JMB36x, VIA Software RAID, Highpoint 37x/45x, Intel Software RAID, LSI Logic MegaRaid, Promise FastTrak, Silicon Image Medley. Создаёт описание таблицы для device-mapper из прочитанных метаданных и создаёт логические блочные устройства. Читает таблицу разделов (MSDOS) с получившегося логического блочного устройства и активирует их.

Получившиеся логические блочные устройства могут быть использованы непосредственно или с построением программного RAID. Загрузчик (lilo, grub) скорее всего об этих массивах ничего не знает.

Ключи dmraid:

Команды dmraid:

Пример борьбы в FC6 с dmraid, посчитавшим подключённый к i845 обычный диск (/dev/hdb (3:64)), частью псевдораида типа pdc (Promise FastTrak), который он передал в ведение device-mapper, но без разбиения на разделы, при этом монтирование файловой системы на /dev/hdb1 невозможно:

# dmsetup table
pdc_jeibbadfd: 0 156250000 linear 3:64 0

удаляю таблицу device-mapper'а (/dev/hdb остаётся занятым)

# dmsetup remove pdc_jeibbadfd

активирую все псевдораид массивы типа pdc

# dmraid -ay -f pdc
ERROR: creating degraded mirror mapping for "pdc_jeibbadfd"
ERROR: dos: partition address past end of RAID device

# ls -1 /dev/mapper/
control
pdc_jeibbadfd
pdc_jeibbadfd1
pdc_jeibbadfd2

# mount /dev/mapper/pdc_jeibbadfd1 точка-монтирования
# df
  ...
/dev/mapper/pdc_jeibbadfd1
                      15116744  11583248   2765596  81% точка-монтирования

Device Mapper Multipath (DM-MP)

Device Mapper Multipath (DM-MP) - пакет device-mapper-multipath - создаёт новое блочное устройство с помощью device-mapper поверх 2 или более блочных устройств, представляющих собой разные пути. Умеет работать с различными аппаратными хранилищами (EMC, Compaq/HP, GNBD, HITACHI, SUN; см. multipath.conf.defaults). Устройства, отсутствующие в списке, необходимо описать в /etc/multipath.conf. В нормальных условиях device-mapper-multipath может обеспечивать распределение нагрузки между путями, а при падении пути (появлении нового пути) изменять маршрут передачи данных.

Путь есть соединение от порта HBA к порту хранилища данных за одним LUN. Каждый путь выглядит как отдельное блочное устройство. Путь имеет приоритет, который может использоваться для группировки путей или распределения нагрузки (чем больше, тем лучше; например: 50 - оптимальный, 10 - неоптимальный, 1 - резервный, 0 - нерабочий). Путь может быть в одном из следующих состояний (у device-mapper может быть своё мнение: active или failed):

Пути объединяются в группы путей (группа может состоять из одного пути). В каждый момент времени только одна группа может находиться в активном состоянии, т.е. обслуживать ввод/вывод. Заявки внутри активной группы путей обрабатываются по очереди работающими (ready) путями в соответствии с приоритетами путей. Приоритет группы равен сумме приоритетов работоспособных путей из группы. Предполагается, что активной группой должна быть группа с наивысшим приоритетом. Группа путей может быть в одном из следующих состояний:

Многопутёвое устройство создаётся device-mapper (target multipath) и содержит одну или более групп путей. Идентифицируется по WWID или имени (обычно или совпадает с WWID или имеет вид mpathX).

device-mapper-multipath состоит из

Конфигурационный файл /etc/multipath.conf имеет вложенную блочную структуру (блоки выделяются фигурными скобками за именем блока; значения по умолчанию можно посмотреть в файле multipath.conf.defaults):

Ключи утилиты multipath (в качестве параметра указывается устройство major:minor):

Демон multipathd имеет ключи:

Сервис multipathd (/etc/sysconfig/multipathd - ключи отсюда не берутся): start, stop, restart, reload (SIGHUP), status.

Рассмотрим решение следующей проблемы - имеются два двухпортовых iSCSI хранилища и несколько серверов, в каждом из которых выделено по два порта для работы SAN, организовано 2 выделенных сети, каждая из которых обслуживает свой набор портов. Необходимо развести их так, чтобы в нормальных условиях трафик к первому хранилищу проходил внутри первой сети, трафик ко второму - внутри второй сети. И только при сбое одной из сетей весь трафик перемещался во вторую. При этом остальные хранилища продолжали работать как раньше.

При использовании LVM рекомендуется включить подлежащие блочные устройства в фильтр в /etc/lvm/lvm.conf.

Программный RAID в ядре 2.6

Позволяет создавать массив из блочных устройств, как физических (в т.ч. разделов и NBD - Network Block Device), так и созданных с помощью device-mapper логических. В том числе, поддерживаются логические блочные устройства созданные подсистемой поддержки псевдоаппаратных RAID контроллеров dmraid. Массив представляется в виде виртуального устройства /dev/mdN или /dev/md/N (N - номер массива).

Поддерживаются RAID уровней: LINEAR (JBOD, позволяет позднее добавить диск), 0 (исходные блочные устройства могут быть разных размеров), 1, 4, 5, 6, 10 (RAID1+0, только ядро 2.6, вариации "near" и "far" (более быстрое чтение и более медленная запись); число требуемых устройств должно быть не менее числа копий - это не просто RAID0 над RAID1!), MULTIPATH (несколько путей доступа к одному устройству), FAULTY (для тестирования; на основе ровно одного блочного устройства без метаданных; возвращает временные или постоянные ошибки при чтении или записи с определённой регулярностью; ошибки чтения могут "исправляться" запись в тот же блок). Реализовано параллельное чтение с нескольких дисков для RAID-1. Каждый тип требует своего модуля ядра (personality): raid0, raid10, raid1, raid4, raid5, raid6, xor. При самостоятельной сборке ядра требуется указать:

Multiple devices driver support (RAID and LVM) (CONFIG_MD) [Y/n/?] y
  RAID support (CONFIG_BLK_DEV_MD) [M/n/y/?] y
    Linear (append) mode (CONFIG_MD_LINEAR) [M/n/y/?] y
    RAID-0 (striping) mode (CONFIG_MD_RAID0) [M/n/y/?] y
    RAID-1 (mirroring) mode (CONFIG_MD_RAID1) [M/n/y/?] y
    RAID-4/RAID-5 mode (CONFIG_MD_RAID5) [M/n/y/?] y
...

Наличие поддержки RAID в ядре можно проверить командой "dmesg | grep ^md":

md: md driver 0.90.2 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: bitmap version 3.38
md: raid1 personality registered as nr 3
md: Autodetecting RAID arrays.
md: autorun ...
md: considering sdb1 ...
md:  adding sdb1 ...
md:  adding sda1 ...
md: created md0
md: bind
md: bind
md: running: 
md: ... autorun DONE.
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.

Для работы в режиме multipath требуется работа демона mdmpd, отслеживающего восстановление работы интерфейса (сбой интерфейса отслеживается ядром). Разработка спонсируется SUSE, со всеми вытекающими последствиями для пользователей RedHat.

Поддерживает 2 формата метаданных (ещё есть более старый вариант без хранения метаданных на диске для linear и raid0 - mdtools): версия 0.90.0 (совместима с raidtools; 4KB где-то в конце раздела - в последних 128 КБ) и версия 1 (начиная с mdadm 1.8.1 и ядра 2.6.10; 1KB в последних 12 KB для версии 1.0, в начале устройства для версии 1.1, со смещением 4KB от начала устройства для версии 1.2). Начиная с версии mdadm 1.7/1.11 (есть в FC4, нет в CentOS 4.3) позволяет добавлять диск в линейный массив, поддержка raid0 и линейных массивов размером более 2 ТБ. Версия метаданных 1 позволяет иметь более 28 дисков на массив, RAID1 более 2 ТБ (до 7 ТБ в версии 2.3). Автоопределение наличия массива по метаданным бывает довольно навязчивым - иногда приходится затирать их после разборки массива. Среди метаданных хранятся: тип массива, UUID (Universally Unique Identifier, 128 бит) массива. Создание массива есть запись метаданных (superblock) на все элементы массива утилитой mdadm. Сборка (assemble) есть привязка всех элементов к виртуальному устройству, в начале массив инициализируется (SET_ARRAY_INFO, указывается версия и подверсия метаданных), затем к нему добавляются все устройства (ADD_NEW_DISK), после этого массив запускается (RUN_ARRAY) и его можно использовать. Новые устройства можно добавлять к массиву (HOT_ADD_DISK), а старые удалять из массива (HOT_REMOVE_DISK) и после запуска. Возможные состояния массива:

Описание устройства в /sys/block/mdN. В версии ядра 2.6.18 имеется подкаталог md с описанием параметров массива:

Для каждого компонента массива имеется подкаталог /sys/block/mdN/md/dev-XXX (например, /sys/block/md0/md/dev-hdb1), содержащий файлы block (ссылка на запись в /sys/block/...), super (метаданные), state (состояние устройства: faulty - устройств выведено из активного использования, in_sync - всё хорошо, writemostly - это устройство будет использоваться для чтения в самом крайнем случае (WRITE-BEHIND, только для RAID-1 и ядра 2.6.14), spare; сюда можно писать для перевода устройства в другое состояние: faulty, remove, writemostly, -writemostly), errors (число ошибок чтения, которые не вызвали отключение устройства: были скорректированы или массив был в режиме "только чтение"), slot (номер диски в массиве; "none" для резервного или сбойного устройства), offset (номер первого сектора с данными на устройстве), size (размер области данных). Для каждого активного компонента массива имеется подкаталог /sys/block/mdN/md/rdNN (где NN - позиция в массиве, slot). которые являются ссылками на соответствующие каталоги /sys/block/mdN/md/dev-XXX.

При аварийном отключении питания массив может оказаться в состоянии несовместимости: например, запись на один диск в RAID-1 успела завершиться, а на второй - нет. Для отслеживания этой ситуации драйвер помечает диск массива как "грязный" (dirty) перед записью и как "чистый" (clean) при нормальном завершении работы или после некоторого периода бездействия. Если при загрузке массив "грязный", то он восстанавливается в фоновом режиме (первый диск RAID-1 копируется на все остальные; сравниваются и пересчитываются все контрольные суммы в RAID-4, -5 и -6). Скорость восстановления ограничивается системными переменными /proc/sys/dev/raid/speed_limit_min (в КБ/сек на устройство) и /proc/sys/dev/raid/speed_limit_max. Если при этом RAID-5 деградировал (не работает один диск) и сравнение контрольных сумм невозможно, то начиная с версии ядра 2.5 требуется ручное вмешательство (оператор должен подтвердить готовность рисковать ключом --force или параметром загрузки). Начиная с ядра 2.6.13 (только RAID-1) модуль md позволяет вести битовую карту секторов (рядом с метаданными или в отдельном файле на другом устройстве), которые могут потребовать синхронизации, что очень сильно ускоряет как синхронизацию, так и восстановление массива при использовании того же физического диска. Рекомендуется использовать файловую систему ext2 или ext3.

При обнаружении любой (!) ошибки устройства при работе с RAID-1, RAID-4, RAID-5, RAID-6 и RAID-10 драйвер отключает устройство (помечает его как сбойное - faulty) и продолжает работу на оставшихся. Если есть запасное (spare) устройство, то оно вводится в эксплуатацию.

Параметры ядра:

Созданный массив можно форматировать и монтировать как обычный раздел. Состояние массива можно посмотреть в файле /proc/mdstat, который для каждого массива показывает его имя (md0), состояние (active), тип (raid1), составляющие массив разделы и их порядок в массиве, объём массива и состояние разделов ("U" - нормально, "_" - сбой). Пример вывода /proc/mdstat (номер в скобках после имени диска - номер в массиве; первое число в скобках после числа блоков - общее число дисков, второе - чмсло активных дисков):

Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[0]
      4739072 blocks [2/2] [UU]

md0 : active raid1 sdb1[1] sda1[0]
      151549056 blocks [2/2] [UU]

unused devices: 

Все действия с массивами производятся утилитой mdadm, имеющей следующий синтаксис:

mdadm [режим] устройство-массива [опции] компонент-массива ...

Общие опции:

Режимы:

Простейшие задачи:

Имена событий мониторинга:

Формат конфигурационного файла (по умолчанию: /etc/mdadm.conf):

Утилита mdassemble предназначена для включения в initrd для замены автоматического построения массивов при загрузке ядра. Действует как "mdadm --assemble --scan". Список устройств для проверки берётся из /etc/mdadm.conf.

Чтобы создать программное RAID устройство при установке RHEL (Fedora Core, CentOS) необходимо предварительно создать требуемое число разделов типа "software RAID" (Linux RAID auto), затем объединить их в RAID. При этом необходимо задать уровень RAID, имя устройства, тип файловой системы и точку монтирования. При использовании kickstart создание RAID устройства записывается так:

part raid.01 --size=113000 --ondisk=sda
part raid.02 --size=113000 --ondisk=sdb
raid / --fstype=ext3 --level=RAID1 --device=md0 raid.01 raid.02

Каталог /boot может находиться только на RAID-1 или обычном разделе. Если корневая система находится на RAID, то при загрузке необходимо иметь initrd, загружающий необходимые модули, и обеспечить возможность автоматической сборки массива. При использовании grub необходимо вручную (CentOS 4) записать загрузчик на второй диск:

/sbin/grub --no-floppy --batch << EOF
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
quit
EOF

При первой загрузке необходимо обеспечить мониторинг массивов:

Оставшийся в живых раздел из состава RAID-1 с метаданными 0.90 превращается в одиночный раздел сменой типа раздела и перезагрузкой. После этого необходимо поправить /etc/fstab и /boot/grub/grub.conf.

Пример RAID6 из 12 дисков ST31000340NS через FC 4Gb (SL-61, Intel SR2625URLX)

битовая карта ускоряет синхронизацию, но тормозит запись, поэтому выносим её в файл

mdadm --create /dev/md/raid6of12 --verbose --raid-devices=12 --level=raid6 \
      --layout=left-symmetric --bitmap=/root/raid6of12.bitmap --bitmap-chunk=64M \
      --name=raid6of12 /dev/sd{a,b,c,d,e,f,g,h,i,j,k,l}

mdadm: chunk size defaults to 512K
mdadm: size set to 975768064K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/raid6of12 started.

mdadm --detail /dev/md/raid6of12 --verbose

/dev/md/raid6of12:
        Version : 1.2
  Creation Time : Sun Aug 21 17:07:49 2011
     Raid Level : raid6
     Array Size : 9757680640 (9305.65 GiB 9991.86 GB)
  Used Dev Size : 975768064 (930.56 GiB 999.19 GB)
   Raid Devices : 12
  Total Devices : 12
    Persistence : Superblock is persistent

  Intent Bitmap : /root/raid6of12.bitmap

    Update Time : Sun Aug 21 17:10:37 2011
          State : clean, resyncing
 Active Devices : 12
Working Devices : 12
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0% complete

           Name : имя-хоста:raid6of12  (local to host имя-хоста)
           UUID : 6292d2da:7c630816:2775a81d:1cdcc4e4
         Events : 33

    Number   Major   Minor   RaidDevice State
       0       8        0        0      active sync   /dev/sda
       1       8       16        1      active sync   /dev/sdb
       2       8       32        2      active sync   /dev/sdc
       3       8       48        3      active sync   /dev/sdd
       4       8       64        4      active sync   /dev/sde
       5       8       80        5      active sync   /dev/sdf
       6       8       96        6      active sync   /dev/sdg
       7       8      112        7      active sync   /dev/sdh
       8       8      128        8      active sync   /dev/sdi
       9       8      144        9      active sync   /dev/sdj
      10       8      160       10      active sync   /dev/sdk
      11       8      176       11      active sync   /dev/sdl

echo 8192 > /sys/block/md127/md/stripe_cache_size # значительное ускорение записи
echo 512 > /sys/block/sd{a,b,c,d,e,f,g,h,i,j,k,l}/bdi/read_ahead_kb

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=128,stripe-width=1280,resize=4294967295 /dev/md/raid6of12

mount -o acl,nodiratime,data=writeback,journal_checksum,journal_async_commit,stripe=1280,delalloc /dev/md/raid6of12 /mnt

bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
            100000M           334975  22 170494  14           380976  12 511.4   1 # при инициализации
            100000M           347474  22 185827  15           405044  13 545.7   1

восстановление файлов (share3h/s196: 4TB, 6.7 миллиона файлов, 10GB buffers) - 115 МБ/сек
чтение восстановленных файлов ("tar -C /mnt -cf - .|dd ibs=1024k of=/dev/null") - 107 МБ/сек
   монтирование с relatime даёт выигрыш в 3-5%
   уменьшение read_ahead_kb не помогает
   для сравнения - на MSA P2000 (3x8 2TB) "tar -cf -|dd" выдаёт 118 MB/s (при нагрузке и более фрагментированной системе)
чтение восстановленных файлов ("tar -C /mnt -cf - .|gzip -1" - не поднимается выше 35 МБ/сек
чтение восстановленных файлов ("tar -C /mnt -cf - .|lzop" - до 84МБ/сек на выходе, среднее на входе до 135 МБ/сек
чтение восстановленных файлов ("tar -C /mnt -cf - .|lzop -1" - не ускоряется
копирование восстановленных файлов (tar -c|dd|tar -x) - 57.9 MB/s
чтение восстановленных и скопированных файлов в 2 потока - около 200 МБ/сек (скопированная часть быстрее)

восстановление файлов в 2 потока во время инициализации (первый ТБ) - 138 МБ/сек
восстановление файлов в 3 потока (первый ТБ) - 273 МБ/сек
чтение файлов (tar) во время инициализации (первые 600GB) - 250 МБ/сек
чтение файлов (tar) в 2 потока - 347 МБ/сек

mkfs.xfs -L raid6of12xfs -d su=512k,sw=10 -l su=512k,lazy-count=1 -i attr=2 /dev/md/raid6of12
!log stripe unit (524288 bytes) is too large (maximum is 256KiB)
!log stripe unit adjusted to 32KiB
meta-data=/dev/md/raid6of12      isize=256    agcount=32, agsize=76231936 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=2439420160, imaxpct=5
         =                       sunit=128    swidth=1280 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
mount -o nodiratime,attr2,logbufs=8,logbsize=65536 /dev/md/raid6of12 /mnt

восстановление в 3 потока (первый ТБ) - 105 МБ/сек во время синхронизации

==============================================================================
mdadm --create /dev/md/raid6of12 --verbose --raid-devices=12 --level=raid6 \
      --layout=left-symmetric --name=raid6of12 /dev/sd{a,b,c,d,e,f,g,h,i,j,k,l}

echo 8192 > /sys/block/md127/md/stripe_cache_size # значительное ускорение записи
echo 512 > /sys/block/sd{a,b,c,d,e,f,g,h,i,j,k,l}/bdi/read_ahead_kb
echo 0 > /proc/sys/vm/vfs_cache_pressure

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=128,stripe-width=1280,resize=4294967295 /dev/md/raid6of12

mount -o acl,nodiratime,relatime,data=writeback,journal_checksum,journal_async_commit,stripe=1280,delalloc \
         /dev/md/raid6of12 /mnt

восстановление файлов в 2 потока (9.4 миллиона файлов, 6.5TB) - 166 МБ/сек 

mkfs.btrfs --data single --metadata single --label raid6of12btrfs /dev/md/raid6of12
mount -o compress-force=lzo,space_cache /dev/md127 /mnt

восстановление файлов в 4 потока (17 миллионов файлов, 12 ТБ, сжатие 2.26) - 1ТБ/час
================ уменьшим размер chunk ===============================
mdadm --create /dev/md/raid6of12 --verbose --raid-devices=12 --level=raid6 \
      --chunk 64 --layout=left-symmetric --bitmap=/root/raid6of12.bitmap --bitmap-chunk=64M \
      --name=raid6of12 /dev/sd{a,b,c,d,e,f,g,h,i,j,k,l}

# можно и больше
echo 8192 > /sys/block/md127/md/stripe_cache_size # значительное ускорение записи
echo 128 > /sys/block/sd{a,b,c,d,e,f,g,h,i,j,k,l}/bdi/read_ahead_kb

mkfs.ext4 -t ext4 -v -j -m 0 -N 50000000 -b 4096 -E stride=16,stripe-width=160,resize=4294967295 /dev/md/raid6of12

mount -o acl,nodiratime,data=writeback,journal_checksum,journal_async_commit,stripe=160,delalloc /dev/md/raid6of12 /mnt

# blockdev --getra  /dev/md/raid6of12 
# 2560
# для ускорения последовательного чтения
# blockdev --setra 65536 /dev/md/raid6of12

bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
            100000M           333621  21 153453  14           380315  16 376.3   1 # при инициализации
            100000M           348146  22 164416  15           403097  17 532.4   1
            100000M           228221  14 104535  10           226738  11 465.8   1 # без одного диска
            100000M           327255  21 149824  14           374160  15 563.9   1 # ошибки чтения
            100000M           329783  21 165805  15           403849  16 537.9   1
   
восстановление файлов в 3 потока во время инициализации (1.2TB) - 226MB/s
копирование на себя в 1 поток (tar) во время инициализации - 155MB/s
чтение (tar) в 2 потока (без одного диска) - 198 МБ/сек (с дисков читается в 1.8 раз больше, 
    что временами заполняет канал 4Gb)

восстановление файлов (share3h/s196: 4TB, 6.7 миллиона файлов) во время синхронизации - 107 МБ/сек
чтение восстановленных файлов ("tar -C /mnt -cf - .|dd ibs=1024k of=/dev/null") - 78 МБ/сек
чтение восстановленных файлов (nodiratime,relatime и 0 в /proc/sys/vm/vfs_cache_pressure) - 126 МБ/сек
копирование восстановленных файлов (tar -c|dd|tar -x) - 50 MB/s
чтение восстановленных и скопированных файлов в 2 потока - около 200 МБ/сек (копия быстрее)

mkfs.xfs -L raid6of12xfs -d su=64k,sw=10 -l su=64k,lazy-count=1 -i attr=2 /dev/md127
meta-data=/dev/md127             isize=256    agcount=32, agsize=76231904 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=2439420480, imaxpct=5
         =                       sunit=16     swidth=160 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=16 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

mount -o nodiratime,attr2,logbufs=8,logbsize=65536 /dev/md127 /mnt

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
            100000M           153932  10 138125  12           405227  17 307.7   0


восстановление в 3 потока (первый ТБ) - 105 МБ/сек во время синхронизации

mkfs.xfs -L raid6of12xfs -d su=64k,sw=10 -l logdev=/dev/system/log,size=521728b,lazy-count=1 -i attr=2 /dev/md127 
mount -o nodiratime,attr2,logbufs=8,logbsize=65536,largeio,swalloc,logdev=/dev/system/log /dev/md127 /mnt

Version  1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
            100000M           150237   8 134958  12           390698  16 307.0   0

восстановление не ускорилось

mkfs.btrfs --data single --metadata single --label raid6of12btrfs /dev/md127
mount -o compress=lzo,space_cache /dev/md127 /mnt

восстановление файлов в 3 потока во время инициализации (1.2TB) - 238 MB/s
восстановление файлов в 3 потока (1.8TB) - 245 MB/s

LVM (Logical Volume Management) в ядре 2.6

LVM (Logical Volume Management) позволяет рассматривать разделы дисков как элементарные строительные блоки, которые можно объединять в общий пул пространства хранения, из которого можно нарезать логические диски требуемого размера. LVM позволяет образовать логический диск большого размера, динамически изменить размер логического диска (требуется поддержка драйвера используемой файловой системы), "плавно" переместить данные с физического диска на другое место. Доступны такие функции как мгновенное снятие "фотографии" текущего состояния (snapshot, снимок) логического диска и откат на одно из сделанных ранее состояний (требуется поддержка драйвера файловой системы и достаточно свободного места, снимки можно даже изменять и увеличивать в размере).

Пакет lvm2 (ядро 2.6) обеспечивает поддержку LVM (Logical Volume Management) с использованием других механизмов (device-mapper) и форматов данных в сравнении с пакетом lvm (ядро 2.4). Формат метаданных также отличается. В статье описывается только lvm2.

При самостоятельной сборке ядра требуется указать:

Multiple devices driver support (RAID and LVM) (CONFIG_MD) [Y/n/?] y
Logical volume manager (LVM) support (CONFIG_BLK_DEV_LVM) y

Вводится следующая иерархия понятий:

Стратегии отображения логических экстентов на физические:

FC и RHEL по умолчанию ставятся на LVM (одна группа с именем VolGroup00, простирающаяся на всё доступное пространство, кроме раздела /boot; из неё делается 2 логических тома LogVol00 для корневой файловой системы и LogVol01 для раздела подкачки), однако старые загрузчики и утилиты восстановления не умеют с ним работать! То есть, если вас угораздило поставить корневую систему (/) на LVM, то придётся поставить систему на новый диск и уже загрузившись с неё разбираться с проблемами на "упавшей" системе (в CentOS 4.4 rescue научился монтировать файловые системы на LVM). При размещении корневого раздела на LVM необходимо позаботиться о "правильном" initrd (комплектные initrd в RHEL и FC включают необходимые компоненты - см. mkinitrd и rc.sysinit:

lvm.static:   2 logical volume(s) in volume group VolGroup00 now active
rc.sysinit: Setting up Logical Volume Management: succeeded

Если вы всё же хотите использовать LVM, но вас не устраивает стандартное разбиение, то можно создать необходимые группы и тома при установке с помощью DiskDruid:

Утилита /sbin/lvm (/sbin/lvm.static) может выполнить любую из нижеупомянутых функций. Имя функции указывается в качестве первого параметра (дополнительные функции - dumpconfig, formats, segtypes). Без параметров утилита переходит в интерактивный режим (используются возможности readline). Возможно чтение команд из файла. Общие ключи:

Переменные окружения:

Работа с физическими томами:

Работа с группами логических томов:

Работа с логическими томами:

Перед началом работы lvm или любая другая утилита читает настроечный файл (/etc/lvm/lvm.conf). Строки, начинающиеся с '#' являются комментариями. Файл состоит из секций и присвоений значения переменной. Секция состоит из имени секции, за которой идёт символ '{', затем последовательность секций и присвоений, затем символ '}'. Присвоение записывается как (значения могут быть строками в кавычках, целыми числами и числами с плавающей точкой, последовательностями значений через запятую в квадратных скобках):

имя-переменной = значение

Секции:

clvmd - начало работ над кластерной версией LVM.

При добавлении нового диска в аппаратный RAID необходимо (вместо добавления нового раздела можно изменить размер старого и использовать pvresize):

Вывод физического тома из эксплуатации:

Уменьшение размера аппаратного RAID массива:

Создание логического тома с параллельным доступом на 2 диска:

Замена дефективного неиспользуемого физического тома:

Увеличение файловой системы (HP StorageWorks MSA 2012i, Linux-ISCSI, multipath):

Преобразование корневой файловой системы "на ходу" (пример написан для LVM1 и LILO - надо переделать).

Оценка потерь скорости работы файловой системы при использовании снимков (при двух снимках дождаться создания файла 20 ГБ нелегко, а прервать невозможно):

RAID-5 5x73G  Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off

до создания снимка:
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              3000M 40353  93 51799  22 22260   5 34104  69 43591   4 604.1   1

после в первый раз:
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              5000M  3989   9 57410  24 19673   5 31566  66 39586   5 591.0   1

после во второй раз:
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              5000M 39256  92 10802   4 19742   5 31542  66 37922   5 564.1   1

сам snapshot первый раз:
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              5000M  5634  12 56405  24 19562   5 31377  66 38057   5 619.5   1

сам snapshot второй раз:
bonnie++ 1.03       ------Sequential Output------ --Sequential Input- --Random-
                    -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
              5000M 40869  95 60142  26 19196   5 31161  65 38130   5 634.4   1

Ссылки

@ Карта сайта News Автора!

Bog BOS: hardware:  Использование RAID контроллеров в Linux

TopList
order ativan
Copyright © 1996-2010 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)