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" (дешёвых), но быстро выяснилось,
что цена самого массива очень высока).
удаление файла по команде пользователя (администратора, хакера); для защиты данных требуется
регулярное резервирование данных (например, с помощью bacula);
RAID в этом случае не поможет
полный отказ диска; для защиты данных возможно использование RAID технологии
внезапное отключение питания; для защиты данных необходимо использование UPS
с программным обеспечением аккуратного завершения работы системы при исчерпании батареи;
RAID в этом случае только ухудшит последствия (если не имеет встроенной батарейки);
может помочь (кроме сохранения БД) файловая система с журнализацией данных при условии,
что контроллер и диск не переупорядочивают операции записи
"плохие" блоки; рекомендуется "badblocks -svw" перед использованием диска до сборки RAID или LVM;
RAID в этом случае не поможет
ошибки приложений и ОС; рекомендуется система управления версиями (обычное резервирование
помогает не всегда); RAID в этом случае не поможет
утеря сервера (кража, пожар); рекомендуется регулярное резервирование данных и хранение
копий на другой территории
Первоначально деление RAID массивов на уровни (типы)
было предложено Гибсоном, Катцом и Патерсоном
(University of California at Berkeley), часть предложенных уровней в настоящее
время не используется, зато исторически добавились новые (скорость зависит от реализации
и доступности кеширования записи, может отличаться от ожидаемой на порядок; терминология
составных массивов - 10, 01, 0+1 - не устоялась окончательно):
0 (stripe) - данные делятся на блоки (полоски, stripe) и записываются на диски поочерёдно,
это увеличивает пропускную способность (запись идёт параллельно),
слабо уменьшает латентность и не увеличивает надёжность (вернее, уменьшает надёжность,
так как число устройств увеличивается)
1 (mirror) - две одинаковые копии данных записываются на два диска, пропускная способность
при чтении увеличивается, латентность снижается, пропускная способность при записи слегка
уменьшается, надёжность увеличивается (допустим сбой одного диска), стоимость увеличивается
вдвое
5 - данные делятся на блоки (полоски, stripe) и записываются на диски поочерёдно вместе с
блоками контрольных сумм, надёжность увеличивается (допустим сбой одного диска с сильной
потерей в производительности);
стоимость увеличивается на цену одного дополнительного диска;
требуется не менее 3 дисков; скорость записи слегка уменьшается
(надо записать сами изменённые данные и блок контрольных сумм, но можно делать это
параллельно); пропускная способность при чтении увеличивается с увеличением числа дисков
6 - две полоски контрольных сумм записываются поочерёдно на различные диски, что позволяет
продолжать работу при отказе 2 дисков в массиве; скорость работы ниже, чем у RAID-5
(очень медленно при отказе 2 дисков)
10 (1+0) - массив RAID 0 из нескольких RAID 1, обеспечивающая увеличение как скорости, так и надёжности
(допустим отказ любого числа дисков, входящих в одну группу)
JBOD (Just a Bunch Of Drives) - доступ к дискам осужествляется независимо друг от друга
или несколько дисков объединяются в один логический диск большего размера,
ни увеличения скорости, ни увеличения надёжности (вернее, уменьшает надёжность,
так как число устройств увеличивается)
0+1 (01) - массив RAID 1 из RAID 0 с объединением нескольких массивов в один большой (spanning),
увеличение как скорости, так и надёжности, стоимость увеличивается вдвое
50 - массив RAID 0 из RAID 5 с объединением нескольких массивов в один большой (spanning),
увеличение как скорости, так и надёжности, стоимость увеличивается на цену одного
дополнительного диска в каждой группе
Правильный расчёт размера полоски, размера блока файловой системы
и группы блоков (ext2/3) в зависимости от типа нагрузки - большое искусство.
Если полоска маленькая (относительно среднего размера файла),
то получаем большую задержку и большую пропускную способность.
RAID может быть организован с помощью аппаратного контроллера
(в этом случае массив представляется BIOS и ОС как один диск) или программного драйвера.
В настоящее время многие изготовители оборудования выдают [полу]программный RAID (hostRAID) в качестве
аппаратного, при этом поддержка аппаратной части в Linux отсутствует или плохо работает.
Разработчики ядра Linux рекомендуют использовать для таких "недо-RAID" стандартный программный
драйвер RAID (device-mapper и mdadm).
Так как формат данных RAID не стандартизован, то переносить диски от одного
аппаратного контроллера в другой в общем случае нельзя. Требуется покупка нового контроллера того же типа.
Программная реализация:
позволяет съэкономить деньги
больше нагружает общую шину ввода/вывода (PCI/4)
не рекомендуется подключать 2 устройства к одной PATA шине - ухудшается производительность,
при сбое одного устройства может быть заблокировано и второе (особенно, если вышло
из строя устройство master)
больше нагружает процессор, хотя для современного процессора нагрузка невелика
позволяет безболезненно переносить диски между системами
требует предусмотрительности при настройке загрузчика (загрузочный раздел на RAID-5
определённо вызовет проблемы; если корневая файловая система находится на RAID, то
поддержка RAID должна быть встроена в ядро или initrd, а загрузочный раздел отделён)
некуда поставить батарейку для кеширования записи
реже ломается и обычно лучше отлажена, чем firmware аппаратного контроллера и утилиты
позволяет напрямую контролировать отдельные диски (SMART, параметры и т.д.)
единый интерфейс управления (в рамках одной ОС)
могут быть проблемы с горячей заменой
требуется настроить BIOS для загрузки с "выжившего" диска (и auto-detect!)
Кеширование записи на физических дисках включать нельзя - при сбое питания
велик шанс порчи данных. Кеширование записи в контроллере (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.
Отзывается на кличку 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.
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, нельзя включать при наличии логических дисков, требуется
перезагрузка).
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).
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):
-nolog
-logAppend
-LogFileимя-файла
-aномер-контроллера (нумерация начинается с 0)
-alladp (действие над всеми контроллерами)
-Lномер-логического-диска (нумерация начинается с 0)
-Lall (все логические диски)
-R0 или -R1 или -R5 (тип массива для команд -addCfg и -newCfg)
-R10 или -R50 (тип массива для команд -spanAddCfg и -spanNewCfg)
-Hspсписок-номеров-дисков (задаёт список дисков для горячей замены)
-chN (номер канала, для SATA - 0)
-idN (номер диска в канале)
-szразмер-логического-диска (в мегабайтах)
-strpszN (размер страйпа в КБ: 2,4,8,16,32,64,128)
WT | WB (тип кеширования записи: Write Thought (без кеширования) или Write Back (с кешированием))
RAA | RA | RAN (тип кеширование чтения: адаптивное, упреждающее, без кеширования)
CIO | DIO (кешировать или не кешировать)
Команды мониторинга и управления (команда указывается первым ключом;
-aN указывать почти всегда; команды конфигурации массива описаны в документации в формате .doc ;):
-dispCfg (вывести краткое описание конфигурации)
-saveCfg -fимя-файла (в двоичном виде со очень странными правами)
-dispFileCfg -fимя-файла (показать сохранённое в человеческом виде; здесь -aN не нужен)
-restoreCfg -fимя-файла (записать конфигурацию из файла в устройство)
-ScfgAndParm -fимя-файла (сохранить конфигурацию и параметры: состояние BIOS и др.)
-DfcfgAndParm -fимя-файла (показать сохранённое в человеческом виде)
-RcfgAndParm -fимя-файла
-FreeSpaceInfo
-ctlrInfo (вывести характеристики и настройки контроллера, версию firmware, версию BIOS,
серийный номер - у всех одинаковый ;)
-AllAdpInfo (показать названия всех контроллеров; здесь -aN не нужен)
-ldInfo -Lномер-логического-диска (вывести информацию о логическом диске)
megamgr 5.20 (ut_linux_mgr_5.20.zip) - интерактивная утилита (curses) позволяющая
настроить контроллер и сконфигурировать массив. В отличие от megarc умеет показывать состояние батарейки.
По функциям аналогичен текстовой версии в BIOS (т.е. нет функции миграции). Некоторые управляющие
клавиши:
ESC - возврат из подменю (довольно длительная пауза)
пробел - отметка элемента списка для дальнейшего действия)
F2 - отметить все элементы в списке
F4 - назначить текущий физический диск в горячий резерв
F10 - начать действие над отмеченными элементами
Обещанных в документации патрульного чтения, SAF-TE, FlexRAID Virtual Sizing
не обнаружено.
Реконструкция. F2 - показать параметры логического устройства.
Пробел - выбрать диск для удаления (из RAID-0 удалить диск нельзя) или добавления (пометка не ставится!).
Enter - выбрать логическое устройство. Следующий Enter - войти в меню выбора режима.
Здесь можно преобразовать RAID-5 в RAID-0 (10 часов на массив из 5x73GB,
293GB в 349GB, Linux не заметил изменения размера устройства - придётся перезагрузиться),
поменять размер полоски и начать реконструкцию.
Прерывать реконструкцию нельзя.
После этого можно добавить диск и преобразовать массив обратно в RAID-5.
Linux не замечает изменения размера устройства - приходится перезагружаться,
затем использовать LVM.
Мониторинг состояния 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:
-start
-stop (уже запущенные проверки и восстановления не останавливаются)
-pause
-resume
-cons [-hчас-запуска] [-dдень-недели] [-wинтервал]
-dateММ/ДД/ГГГГ (планировщик проверок массива; -date задаёт дату первой проверки;
день недели 0 - это воскресенье; интервал задаётся в неделях, 0 - ежедневная проверка)
-SMARTсекунд (задание интервала проверки данных SMART; 0 - запретить проверку)
Упал при извлечении диска (при этом RAID не перешёл в состояние critical, зато файловая система
стала read-only со всеми вытекающими последствиями, на всякий случай отключил):
MegaServ[4845]: segfault at 0000000000000046 rip 000000000807851c rsp 00000000ffffd0a0 error 4
GAM (Global Array Manager) - "тяжёлый" пакет управления большим количеством
контроллеров (агент, SNMP, сервер управления).
Power Console Plus не имеет версии под Linux (позволяет преобразовать
RAID0 в RAID1 или RAID5 добавлением диска; позволяет преобразовать деградировавший RAID5
в оптимальный RAID0 с удалением диска; позволяет преобразовать RAID5 в RAID0;
позволяет мониторить производительность; позволяет остановить диск; позволяет немедленно
записать кеш на диск):
клиент (позволяет мониторить зарегистрированные сервера),
сервер (обеспечивает интерфейс с контроллером),
сервер регистрации, SNMP агент (обеспечивает сетевой интерфейс), монитор.
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 (не содержит ничего полезного). Имеется также утилита удалённого
управления, о которой лучше сразу забыть. Функции:
настройка контроллера (кеширование чтения, кеширование записи, уровень сообщений,
тестирование памяти, обновление прошивки, периодическая проверка чётности и пр.)
настройка физического диска (кеширование чтения, кеширование записи, очереди),
форматирование (только из BIOS), проверка поверхности (данные стираются),
посмотреть размер таблицы плохих блоков
настройка логического диска (содержит физический диск или его часть или несколько
физических дисков (chain, конкатенация), при создании все данные теряются)
настройка массива (содержит логические диски, указывается тип массива, мастер-диск,
размер блока, размер массива, быстрое построение с удалением данных или медленное
с пересчётом контрольных сумм; свободное место на логическом диске можно превратить
в отдельный хост диск; можно преобразовать RAID-0 в RAID-5 и обратно;
можно заменить логический диск одним из неиспользуемых; можно добавить
диск в качестве резервного для данного массива или в общий пул; можно проверить
правильность контрольных сумм (есть функция автоматической коррекции и регулярного
автоматического запуска))
настройка хост диска (можно разбить хост диск на 2 или слить обратно разбитые
ранее, при этом данные теряются; можно поменять порядок хост дисков
(загрузочный только из BIOS); есть опция работы с разделами; кеширование записи)
мониторинг производительности (KB и операций в секунду для хост дисков, логических
дисков, физических дисков; можно записывать в файл), статистика кеширования,
журнал событий (после последней загрузки, можно записать в файл), статистика повторов,
плохих блоков; сохранение конфигурации в файл
Утилиту, позволяющую получить доступ к контроллеру из скриптов,
найти не удалось. Видимо, опять придётся искать аналог как в случае с 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.
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):
flush-cache (записать содержимое кеша на диск; автоматически производится при завершении
работы и при выгрузке модуля; останавливает фоновые задания)
kill канал:идентификатор (перевести физический диск в состояние DEAD)
make-online канал:идентификатор (перевести физический диск из состояния DEAD в ONLINE;
использовать в самом крайнем случае, см. rebuild)
make-standby канал:идентификатор (перевести физический диск из состояния DEAD в STANDBY;
только после того как сконфигурированный обычным способом диск горячего резерва был
использован при автоматическом восстановлении; эта команда не может добавить
новый диск горячего резерва)
rebuild канал:идентификатор (восстановить данные на указанном физическом диске
копированием или перевычислением контрольных сумм; только после замены неисправного устройства;
невозможно узнать, когда закончится! в реальной жизни пришлось останавливать сервер
и перестраивать массив из BIOS)
check-consistency номер-логического-диска (каждую минуту будет информировать в syslog и на консоль)
cancel-rebuild
cancel-consistency-check
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.
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" при использовании последовательного порта, глотаются символы при вводе).
Интерфейс в виде меню или командный режим.
При работе в командном режиме необычно расположение команды и параметров:
controller номер show (узнать тип контроллера)
CLI> controller 1 show
Controller: HP Smart Array P400i, slot 0
Direct-Attached Storage
CLI> controller 2 show
Controller: HP Smart Array P400i, slot 0
External Array Controller 1
Logical Drive # 1, RAID 1+0, 136.7 GB, Status OK
Physical Drive # 1, Port 1I, Box 1, Bay 1, 146.8GB SAS Drive OK , Data
Physical Drive # 2, Port 1I, Box 1, Bay 2, 146.8GB SAS Drive OK , Data
logicaldrive номер blink={off|on}
logicaldrive номер delete
physicaldrive номер show
Physical Drive # 1, Port 1I, Box 1, Bay 1, 146.8GB SAS Drive OK , Data
physicaldrive номер blink={off|on}
Драйвера и утилиты собраны на диске 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_phys_devs
(выводит список SCSI-устройств, подключённых к указанному контроллеру)
и /sbin/cciss_hotplug (поиск НЛМ).
Утилита hpacucli (HP Array Configuration Utility CLI,
пакет hpacucli-8.28-13.0.noarch.rpm) предоставляет
командный интерфейс для настройки и мониторинга.
В начале указывается объект, затем действие, затем параметры
(параметр "forced" заранее подверждает потенциально опасное действие).
В качестве объекта можно указать
физический диск (controller выбор-контроллера physicaldrive {all | канал:ящик:слот})
логический диск (controller выбор-контроллера logicaldrive {all | номер})
Действия:
show (опции: detail, status и config [detail])
create/remove (работа с массивами и логическими дисками), параметры:
type=ld
drives={список|all|allunassigned}
raid={0|1|1+0|5|6|50|60}
ss=размер-страйпа-в-КБ
size={max|количество-МБ}
arrayaccelerator={enable|disable}
drivetype={sas|sata})
modify, параметры:
rebuildpriority={high|low|medium}
expandpriority={high|low|medium}
led={on|off}
queuedepth={automatic|число}
surfacescandelay=секунд
reenable (объявить физический диск хорошим)
size=число|max
raid=уровень
ss=размер-страйпа-в-КБ|default
cacheratio=доля-чтения/доля-записи
drivewritecache={enable|disable}
arrayaccelerator={enable|disable})
add (добавить диск к массиву - "add drives=список"; вызывает преобразование типа массива)
remove (удалить диск из массива, отказывается - требуется лицензия?)
объявить запасной диск (add spares=список)
добавить лицензию
delete # удаление массива или логического диска
diag ("ctrl all diag file=/tmp/temp [xml=on]"
выдаёт почти 3 тысячи строк информации со всей подноготной)
rescan (поиск контроллеров)
При установке создаётся /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):
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
и плохом блоке; убрано низкоуровневое форматирование:
распаковать файлы из архива на чистый флоппидиск
подготовить загрузочный DOS флоппидиск (без config.sys и autoexec.bat) и загрузиться с него
вставить флоппи с прошивкой
MFLASH
Для включения кеширования записи необходимо докупить батарейку 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.
Фирма Sun Microsistems (в девичестве Dot Hill Systems) выпускала семейство автономных
дисковых массивов Sun StorEdge 3000 (Sun StorageTek),
монтируемых в стойку и подключаемых к серверам с помощью интерфейса SCSI
или Fibre-Channel.
Например, модель Sun StorEdge3310 SCSI Array представляет собой
дисковую корзину, монтируемую в стойку (2U);
индикаторы (справа): электропитания (нормально - зелёный, проблемы - жёлтый),
вентилятора (нормально - зелёный, проблемы - жёлтый),
температуры (нормально - зелёный, выше 55 - жёлтый, выше 60 - мигающий жёлтый),
прочие проблемы (нормально - зелёный, проблемы EMU - жёлтый,
проблемы с RAID или контроллером - мигающий жёлтый); кнопка сброса
(отключение звучка при аппаратном сбое; прочие ошибки отключаются командой в "system Functions");
об ошибках извещает азбукой морзе (эту азбуку все помнят, так что не буду описывать)
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них, но не долго);
совмещены с вентиляторными блоками (по 2 штуки);
индикаторы подачи питания (зелёный) и неисправности БП (жёлтый);
автоматически отключается при температуре 95 градусов;
выключатель
12 отсеков для дисков SCSI Ultra 160
(3.5", высота 1", до 72GB на момент выпуска, сейчас используются диски по 300GB)
с горячим подключением (при вставке диска после включения устройства
необходимо добавить устройство в таблицу и выполнить
функцию "Scan scsi drive"; все метаданные с диска стираются!);
интервал проверки "пропадания" дисков задаётся (вплоть до отключения по умолчанию);
также можно задать интервал проверки замены сбойного диска на новый (отключен по умолчанию);
нумерация сверху вниз, слева направо от 0 до 5 и от 8 до 13, HBA - 6 и 7, SAF-TE - 14;
в каждом отсеке индикаторы активности (зелёный) и сбоя (жёлтый);
через интерфейс управления можно идентифицировать диск
(включить его индикатор на заданное время, включить индикаторы всех дисков,
включить индикаторы всех дисков за исключением указанного), обновить прошивку и
узнать про каждый диск: слот (необходимо предварительно установить вручную), SCSI канал, SCSI ID,
ёмкость, скорость интерфейса, в какой логический диск включён, статус,
изготовитель, модель, серийный номер;
имеются утилиты форматирования и тестирования чтения и записи (только для свободных дисков);
можно задать верификацию записи при инициализации, восстановлении и обычной записи;
статус: доступен (ON-LINE), стратегический резерв (GLOBAL),
логический диск инициализируется (INITING), логический диск восстанавливается (REBUILD),
локальный резерв (STAND-BY), свободный диск (NEW DRV, превращается в FRMT DRV резервированием места),
остаток старого массива (USED DRV, превращается в FRMT DRV очисткой),
содержит данные контроллера (FRMT DRV, очищенный диск из старого массива, 64KB или 256MB,
только такие диски можно использовать при создании логического диска),
неисправный диск (BAD), диск отсутствует (ABSENT), диск пропал (MISSING или SB-MISS),
диск является копией другого диска (CLONE), SAF-TE (это не диск, а контроллер SAF-TE)
один или два RAID контроллера (с одинаковой прошивкой и настройкой)
с горячей заменой одного из них;
работают или в режиме одновременной работы (active-to-active,
необходимо статически разнести нагрузку по контроллерам)
или в режиме горячей замены (active-to-standby, один контроллер назначается главным/PID,
второй назначается запасным/SID и ждёт отказа главного);
процессор PPC750 и LSI 53C1010; до 128 LUN на выходе;
контроллер имеет уникальный идентификатор (устанавливается SAF-TE),
из которого формируются MAC адрес и WWN;
при замене одиночного контроллера новому экземпляру необходимо назначить
уникальный идентификатор сломанного (при указании идентификатора 0 считывается
серийный номер шасси);
контроллеру можно назначить имя;
индикаторы: активности (мигающий зелёный - занят делом,
зелёный - данные в кеше, жёлтый - нет питания, а в кеше есть данные),
состояние контроллера (мигающий зелёный - главный контроллер,
зелёный - запасной, жёлтый - проблема с контроллером),
состояние батарейки (зелёный - заряжена, мигающий зелёный - заряжается,
жёлтый - проблема);
контроллер имеет свои датчики температуры и напряжения (эти по шкале Цельсия),
границы допустимого настраиваются;
сзади до двух устройств мониторинга с горячей заменой
(event monitoring units, EMU, индикатор исправности (зелёный) и неисправности (жёлтый));
обслуживает журнал событий (состояние вентиляторов, БП, температуры в нескольких точках);
пропадает при отключении питания
на плате ввода/вывода используется 4 канала Ultra160 SCSI (общие на корзину),
все диски корзины могут быть подключены к одному каналу (CH0 для основной корзины,
CH2 для дополнительной; замкнуть разъёмы CH0 и SNGL BUS CONF)
или поделены поровну между каналами 0 и 2 (замкнуть разъёмы CH2 и DUAL BUS CONF);
серверы подключаются к каналам 1 (слева внизу, ID0 - контроллер)
и 3 (в середине вверху, ID1 - второй контроллер),
не более 10 метров для Ultra160 LVD и 1.5 метров для SCSI-40 SE;
разъёмы 68-pin;
канал 6 - RCCom (интерфейс с запасным контроллером);
канал 7 - управляющий Ethernet интерфейс;
индикаторы: терминатор, ошибки (мигающий зелёный - неверная коммутация,
жёлтый - сбой модуля ввода/вывода), одноканальная конфигурация (зелёный);
контроллер SAF-TE позволяет посмотреть состояние вентиляторов, БП,
7 датчиков температуры (по шкале Фаренгейта!) в нескольких точках, наличие дисков
каждый контроллер имеет ECC модуль памяти 512MB для кеширования данных;
кеширование записи (write-back) или отсутствие (write-throught);
один тип кеширования на всех до версии прошивки 4;
до версии 4 кеширование записи не отключается автоматически при неисправности батарейки (!);
в версии 4 можно задать триггеры отключения кеширования записи;
оптимизация последовательного (блоки 128КБ, до 2ТБ в версии 3 и до 64ТБ в версии 4)
или случайного доступа (блоки 32КБ, до 512ГБ в версии 3 и до 16ТБ в версии 4);
для изменения типа оптимизации требуется пересборка массива (!);
в версии 4 расщепили размер блока кеша и ширину страйпа;
для обеспечения сохранности кеша при отключении питания (до 72 часов) используется батарейка
(индикатор: зелёный - OK, мигает зелёным - заряжается, жёлтый - пора покупать);
индикация при telnet интерфейсе: "+" - OK, "-" - заряжается;
требуется менять каждые 2 года при температуре эксплуатации 25 градусов
(ежегодно при температуре 35 градусов); срок хранения - 3 года;
на батарейке указывается место изготовления,
время изготовления (номер года и номер недели) и серийный номер;
отказывается заряжаться при перегреве (54 градуса);
нашей батарейке более 5 лет и она пока работает
управление с помощью меню через RS-232 (DB-9 female, null modem,
38400, 8N1, без синхронизации, VT100, ANSI или IBM PC), нажать ^L;
входной экран показывает время, состояние батарейки, состояние кеша,
скорость обмена в МБ в секунду;
возврат на уровень выше в меню - Esc;
выбор пункта меню - Return или ввод капитализированной буквы;
без аутентификации (изменено в прошивке 4)
Ethernet канал для управления на каждом контроллере
(10/100BASE-T, индикаторы подключения (оранжевый) и активности (зелёный),
адрес надо задать вручную через RS-232 или через SCSI соединение,
в версии 4 вместо адреса можно указать DHCP (по умолчанию),
"configure network-interface lan0 dhcp",
требуется сброс контроллера (!);
методы управления:
telnet (меню, см. выше);
CLI с помощью специального ПО sccli (есть help и "show configuration",
которая расскажет об устройстве и его составляющих всё
и "show events", которая наябедничает об истории устройства;
доступ через SCSI (in-band) или TCP/IP (out-band);
можно использовать из скриптов),
HTTP/HTTPS (фиктивный - подсовывается страницу (esm.html),
которая пытается запустить Java 1.2 аплет с управляющего компьютера,
на котором предварительно необходимо установить управляющее ПО;
падает с ошибкой - ava.lang.ExceptionInitializer)
FTP (пользователь root, пассивный режим не поддерживается)
SSH (в качестве имени пользователя необходимо указывать имя-устройства;
HostKeyAlgorithms ssh-rsa; RSAAuthentication yes; меню, см выше)
PriAgentAll (требуется для ssagent и CLI)
SNMPv1 или SNMPv2c (SUN-STOREDGE-3310-MIB.txt, модуль storEdge3310, пароль устройства - имя комьюнити read/write,
здесь больше параметров, чем в прочих местах,
для настройки trap (SNMPv1, комьюнити public) поместить agent.ini)
возможно подключение до 2 дополнительных дисковых корзин (SCSI Ultra160 LVD);
при подключении к двум серверам можно иметь только одну дополнительную корзину;
пароль доступа администратора общий на все интерфейсы;
суммарная длина имени контроллера и пароля не должна превышать 16 символов
(32 символов в версии 4);
можно настроить, чтобы устройство спрашивало пароль при каждом изменении конфигурации
имеется журнал событий (до 100 извещений и 100 аварийных сообщений),
хранится в ОЗУ (пропадает при отключении питания и сбросе контроллера);
доступен по HTTP/HTTPS, telnet, CLI;
при сбросе контроллера копии сообщений (до 512) записывается на диск и доступна из CLI по команде
"show persistent-events" (можно задавать интервал дат);
список в "RAID firmware User Guide. Appendix D"
диски необходимо объединить в нумерованные (можно задать имя,
контроллер генерирует также идентификатор)
группы дисков (логические диски, виртуальные диски),
до 8 логических дисков на канал, до 36 (2 для RAID-1, 31 для RAID-5) дисков в группе;
логический диск должен содержать достаточное количество дисков для организации массива
указанного уровня (RAID-0 и RAID-1 - от 2 дисков, RAID-3 и RAID-5 - от 3 дисков);
логический диск может содержать больше дисков, чем это необходимо для массива заказанного уровня -
содержимое массива равномерно распределяется по всем дискам группы (например, можно
сделать RAID-5 на 7 дисках);
при создании RAID-1 из 4 и более дисков создаётся RAID-1+0;
диски в группе должны быть одного размера и скорости (точнее говоря, от каждого диска
будет использоваться часть, соответствующая размеру минимального диска);
можно взять не весь объём дисков;
можно можно только увеличивать (после добавления новых дисков, замены на диски большего размера),
без остановки работы (но создаётся новый раздел логического диска, т.е. новый LUN);
тип кеширования (до версии 4 - общий на всё устройство; изменить нельзя):
тип кеширования записи (до версии 4 - общий на всё устройство):
write-back - оповещать о завершении записи немедленно после попадания
данных в буфер; write-through - ожидать записи данных на диск;
в версии 4 можно задать условия при которых контроллер будет переходить к "честной" записи
контроллер может возвращаться к кешированию записи при возвращении условий к норме);
последовательный доступ (S) или произвольный (R);
инициализация может идти в фоновом режиме (Online, только с прошивкой 4.x);
или предварительном (Offline, быстрее);
при создании можно указать размер полоски (Chunk Size; только с прошивкой 4.x),
изменить нельзя;
при создании указывается обслуживание главным или запасным контроллером (можно изменить);
после создания логического диска необходимо сбросить этот контроллер (со всеми вытекающими последствиями);
группе можно приписать выделенный запасной диск (до ?);
новые диски можно добавлять в группу (для RAID-1 парами),
при этом на логическом диске образуется новый раздел (а это новый LUN!),
часть данных мигрирует на новый диск,
освобождая равное свободное место на каждом диске нового состава группы,
только RAID-0, RAID-3 и RAID-5, остановить процесс нельзя,
при неожиданном выключении питания необходимо возобновлять вручную;
удалять диски из группы нельзя, но есть утилита копирования данных и замены диска
(позволяет заменить все диски группа на диски большего размера
с последующим расширением логического диска);
также есть утилиты регенерации контрольных сумм
(проверка контрольных сумм RAID-3 и RAID-5 с возможностью остановки при нахождении ошибки или перезаписи)
и сканирования носителя (Media scan; можно задать приоритет и повторяемость);
после создания логическому диску можно дать имя (видно только при настройке);
состояния: INITING (идёт инициализация),
INVALID (текущий режим кеширования не соответствует режиму при создании массива),
GOOD (всё хорошо), DRV FAILED (не работает 1 диск),
FATAL FAIL (не работают 2 диска, логический диск развалился),
REBUILDING (восстановление массива), DRV ABSENT (отсутствует 1 диск),
INCOMPLETE (отсутствует 2 диска?)
логические диски (до 8, не обязательно одного уровня RAID) могут объединяться в логические тома
для поддержки RAID-30 и RAID-50 (а также экзотических смешанных типов);
фирма Sun не рекомендует пользоваться логическими томами
логические диски и логические тома могут делиться на разделы (до 32 разделов)
или отдаваться серверу целиком;
изменение размера раздела ведёт к потере данных на нём (!)
после создания раздел, логический том или логический диск необходимо сделать видимым серверу;
этот процесс называется привязкой (mapping);
логический диск (раздел), логический том или физическое устройство,
привязанные к определённому контроллеру и каналу (ID и CH),
отображаются на ID/LUN, видимый серверу;
для сервера каждый раздел (или логический диск целиком или логический том)
выглядит как логическое устройство (точнее, как LUN, а каждый порт - как исполнитель (target) SCSI);
до 128 LUN на устройство; размер LUN - до 2 TB или 512 ГБ в зависимости от типа кеширования (!);
кстати, Solaris 2.8 всё равно не поддерживает устройства ёмкостью более 1ТБ;
один и тот же раздел/диск/том может быть отображён на другой LUN с другого канала
(требуется поддержка multipath);
рекомендуется использовать LUN 0 для каждого ID;
после отображения необходимо сбросить контроллер;
добавление раздела ведёт к обнулению таблицы отображения всех LUN (!);
есть фильтр по хостам
настройки контроллера записываются в NVRAM;
настройки логического диска записываются на логический диск (резервируется 250MB!);
настройки контроллера можно (нужно) сохранить на все диски (в резервируемую область)
и восстановить при необходимости
(ответственность за неправильное восстановление при другой настройке каналов лежит на вас),
логические диски не создаются автоматически;
имеется возможность удалённо выключить, перезагрузить или сбросить
(содержимое кеша не сохраняется!) контроллер
запасные (Hot Spare) диски (до ? общих для всех логических дисков или до ? выделенных на логический диск),
при сбое одного из логических дисков ищется сначала выделенный запасной диск,
затем общий запасной диск и производится автоматическое восстановление массива;
приоритет восстановления задаётся;
размер запасного диска д.б. не меньше размера дисков группы;
система может автоматически назначить свободный подходящий диск запасным при отсутствии выделенного
или глобального запасного диска (это позволяет просто заменить вышедший из строй диск;
необходимо включить Periodic Auto-Detect Failure Drive Swap Check Time);
RAID 1+0 допускает параллельное восстановление;
можно вручную запустить процедуру копирования (clone) данных с подозрительного диска
на запасной (запасной диск может затем заменить исходный или стать его клоном);
могут учитываться данные SMART (запись сообщения в журнал, автоматическое клонирование данных
на запасной диск "про запас", автоматическое клонирование данных на запасной диск и замена диска)
обновление прошивки (ZMODEM, CLI in-band SCSI) контроллера
без прерывания работы в двухконтроллерной конфигурации
(обновлённая прошивка автоматически заливается на второй контроллер);
можно также обновлять прошивки дисков и SAF-TE;
при обновлении с версии 3 до версии 4 есть отдельная инструкция!
поддержка Solaris 8/9/10 (sparx/x86), Red Hat AS 3.0, SLES 9.0, AIX, HP-UX
Sun StorEdge Configuration Service (пакеты SUNWscsd и SUNWscsu в версии 1.3;
пакет SUNWsscs в версии 2.4; пакеты SUNWscsd.rpm и SUNWscsu.rpm) - настройка, мониторинг и обслуживание;
требуется Java RE от 1.2.2 по 1.5 (тупо проверяется "java -version"; установил локально 1.5);
состоит из агента (ssmon и ssserver, устанавливается на подключённый к устройству сервер, демон)
и консоли (устанавливается на компьютере администратора, до 10 консолей на агент,
до 32 массивов на консоль, требуются права root);
консоль невозможно использовать по сети (не всё прорисовывается);
для получения извещений консоль должна быть всегда запущена или должен использоваться Diagnostic Reporter;
после обновления прошивки до версии 4 (теперь устройство самостоятельно
может извещать о событиях по SNMP и SMTP) потребность в sscs отпала;
после установки пакета:
установить пароли пользователям ssmon (мониторинг,
в файле /opt/SUNWsscs/sscsconsole/svrlist.dat содержится слегка зашифрованный пароль ssmon),
ssadmin (обслуживание) и ssconfig (настройка),
запустить /opt/SUNWsscs/sscsconsole/config_sscon для указания браузера,
/etc/init.d/ssagent enable start
Sun StorEdge CLI (в версии 1.3 в пакете SUNWsccli;
в версии 2.4 в пакете SUNWsscs; /opt/SUNWsscs/sbin/sccli; пакет SUNWsccli.rpm для Linux) -
управление массивом из командной строки по интерфейсу SCSI
(при локальном подключении, требуется root) или TCP/IP;
IP адрес [:порт], DNS имя или имя SCSI устройства указываются в качетве первого параметра;
нельзя использовать несколько CLI к одному массиву одновременно или запускать CLI
одновременно с Sun StorEdge Configuration Service;
пароль к массиву не всегда спрашивается при любом типе подключения (!);
можно использовать интерактивно или в скриптах, задавая команду и параметры в строке вызова
("/opt/SUNWsscs/sbin/sccli /dev/rdsk/c3t0d0s2 show
{logical-drives|disks|peripheral-device-status|event|configuration [--xml имя-файла]}";
DTD описан в документации);
ключи:
--help
--list (выдать список локально подсоединённых устройств StorEdge)
--no (автоматически отвечать "нет" на все запросы)
--yes (автоматически отвечать "да" на все запросы)
--oob (использовать интерфейс TCP/IP)
--password пароль
Sun StorEdge Diagnostic Reporter (в версии 1.3 пакеты SUNWscsa и SUNWscui;
в версии 2.4 пакет SUNWsscs; пакеты SUNWscsa и SUNWscui) -
демон (Diagnostic Reporter Agent, ssdgrptd) в фоновом режиме получает
сообщения от SSCS Agent и рассылает их по e-mail;
Diagnostic Reporter Config Tool - позволяет настраивать типы сообщений и адреса;
Diagnostic Reporter Mail Receiver Tool - почтовый клиент для тех, у кого нет настоящего;
обеспечение автоматического запуска /etc/init.d/ssdgrptd enable start;
после обновления прошивки до версии 4 (теперь устройство самостоятельно
может извещать о событиях по SNMP и SMTP) потребность в sscs отпала;
Изменения в версии прошивки 4:
получение адреса по DHCP - установить можно через CLI или ssconsole,
но требуется сброс контроллера
максимальный размер логического диска увеличен до 64ТБ или 16ТБ
в зависимости от типа кеширования
размер полоски (stripe) и политика кеширования записи отдельно для каждого логического диска
функция последовательного сканирования с попыткой исправления или восстановления массива
при авариях контроллер может посылать SNMP trap и почтовые сообщения
дополнительные управляющие протоколы (возможно установить список разрешённых протоколов):
SSH, FTP, SNMP
отключение по неактивности telnet
фоновая инициализация и расширение
автоматическое отключение кеширования записи при сбоях БП,
вентилятора, батарейки, перегреве и т.п.
автоматическое выключение при перегреве и т.д.
SMART включён по умолчанию
изменение режима кеширования не требует пересборки логических дисков
Для обновления с версии 3 до версии 4 (версия 4.21E, 113722-17.zip)
необходимо использовать специальную инструкцию (58 страниц) и скрипт s3kdlres
обновить версию safte до 1170 (взять из 113722-09, [размонтировать,]
остановить ssagent и ssmon, sscli ip-адрес,
"download safte-firmware saftefw_3310_1170.bin", show safte,
повторить загрузку)
подготовить и включить соединение по RS-232 (не понадобилось)
резервное копирование данных (не понадобилось)
размонтировать, остановить ssagent и ssmon
сохранить настройки: "sscli show configuration before.txt"
скрипт s3kdlres (откомпилированный скрипт на perl)
позволяет обновить прошивку через SCSI (потребуется вручную
восстановить настройки отображения LUN) или TCP/IP (потребуется вручную
восстановить настройки TCP/IP):
вернуться к скрипту и ответить "yes" - облом, скрипт завис на ожидании просле прожига firmware
дальше скрипт должен был очистить nvram, перезагрузить контроллер,
дождаться пока я настрою сеть и восстановить остальные параметры,
однако перезагрузка произошла автоматически до очистки nvram
sscli show configuration after.txt
сравнить и поправить
версия NVRAM осталась 3.X (Current NVRAM Version), при этом "ID of NVRAM Defaults 421E" (?!)
проблем не заметил, но желательно продолжить процесс вручную с точки очистки nvram
(./s3kdlres файл.xml --device=ip-адрес --password=пароль --restore=all),
да я уже успел изменений внести ...
Настройка извещений 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 выпускает MSA2000 - младшее семейство автономных дисковых массивов,
монтируемых в стойку и подключаемых к серверам с помощью интерфейса iSCSI
или Fibre-Channel (в девичестве Dot Hill).
Например, модель MSA 2012i (Dot Hill 2330) представляет собой
дисковую корзину, монтируемую в стойку (2U),
индикаторы: Tray/Enclosure ID (контроллер - 0, дополнительные корзины - не 0),
наличие питания, поиска устройства (UID), аварийной ситуации
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них);
совмещены с вентиляторными блоками по 2 вентилятора, питающихся от материнской платы;
индикаторы подачи питания и неисправности; выключатель
12 отсеков для дисков SAS/SATA-II в любом сочетании (3.5", высота 1", до 450GB/1TB)
с горячим подключением (по одному диску за раз);
нумерация с нуля сверху вниз, слева направо;
диски можно использовать только специальные - типа MSA2 (2TB HDS722020ALA330 был принят);
в каждом отсеке индикаторы: идентификация (голубой, можно зажечь для обнаружения диска),
сбой (оранжевый, мигает - предупреждение, горит - отказ),
активность (зелёный, при восстановлении мигает с частотой 1 Гц);
через интерфейс управления можно
узнать про каждый диск: статус, тип, скорость, изготовитель, номер корзины, слот,
модель, серийный номер, версию прошивки (и поменять её!), WWN, ёмкость,
наличие ошибок (подозрительно - одни нули при наличии записи в журнале);
состояния НЖМД: доступен, часть группы (vdisk), стратегический резерв, остаток (leftover,
для использования такого диска необходимо очистить метаданные; диск может переходить
в это состояние после неисправимых ошибок носителя);
учитываются (и пишутся в журнал) данные SMART (можно отключить),
из CLI недоступны (в веб-интерфейсе в разделе статистика)
один или два RAID контроллера (LUN приписывается к контроллеру вручную
или автоматически балансировщиком загрузки),
процессор Celeron 566MHz;
индикаторы: поиска устройства (System Locator), возможность извлечь контроллер,
сбой контроллера, работоспособность контроллера (FRU Status),
состояние кеша, подключение клиентов (host activity), подключение дополнительной корзины;
контроллеры соединены шиной PCI Express (для обмена данными из кеша записи);
можно заменить контроллер (предварительно выключив) без остановки всего устройства;
если контроллер один, но получен с настройками "Active/Active", то необходимо сбросить настройки и перезагрузиться
(триггер отключение кеширования записи считает второй контроллер неисправным,
что можно понять только из CLI: show cache-parameters)
каждый контроллер имеет 2 порта Ethernet:
только 1Gb (однако согласование скорости в настройках есть);
только через коммутатор; слева вверху port 0; правее - port 1;
индикаторы подключения и активности;
должны быть в разных подсетях и согласованы со вторым контроллером корзины - используются для multipath;
умеет аутентификацию CHAP (одностороннюю и двухстороннюю),
согласование скорости, Jumbo кадры, iSNS;
каждый контроллер имеет ECC модуль памяти 1024MB
для кеширования данных (512MB на чтение, 512MB на запись, из которых 256MB под локальный кеш,
а оставшиеся 256MB на зеркало кеша второго контроллера (SimulCache) - отключаемо
(режим independent cache performance mode) с перезагрузкой контроллеров);
модуль из конденсатора и флеш-памяти для обеспечения сохранности кеша при отключении питания
Ethernet канал для управления на каждом контроллере
(10/100BASE-T, индикаторы подключения и активности, адрес можно получить по DHCP или задать вручную;
по умолчанию - 10.0.0.2/24 и 10.0.0.3/24 со шлюзом 10.0.0.1):
telnet (CLI, есть help и "show config", которая расскажет об устройстве и его составляющих всё
и "show events", которая наябедничает об истории устройства),
SSH (только интерактивный режим! изготовитель советует использовать expect,
также требуется отключить pager: "set cli-parameters pager off"),
HTTP/HTTPS (SMU - System Management Utility, есть поддержка IE 5.5 и Firefox 1.0.7,
отключить блокировку выпрыгивающих окошек, куки и анимации;
по умолчанию, страницы перерисовываются слишком часто, но это можно настроить;
хочет работать с SSL/TLS, но не может - после регистрации лучше переключиться в HTTP),
SMI-S (?), FTP, SES (safte-monitor?), CAPI,
SNMP-1/SNMP-2c
(задаются - в настройке Event - до трёх TRAP серверов (фильтрация настраивается),
имя комьюнити для чтения (public) и записи (private),
стандартные sysContact, sysName, sysLocation можно изменять; snmpwalk .iso захлёбывается;
MIB: MIB-II, Fibre Alliance SNMP MIB 2.2
(кроме секции статистики, описание в Reference Guide) и msa2000traps.mib - никакой информации о дисках и массивах,
даже порты не описаны, OID плавающие);
IP параметры задаются явно или с использованием DHCP;
управление любым контроллером доступно из его соседа;
управление CLI через RS-232 (mini DB-9), VT-100/ANSI, 115200, 8N1, без синхронизации), нажать Enter;
без аутентификации, что позволяет отредактировать список пользователей
сервисный порт RS-232 (3.5mm jack!)
возможно подключение до 3 дополнительных дисковых корзин (4X SAS, 12Gbps, SFF8470);
количество контроллеров должно соответствовать (дополнительные корзины необходимо
включить до основной)
датчики температуры платы, процессора, БП, напряжений, состояний блоков питания,
вращения вентиляторов доступны через интерфейс управления
пароль доступа администратора (manage/!manage; monitor/!monitor; ftp/flash) общий на все интерфейсы;
авторизация в HTTP производится по IP адресу (действия, произведённые в одном браузере
немедленно отображаются в другом);
через некоторое время бездействия пароль требуется ввести заново (интервал можно изменить или отменить);
можно добавлять пользователей (до 10) и раздавать им роли
(Monitor или Manage), уровень возможностей (Standard, Advanced, Diagnostic),
допустимый интерфейс (WEB, CLI, FTP);
стандартный пользователь (manage) имеет не все права (Standard);
параллельные сеансы управления допускаются только с одного IP;
возможно до 5 параллельных сеансов типа Monitor;
сообщения о событиях по SMTP; задаётся IP адрес SMTP, имя отправителя,
имена и адреса получателей, какие сообщения посылать, есть тестовое сообщение;
зависание почтового сервера привело к глюкам контролера управоения (restart mc a)
поддерживаемые типы RAID: Non-RAID, RAID-0, RAID-1, RAID-1+0 (RAID-10, RAID-1 объединённые в RAID-0),
RAID-3, RAID-5,
RAID-6 (ADG - Advanced Data Guarding),
RAID-50 (RAID-5 объединённые в RAID-0)
собственная реализация device-mapper-multipath для Linux (HPDM)
имеется журнал событий (2500 записей), хранится во флеш, доступен по FTP, HTTP/HTTPS, telnet;
коды ошибок и рекомендуемые действия описаны в Reference Guide
умеет брать время с одного NTP сервера и учитывать зону, летнее время для Москвы не учитывает;
может использовать широковещательные пакеты;
при недоступности NTP сервера переходит на локальные часы
диски одного типа (SAS/SATA) необходимо объединить в поименованные (до 17 символов, можно изменять)
группы дисков (vdisk, виртуальные диски),
до 16 групп, до 16 (2 для RAID-1, 32 для RAID-50) дисков в группе;
группа дисков должна содержать достаточное количество дисков для организации массива
указанного уровня (RAID-0 и RAID-1 - от 2 дисков, RAID-3 и RAID-5 - от 3 дисков,
RAID-6 и RAID-1+0 - от 4 дисков, RAID-50 - от 6 дисков);
группа может содержать больше дисков, чем это необходимо для массива заказанного уровня -
содержимое массива равномерно распределяется по всем дискам группы (например, можно
сделать RAID-5 на 7 дисках);
диски в группе должны быть одного размера и скорости (точнее говоря, от каждого диска
будет использоваться часть, соответствующая размеру минимального диска);
[полу]автоматический и ручной режим создания виртуальных дисков;
инициализация может идти в фоновом режиме (Online, в общих настройках задаётся приоритет;
очень медленно - более 2 суток на RAID-6 из 12 дисков при приоритете High)
или предварительном (Offline, быстрее);
при создании можно указать размер полоски (Chunk Size; 16KB, 32KB, 64KB (по умолчанию)),
изменить нельзя;
группе можно приписать выделенный запасной диск (до 4);
новые диски можно добавлять в группу (только одна группа одновременно),
при этом часть данных мигрирует на новый диск,
освобождая равное свободное место на каждом диске нового состава группы
(неразумно медленно - более 10 суток на добавление диска 750GB к RAID-0,
остановить нельзя - только удалением всей группы);
удалять диски из группы нельзя;
все тома на виртуальном диске должны быть одного уровня RAID;
виртуальный диск и все его LUN приписываются одному контроллеру;
при поломке контроллера его виртуальные диски переписываются на оставшийся;
принадлежность можно изменить, но с прерыванием обслуживания
(требуется переназначить LUN и заново сканировать устройства);
состояния vdisk: Online (для RAID-0 и Non-RAID), FTOL (Fault Tolerant, всё хорошо),
Fault Tolerant Degraded (отсутствует 1 диск в RAID-6), Critical (инициализация,
перестройка или необходимость перестройки),
Offline/Down/FATAL FAIL (развалился, можно попытаться оживить командой "Trust VDISK"),
Quarantined (при загрузке обнаружилась недостача дисков в группе;
выходит из этого состояния автоматически при обнаружении недостающего диска или вручную;
необходима осторожность!)
RAID массив называется томом (Volume, LUN)
и создаётся из части дискового пространства группы дисков (до ? массивов на группу);
для сервера каждый набор томов выглядит как логическое устройство (точнее, как LUN,
а каждый порт - как исполнитель (target) SCSI);
до 256 LUN на устройство (2 контроллера); размер LUN - до 16 TB;
поддержка разделов более 2 ТБ за счёт 64-битной адресации LBA (Unix, Linux, MS Windows2003SP1), до 512ТБ?;
после создания том необходимо сделать видимым (mapping);
параметры тома:
может иметь имя (до 20 символов, только при фоновой инициалицации),
имена не видны клиентским системам, можно изменить
объём (можно только увеличивать, без остановки работы)
LUN
тип кеширования упреждающего чтения (включается после 2 последовательных операций чтения;
можно отключить; от 64KB до 32MB (по степеням двойки) или Maximum (256MB); по умолчанию - 64KB);
алгоритм стандартный (блоки по 32KB) или агрессивный (для потоковых приложений, блоки по 128KB)
тип кеширования записи (write-back - оповещать о завершении записи немедленно после попадания
данных в буфер; write-through - ожидать записи данных на диск;
можно задать условия при которых контроллер будет переходить к "честной" записи
(General Config - System Configuration - Advanced Options - SCSI Configuration):
сбой контроллера, сбой конденсатора, сбой питания, сбой блока питания, сбой вентилятора, перегрев;
контроллер может возвращаться к кешированию записи при возвращении условий к норме)
управления очередью команд нет
отображение (mapping) и права доступа (read-write, read-only, masked)
для определённых хостов (по IQN - пополняется автоматически при подключении инициаторов -
и синониму - до 15 символов, рекомендуется назначить для сохранения информации
о привязке между загрузками в GENERAL CONFIG - manage host list)
с указанием LUN и прав доступа на чтение и запись для каждого порта контроллера, владеющего виртуальным диском;
к одному LUN могут иметь доступ несколько хостов (в т.ч. на запись),
есть хост ANY (удалить его потом невозможно!);
при создании можно задать LUN и права доступа по умолчанию для каждого порта;
отображение хранится в метаданных на дисках;
атрибут прав доступа должен проверяться ОС инициатора, Linux не проверяет и получает ошибки записи?;
изменения вступают в силу немедленно!
настройки массивов записываются только в начало дисков в виде метаданных,
что позволяет при необходимости перенести группу дисков в другое устройство;
оставшийся от старого массива диск будет в состоянии
LEFTOVER пока не почистить метаданные
настройки контроллера (не массивов!) можно сохранить в файл и восстановить при необходимости
имеется возможность удалённо выключить или перезагрузить контроллер
запасные (Hot Spare) диски (до 8 общих для всех групп или до 4 выделенных на группу),
при сбое одного из массивов
происходит автоматическое перемещение общего запасного диска в группу и восстановление массива;
размер запасного диска д.б. не меньше размера дисков группы;
система может автоматически назначить свободный подходящий диск запасным при отсутствии выделенного
или глобального запасного диска (это позволяет просто заменить вышедший из строй диск;
необходимо включить Dynamic Spare );
приоритет при поиске: выделенный запасной диск, общий запасной диск, динамически назначаемый запасной диск
имеется процедура верификации виртуального диска (RAID-5 и RAID-6; чтение блоков данных,
перевычисление и сравнение контрольных сумм; RAID-1 и RAID-10: сравнение) по запросу (можно остановить)
и с использованием планировщика, общие правила для всех, настроить
планировщик и приоритет нельзя
процедура постоянного сканирования дисков в фоновом режиме (scrub)
для поиска нечитающихся или неправильно читающихся секторов (10 часов на RAID-6 из 12 SATA дисков по 750GB);
в веб-интерфейсе один выключатель на всех, ни интервала, ни планировщика;
в CLI есть команды "scrub vdisk" и "set job-parameters";
авторы документации путаются между scrub (чтение носителя) и verify (сравнение контрольных сумм)
механизм изоляции устройств, вызывающих большой уровень ошибок PHY;
включить обратно можно только перезагрузкой; Diagnostic Tools - Expander Isolation
позволяет сбросить счётчик ошибок, отключиь/подключить канал, включить/отключить изоляцию ошибок
возможность блокировки выдаваемой хостом команды отключения кеша записи и синхронизации кеша
обновление прошивки без прерывания работы по FTP или HTTP/HTTPS
(обновлённая прошивка автоматически заливается на второй контроллер)
контроллер может самостоятельно делать снимки (snapshot, виртуальные тома)
главного тома (master volume - том, для которого разрешено делать снимки, до 16);
место под снимки берётся из общего пула (snap pool, до 16 пулов, до 16 главных томов на пул);
пул и главный том должны быть на одном контроллере, но могут быть на разных виртуальных дисках;
виртуальным томам можно задавать LUN и привязывать их к хостам как обычные тома, в т.ч. на запись;
можно задать действия, которые необходимо предпринять при достижении заполнения в 75%, 90% и 99%
(известить, удалить самый старый снимок, удалить все снимки, увеличить размер пула, остановить запись);
можно откатить изменения, сделанные на снимке;
можно откатить состояние главного тома на момент снимка или слить его с изменённым снимком;
требуется доплатить за лицензию - лицензия привязывается к серийному номеру корзины и версии прошивки
и определяет максимально возможное количество снимков
контроллер может самостоятельно делать копии (clone) главного тома или снимка на текущий момент
(делается временный снимок);
требуется доплатить за лицензию (лицензия привязывается к серийному номеру корзины и версии прошивки);
копии являются независимыми от источника в отличие от снимков;
копии могут быть другого уровня RAID
планировщик для создания снимков и копий
большое количество доступной информации о состоянии SAS/SATA каналов
имеется возможность получения статистики о количество запросов на
чтение/запись с разбиением по количеству секторов в запросе, но суммы не совпадают
(где-то он путается, но потыркав в логические диски можно получить правдоподобный результат)
дополнительно закупаемое ПО Storage Mirroring позволяет обеспечить
непрерывную репликацию данных (CDP),
пакет StorageMirroring (StorageMirroring-4.4.1.0.1958-1.rhel4,
/usr/share/doc/StorageWorks/StorageMirroring/)
Обещания по производительности (использовалась 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 выпускает MSA2000 - младшее семейство автономных дисковых массивов,
монтируемых в стойку и подключаемых к серверам с помощью интерфейса iSCSI
или Fibre-Channel (в девичестве Dot Hill).
Например, модель MSA 2012fc G2 (контроллер MSA 2312fc G2, Dot Hill 5730) представляет собой
дисковую корзину, монтируемую в стойку (2U), звучка нет,
индикаторы: Tray/Enclosure ID (контроллер - 1, дополнительные корзины - не 1),
поиска устройства (UID, голубой), аварийной ситуации (оранжевый, не горит при сбое отдельного диска),
питания (зелёный)
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них, модель 481320-001);
совмещены с вентиляторными блоками по 2 вентилятора (от 4000 до 6000 RPM), питающихся от материнской платы;
датчики напряжений, тока, температуры и скорости вращения вентиляторов;
индикаторы подачи питания и неисправности; выключатель
12 отсеков для дисков SAS/SATA-II в любом сочетании (3.5", высота 1", до 450GB/1TB)
с горячим подключением (по одному диску за раз?);
нумерация с нуля сверху вниз, слева направо;
диски можно использовать только специальные - типа MSA2 (в реальности - это обычный Seagate ST31000340NS SN06 с наклейкой),
однако "левый" Hitachi HUA72101 (UltraStar на 1ТБ) был воспринят (только надо иметь корзинку и соответствующий адаптер),
3TB Hitachi HDS723030ALA640 воспринимается как 2.2TB;
в каждом отсеке индикаторы: идентификация (голубой, можно зажечь для обнаружения диска),
сбой (оранжевый, мигает - предупреждение, горит - отказ),
активность (зелёный, при восстановлении мигает с частотой 1 Гц);
через интерфейс управления можно
узнать про каждый диск: статус, состояние, тип, номер корзины, слот,
модель, серийный номер, версию прошивки, ёмкость,
наличие ошибок;
типы: SAS (2 порта), SAS-S (один порт), SATA (2 порта), SATA-S (один порт);
состояния: доступен (AVAIL), часть группы (VDISK, VDISK INIT, VDISK SPARE),
стратегический резерв (Global Spare, GLOBAL SP), остаток (leftover, LEFTOVR,
для использования такого диска необходимо очистить метаданные; диск может переходить
в это состояние после неисправимых ошибок носителя);
задания: EXPD (расширение группы дисков), INIT, RCON (восстановление группы дисков),
VRFY (группа дисков проверяется), VRSC (проверка дисков);
учитываются (и пишутся в журнал) данные SMART (можно отключить)
один или два RAID контроллера;
LUN (до 512) приписывается к контроллеру вручную или автоматически (не советую) балансировщиком загрузки;
процессор Turion MT32 1800MHz;
индикаторы: поиска устройства (System Locator, белый), возможность извлечь контроллер (голубой),
сбой контроллера (оранжевый), работоспособность контроллера (FRU Status, зелёный),
состояние кеша (зелёный горит - есть данные, мигает - ждёт возможности восстановления),
подключение клиентов (host activity, зелёный), подключение дополнительной корзины;
?контроллеры соединены шиной PCI Express или PCI-X 100 MHz (для обмена данными из кеша записи);
можно заменить контроллер (предварительно выключив) без остановки всего устройства;
состоит из контроллера управления (Management Controller, MC) и контроллера хранения (Storage Controller, SC, LSI1068)
каждый контроллер имеет 2 порта FC (ISP6422, SFP AVAGO AFBR-57R5APZ,
Shortwave laser without OFC, 150 м (MM,50m) 70м (MM,62.5m)):
автоопределение скорости или ручной выбор (только 2Gb или 4Gb);
выбор типа подключения (кольцо или точка-точка); для кольца можно явно задать Loop ID (от 0 до 125);
слева вверху port A1; правее - port A2;
индикаторы скорости 2 Gb или 4 Gb (мигают - нет подключения, не горят - 1 Gb);
умеет аутентификацию CHAP (одностороннюю и двухстороннюю);
до 64 хостов; до 256 LUN
каждый контроллер имеет ECC модуль памяти 1024 MB DDR 133 MHz (разогнано до 150?)
? для кеширования данных (?MB на чтение, ?MB на запись, из которых ?MB под локальный кеш,
? а оставшиеся ?MB на зеркало кеша второго контроллера (SimulCache) - отключаемо
("set cache-parameters independent enabled") с перезагрузкой контроллеров (перерыв в обслуживании 5 минут));
модуль из конденсатора и флеш-памяти (Compact Flash - снимаемый, SILICONSYSTEMS UDMA 512MB-4103)
для обеспечения сохранности кеша при отключении питания (60 секунд)
(зарядка после включения устройства нестабильна);
модуль может быть переставлен при сбое контроллера в новый контроллер для последующей записи на диск;
Ethernet канал для управления на каждом контроллере
(10/100BASE-T, индикаторы подключения и активности, адрес можно получить по DHCP или задать вручную;
по умолчанию - 10.0.0.2/24 и 10.0.0.3/24 со шлюзом 10.0.0.1):
telnet (CLI, есть help и "show config", которая расскажет об устройстве и его составляющих всё
и "show events", которая наябедничает об истории устройства, timeout - 15 минут),
SSH (только интерактивный режим! изготовитель советует использовать expect,
также требуется отключить pager: "set cli-parameters pager off"),
HTTP/HTTPS (совсем другой интерфейс по сравнению с MSA 2000i; требуется большое разрешение экрана;
часть доступных там через HTTP возможностей теперь требует доступа к CLI;
канал нагружается до 500 Kbps;
SMU - System Management Utility (aka WBI - web-browser interface), есть поддержка IE 7 и Firefox 1.5,
отключить блокировку выпрыгивающих окошек, куки и анимации;
данные обновляются в реальном времени; нельзя использовать кнопки браузера вперёд/назад;
не даёт браузеру запомнить пароль; HTTPS глючит; SMU общается с Management Controller, а тот со Storage Controller),
SMIS (?), FTP (заливка прошивки и получение отладочной информации),
SES по FC (safte-monitor не работает), CAPI (Configuration Application Programming Interface) по FC,
SNMP-1/SNMP-2c
(задаются - в настройке Event - до трёх TRAP серверов;
фильтрация уровня событий настраивается - informational, minor, major и critical;
имя комьюнити для чтения (public) и записи (private),
стандартные sysContact, sysName, sysLocation можно изменять;
MIB: MIB-II, Fibre Alliance SNMP MIB 2.2,
msa2000traps.mib (никакой информации о дисках и массивах, описаны лишь порты и сенсоры,
OID плавающие в зависимости от серийного номера);
управление любым контроллером доступно из его соседа
управление CLI через RS-232 (mini DB-9, VT-100/ANSI, 115200, 8N1, без синхронизации), нажать Enter;
без аутентификации, что позволяет отредактировать список пользователей
сервисный порт RS-232 (3.5mm jack!)
возможно подключение до 4 дополнительных дисковых корзин (mini 4X SAS, 12Gbps, SFF8088);
количество контроллеров должно соответствовать (дополнительные корзины необходимо
включить до основной)
датчики температуры платы, процессора, БП, напряжений, состояний блоков питания,
вращения вентиляторов доступны через интерфейс управления CLI
пароль доступа администратора (manage/!manage; monitor/!monitor; ftp/flash) общий на все интерфейсы;
пароль не может содержать запятые, кавычки и обратую косую черту;
авторизация в HTTP производится по IP адресу (действия, произведённые в одном браузере
немедленно отображаются в другом);
через некоторое время бездействия пароль требуется ввести заново (интервал можно изменить или отменить);
можно добавлять пользователей (до 12) и раздавать им роли
(Monitor или Manage), уровень возможностей (Standard, Advanced, Diagnostic; используется только Standard),
допустимый интерфейс (WBI, CLI, FTP), округлять число до 1000 или 1024,
сколько выводить знаков после запятой и прочие настройки интерфейса;
сообщения о событиях по SMTP; задаётся IP адрес SMTP сервера и шлюза, почтовое имя отправителя и домен,
до 4 адресов получателей, какие сообщения посылать;
зависание почтового сервера привело к глюкам контролера управоения (restart mc a)
поддерживаемые типы RAID: Non-RAID, RAID-0, RAID-1, RAID-1+0 (RAID-10, RAID-1 объединённые в RAID-0),
RAID-3, RAID-5,
RAID-6 (ADG - Advanced Data Guarding),
RAID-50 (RAID-5 объединённые в RAID-0)
собственная реализация device-mapper-multipath для Linux (HPDM)
имеется журнал событий (400 записей), хранится во флеш, доступен по FTP, HTTP/HTTPS, telnet/ssh;
коды ошибок и рекомендуемые действия описаны в Reference Guide
умеет брать время с одного NTP сервера и смещение (в часах), летнее время не учитывает;
может использовать широковещательные пакеты;
при недоступности NTP сервера переходит на локальные часы
диски одного типа (SAS/SATA) и форм-фактора (SFF/LFF) объединяются
в поименованные (UTF-8, до 17 байт, можно изменять)
группы дисков (vdisk, виртуальные диски),
до 16 групп на контроллер, до 16 (2 для RAID-1, 32 для RAID-50) дисков в группе;
группа дисков должна содержать достаточное количество дисков для организации массива
указанного уровня (RAID-0 и RAID-1 - от 2 дисков, RAID-3 и RAID-5 - от 3 дисков,
RAID-6 и RAID-10 - от 4 дисков, RAID-50 - от 6 дисков);
распределение дисков по подгруппам для RAID-10 и RAID-50 осуществляется вручную,
текущее состояние можно посмотреть в обзоре для текущей группы;
группа может содержать больше дисков, чем это необходимо для массива заказанного уровня -
содержимое массива равномерно распределяется по всем дискам группы (например, можно
сделать RAID-5 на 7 дисках);
диски в группе должны быть одного размера и скорости (точнее говоря, от каждого диска
будет использоваться часть, соответствующая размеру минимального диска);
рекомендуется объединять диски с одинаковой частотой вращения;
[полу]автоматический и ручной режим создания виртуальных дисков;
инициализация может идти в фоновом режиме (Online, в общих настройках задаётся приоритет;
очень медленно - 3 суток на RAID-6 из 12 дисков при приоритете High, однажды при большой
нагрузке во время инициализации завис "Storage Controller")
или предварительном (Offline, ускорения не заметил - 20 часов на RAID-50 из 12 терабайтных дисков);
при сбое во время инициализации RAID-6 инициализация прерывается;
при создании можно указать размер полоски (Chunk Size; 16KB, 32KB, 64KB (по умолчанию)),
изменить нельзя;
группе можно приписать выделенный запасной диск (до 4);
новые диски можно добавлять в группу (только одна группа одновременно),
при этом часть данных мигрирует на новый диск,
освобождая равное свободное место на каждом диске нового состава группы
(неразумно медленно - более 8 суток на добавление диска 1TB к RAID-0,
остановить нельзя - только удалением всей группы; что будет при сбое);
удалять диски из группы нельзя;
все тома на виртуальном диске должны быть одного уровня RAID (определяется при создании виртуального диска);
иногда показывает несуществующее свободное место и даже позволяет увеличивать логические тома,
к счастью, без последствий;
виртуальный диск и все его LUN приписываются одному контроллеру;
при поломке контроллера его виртуальные диски переписываются на оставшийся;
принадлежность можно изменить, но с прерыванием обслуживания
(требуется переназначить LUN и заново сканировать устройства) - не сработало;
равномерное распределение виртуальных дисков по контроллерам в автоматическом режиме
настолько агрессивно, что распределяет вновь созданный виртуальный диск на несуществующий
контроллер, смена владельца не работает;
состояния vdisk: Online/UP (для RAID-0 и Non-RAID), FTOL (Fault Tolerant, всё хорошо),
Fault Tolerant Degraded (отсутствует 1 диск в RAID-6, FTDN), Critical (инициализация,
перестройка или необходимость перестройки),
Offline/Down/FATAL FAIL/OFFL (инициализируется или развалился,
можно попытаться оживить командой CLI "Trust VDISK"),
Quarantined (при загрузке обнаружилась недостача дисков в группе;
в результате группа дисков в состоянии QTCR (в критическом состоянии) или QTOF (развалился);
выходит из этого состояния автоматически при обнаружении недостающего диска или вручную;
необходима осторожность!)
RAID массив называется томом (Volume, LUN)
и создаётся из части дискового пространства группы дисков (до 128 томов на группу);
для сервера каждый набор томов выглядит как логическое устройство (точнее, как LUN,
а каждый порт - как исполнитель (target) SCSI);
до 256 LUN на устройство (2 контроллера); размер LUN - до 16 TB;
поддержка разделов более 2 ТБ за счёт 64-битной адресации LBA (Unix, Linux, MS Windows2003SP1), до 512ТБ?;
после создания том необходимо сделать видимым (mapping, отображение тома на порт и LUN);
параметры тома:
может иметь имя (UTF-8, до 20 байт, только при фоновой инициалицации),
имена не видны клиентским системам, можно изменить
объём (можно только увеличивать, без остановки работы);
LUN
тип кеширования упреждающего чтения (включается после 2 последовательных операций чтения;
можно отключить; от 64KB до 32MB (по степеням двойки) или
Maximum (половина памяти распределяется на все тома);
по умолчанию в размере сегмента для первого запроса (64KB) и в размере полоски для последовательных);
алгоритм стандартный (блоки по 32KB) или агрессивный (для потоковых приложений, прочитанный
блок кеша сразу освобождается, блоки по 128KB)
тип кеширования записи (write-back - оповещать о завершении записи немедленно после попадания
данных в буфер; write-through - ожидать записи данных на диск;
кеши записи зеркалируются между контроллерами (отключаемо);
можно задать условия при которых контроллер будет переходить к "честной" записи
(General Config - System Configuration - Advanced Options - SCSI Configuration):
сбой контроллера, сбой конденсатора, сбой питания, сбой блока питания, сбой вентилятора, перегрев;
контроллер может возвращаться к кешированию записи при возвращении условий к норме)
управления очередью команд нет
отображение (mapping) и права доступа (read-write, read-only, masked)
для определённых хостов (по IQN хоста для iscsi или WWPN хоста для FC
или определённому ранее синониму (до 64 штук, до 15 символов, рекомендуется назначить для сохранения информации
о привязке между загрузками в общих настройках, команда CLI "manage host list"),
список известных IQN/WWPN пополняется автоматически при подключении инициатора
(SCSI команды inquiry или report luns)
с указанием LUN и прав доступа на чтение и запись для каждого порта контроллера, владеющего виртуальным диском;
к одному LUN могут иметь доступ несколько хостов (в т.ч. на запись),
есть хост ANY (удалить его потом невозможно!);
глюк: в документации имена портов выглядят как A1/A2/B1/B2,
но в одноконтроллерной конфигурации надо указывать просто 1 или 2
(не работает HTTP-интерфейс: ни визард, ни обычная настройка, если попытаться задать отображение):
map volume access read-write host имя-хоста port номер lun номер имя-тома;
при создании можно задать LUN и права доступа по умолчанию для каждого порта;
отображение хранится в метаданных на дисках;
атрибут прав доступа должен проверяться ОС инициатора, Linux не проверяет и получает ошибки записи;
изменения вступают в силу немедленно!
настройки группы дисков (включая отображение томов на порты и LUN) записываются в начале каждого диска в виде метаданных,
что позволяет при необходимости перенести диск в другой слот, а группу дисков в другое устройство;
оставшийся от старого массива диск будет в состоянии
LEFTOVER, пока не почистить метаданные
настройки контроллера (не массивов!) можно сохранить в файл и восстановить при необходимости
имеется возможность удалённо выключить или перезагрузить контроллер (отдельно контролер управления
и контроллер хранения
запасные (Hot Spare) диски (до 8 общих для всех групп дисков или до 4 выделенных на группу дисков):
при сбое одного из массивов
происходит автоматическое перемещение общего запасного диска в группу и восстановление массива;
размер запасного диска д.б. не меньше размера дисков группы;
система может автоматически назначить свободный подходящий диск запасным при отсутствии выделенного
или глобального запасного диска (это позволяет просто заменить вышедший из строй диск на новый;
необходимо включить Dynamic Spare );
приоритет при поиске: выделенный запасной диск, общий запасной диск, динамически назначаемый запасной диск;
при восстановлении RAID-6 индикатор показывает 0%, если не были предоставлены оба запасных диска
(восстановление просто не начинается, если один из восстанавливаемых дисков
вынуть, то восстановление сбрасывается на обоих дисках);
восстановление двух дисков RAID-6 из 12 дисков по 1ТБ занимает более 2 суток;
восстановление диска из RAID-5 на 4 диска заняло 10 часов;
при возвращении в строй "временно выпавшего" диска необходимо очистить метаданные и назначить его запасным;
прервать восстановление можно только удалением vdisk
имеется процедура верификации виртуального диска (RAID-5, RAID-50 и RAID-6; чтение блоков данных,
перевычисление и сравнение контрольных сумм; RAID-1 и RAID-10: сравнение) по запросу (можно остановить)
процедура постоянного сканирования дисков в фоновом режиме (scrub)
для поиска нечитающихся или неправильно читающихся секторов или ошибок чётности;
авторы документации сами путаются между scrub (чтение носителя) и verify (сравнение контрольных сумм);
20 часов на терабайтных дисках (13 часов для RAID5 из 6 дисков);
повторение через 24 часа после окончания предыдущей проверки;
можно запускать вручную для разовой проверки
управление приоритетом утилит (Reconstruct, Scrub);
заявленный в меню приоритет Background не работает
механизм изоляции устройств, вызывающих большой уровень ошибок PHY;
включить обратно можно только перезагрузкой; Diagnostic Tools - Expander Isolation
позволяет сбросить счётчик ошибок, отключиь/подключить канал, включить/отключить изоляцию ошибок
возможность блокировки выдаваемой хостом команды отключения кеша записи и синхронизации кеша
обновление прошивки почти без прерывания работы (при небольшой нагрузке) по FTP или HTTP/HTTPS
(обновлённая прошивка автоматически заливается на второй контроллер);
также можно обновить прошивки дополнительных корзин и НЖМД
контроллер может самостоятельно делать моментальные снимки томов (snapshot, выглядит как новый виртуальный том);
по запросу или через планировщик задач (время начала и конца, интервал, максимальное количество снимков);
для каждого тома создаётся отдельный пул для хранения данных снимков
(хранятся отличия снимков относительно текущего состояния исходного тома -
создаются при записи в исходный том или в снимок) внутри группы дисков (20% от размера группы);
можно откатить состояние тома на момент создания снимка (включая или не включая модификации);
требуется доплатить за лицензию - лицензия привязывается к серийному номеру корзины и версии прошивки
и определяет максимально возможное количество снимков;
контроллер может самостоятельно делать копии (clone) главного тома
или снимка (включая или не включая модификации) в новый том
(делается временный снимок в пуле снимков)
по запросу или через планировщик задач (время начала и конца, интервал, максимальное количество снимков);
на время копирования доступ блокируется;
требуется доплатить за лицензию (лицензия привязывается к серийному номеру корзины и версии прошивки)
обновление MSA2300-M110R25-01.bin (подготовка к 2 ТБ дискам, поочерёдный запуск при одном БП,
исправлены десятки ошибок и столько же - нет)
обновление MSA2300-M110R28-02.bin - основные ошибки одноконтроллерной версии остались
Фирма 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 порта))
дисковую корзину (SAS-2, 6Gb), монтируемую в стойку (2U), звучка нет,
индикаторы: Tray/Enclosure ID (контроллер - 1, дополнительные корзины - не 1),
поиска устройства (UID, голубой), аварийной ситуации (оранжевый, не горит при сбое отдельного диска),
питания (Heartbeat, зелёный);
общее типичное потребление - 355W, максимальное - 450W (датчик показывает 120 Вт);
выделение тепла - 1622 BTU/hr; интервал рабочих температур - от 5 до 40 градусов;
30 кг; глубина - 67 см; можно включать только в горизонтальном положении
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них, модель 481320-001);
совмещены с вентиляторными блоками по 2 вентилятора (по документации - от 4000 до 6000 RPM, по датчику - 3800),
питающихся от материнской платы;
датчики напряжений, тока, температуры и скорости вращения вентиляторов;
индикаторы подачи питания и неисправности; выключателя на AC модели нет!;
перед обесточиванием необходимо выключить контроллер хранения ("shutdown both")
12 отсеков для дисков SAS-2/SATA-II в любом сочетании (LFF, 3.5", высота 1", до 450GB/2TB)
с горячим подключением (по одному диску за раз?);
нумерация с единицы сверху вниз, слева направо;
диски можно использовать только специальные - типа MSA2 (в реальности - это обычные Seagate ES
или Hitachi HUA722020ALA330 с наклейкой и в коробке с двухпортовым переходником);
в каждом отсеке индикаторы: идентификация (голубой, можно зажечь для обнаружения диска),
сбой (оранжевый, мигает - предупреждение, горит - отказ),
активность (зелёный, при восстановлении массива мигает с частотой 1 Гц);
через интерфейс управления можно
узнать про каждый диск: статус, состояние, тип, номер корзины, слот,
модель, серийный номер, версию прошивки, ёмкость, наличие ошибок;
типы: SAS (2 порта), SAS-S (один порт), SATA (2 порта), SATA-S (один порт);
состояния: доступен (AVAIL), часть группы (VDISK, VDISK INIT, VDISK SPARE),
стратегический резерв (Global Spare, GLOBAL SP), остаток (leftover, LEFTOVR,
для использования такого диска необходимо очистить метаданные; диск может переходить
в это состояние после неисправимых ошибок носителя);
задания: EXPD (расширение группы дисков), INIT, RCON (восстановление группы дисков),
VRFY (группа дисков проверяется), VRSC (проверка дисков, scrub);
учитываются (и пишутся в журнал) данные SMART каждые 5 минут (можно отключить);
можно задать время неактивности дисков после которого они будут останавливаться (DSD, drive spin down);
есть вариант шасси для 24 SFF дисков (2.5")
один или два RAID контроллера (одинаковых);
ЦП Intel Tolapai 1200MHz (наблюдалась загрузка на 2 корзинах по 12 дисков - 83%);
LUN (до 512) приписывается к контроллеру вручную или автоматически (не советую) балансировщиком загрузки;
индикаторы: поиска устройства (System Locator, белый, мигает), можно извлекать контроллер (голубой),
сбой контроллера (оранжевый, мигает при проблемах с флеш),
работоспособность контроллера (FRU OK, зелёный, мигает при загрузке),
состояние кеша (зелёный горит - есть данные, мигает - ждёт возможности восстановления),
подключение клиентов (host activity, зелёный), подключение дополнительной корзины;
можно заменить контроллер (предварительно выключив) без остановки всего устройства;
состоит из контроллера управления (Management Controller, MC) и контроллера хранения
(Storage Controller, SC, LSI 2008); PCIe;
контроллер может быть установлен в MSA2000 G1 и G2 с сохранением виртуальных томов;
для перехода из одноконтроллерного режима в двухконтроллерный (или обратно)
необходимо вставить (вынуть) второй контроллер и полностью сбросить настройки ("restore defaults",
не сбрасываются настройки групп дисков, томов, IP, время)
каждый контроллер имеет 2 порта FC 8Gb (QLogic 2532):
автоопределение скорости или ручной выбор (2Gb или 4Gb или 8Gb);
SFP входит в комплект (850nm, LC?);
максимальная длина кабеля для 8Gb - 21 метр для OM1 (62.5мкр), 50 метров для OM2 и 150 метров для OM3;
максимальная длина кабеля для 4Gb - 70 метр для OM1 (62.5мкр), 150 метров для OM2 и 380 метров для OM3;
выбор типа подключения (кольцо FCAL для прямого подключения или физического кольца;
точка-точка при прямом подключении двух устройств;
автоматический выбор при использовании коммутатора или прямого подключения двух устройств);
при подключении точка-точка можно получить по 800МБ/сек одновременно в обоих направлениях
(на практике в обоих режимах получается по 630 MB/s суммарно (4Gb HBA));
для кольца можно явно задать Loop ID (от 0 до 125);
слева вверху port A1; правее - port A2;
индикаторы скорости 8Gb или 2 Gb/4 Gb (мигают - нет подключения);
до 512 LUN на оба контроллера; до 64 хостовых портов
каждый контроллер имеет ECC DDR2 модуль памяти 2048 MB
для кеширования данных (часть на чтение, часть на запись, из которых часть под локальный кеш,
а оставшиеся на зеркало кеша второго контроллера (SimulCache) - отключаемо
("set cache-parameters independent enabled") с перезагрузкой контроллеров (перерыв в обслуживании 5 минут));
модуль из конденсатора и флеш-памяти (Compact Flash на 8GB - снимаемый, скорость записи 60 МБ/сек)
для обеспечения сохранности кеша при отключении питания (60 секунд);
Compact Flash может быть переставлена при сбое контроллера в новый контроллер для последующей записи на диск
(контроллер д.б. установлен в тот же корпус);
при наличии 2 контроллеров при сбое одного из них кешированные данные берутся из зеркала;
индикатор наличия данных в CF;
имеется команда очистки
Ethernet канал для управления на каждом контроллере
(10/100BASE-T, индикаторы подключения и активности, адрес можно получить по DHCP или задать вручную;
по умолчанию - 10.0.0.2/24 и 10.0.0.3/24 со шлюзом 10.0.0.1):
telnet (CLI, есть help и "show config", которая расскажет об устройстве и его составляющих всё
и "show events", которая наябедничает об истории устройства, timeout - 15 минут;
2 режима вывода: для людей и компьютеров (XML API)),
SSH (только интерактивный режим! изготовитель советует использовать expect),
HTTP/HTTPS (совсем другой интерфейс по сравнению с MSA 2000 G1;
часть доступных там через HTTP возможностей теперь требует доступа к CLI (например, статистика);
SMU - System Management Utility (aka WBI - web-browser interface), есть поддержка IE 7 и Firefox 1.5,
необходимо отключить блокировку выпрыгивающих окошек, куки и анимации;
поддерживает одновременную работу нескольких администраторов (каждый Firefox поддерживает только 1 сессию);
данные обновляются в реальном времени; нельзя использовать кнопки браузера вперёд/назад;
не даёт браузеру запомнить пароль; HTTPS использует самоподписанный сертификат (до 2016 года);
SMU общается с Management Controller, а тот со Storage Controller),
SMI-S (Storage Management Initiative Spec, порт 5988 (HTTP) и 5989 (HTTPS), пакет OpenPegasus),
FTP (заливка прошивки и получение отладочной информации),
мониторинг SES по FC
(диски, питание, вентиляторы, температуры, напряжения, токи),
CAPI (Configuration Application Programming Interface) по FC,
SNMP-1/SNMP-2c (задаются - в настройке Event - до трёх IP адресов TRAP серверов;
фильтрация уровня событий настраивается - informational, minor, major и critical;
имя комьюнити для чтения (public) и записи (private),
стандартные sysContact, sysName, sysLocation можно изменять;
MIB: MIB-II, Fibre Alliance SNMP MIB 2.2,
msa2000traps.mib (никакой информации о дисках и массивах, описаны лишь порты и сенсоры,
OID плавающие в зависимости от серийного номера;
с точки зрения SNMP управляющий интерфейс - eth0 - номер 2 (а номер 1 - lo, 172.22.255.254);
исчезли серийный номер и PN;
зато появились потребляемые токи);
также открыты порты: 111 (rpbind?), 427 (svrloc?), 678, 8000, 8001, 8801;
управление любым контроллером доступно из его соседа
управление CLI через RS-232 (mini-USB - Type B, VT-100/ANSI, 115200, 8N1, без синхронизации), нажать Enter;
без аутентификации, что позволяет отредактировать список пользователей
USB порт для дальнейших расширений (Type A, надпись HOST намекает)
сервисные порты CLI и SERVICE - RS-232 (3.5mm jack!)
возможно подключение до 7 дополнительных (JBOD) дисковых полок AP843A
(то же самое шасси AP838A и 2 контроллера
ввода-вывода P844A Rev.B, FRU PN 592262-001) по интерфейсу 4x SAS-2 (mini 4X SAS-2, 4x6Gbps)
до 96 LFF (149 SFF) дисков в сумме;
дополнительная полка имеет индикаторы: идентификации (мигает белым), сбой (оранжевый), OK (зелёный, мигает при загрузке);
каждый SAS порт имеет индикатор подключения;
кабель mini-SAS (SFF-8088) длиной 0.5 метра прилагается
(для подключения четвёртой полки потребуется более длинный кабель, например, 2 метра - 407339-B21);
к контроллерам G3 можно подключать полки G1 и G2 (SAS 1.1, требуется купить дополнительный кабель SAS-miniSAS), MSA70 и D2700;
количество контроллеров в полках должно совпадать;
при подключении нескольких дополнительных полок в двухконтроллерной конфигурации рекомендуется
соединять цепочки с разных сторон (полку из середины цепочки можно будет вынимать);
питание дополнительных полок необходимо включать до питания основной, а хоста - после;
каждая полка имеет уникальный идентификатор (на левом индикаторе);
контроллер запоминает идентификаторы дополнительных дисковых полок, определённые при первом включении
(рекомендуемая в руководстве команда rescan не помогла);
типичное потребление дополнительной дисковой полки - 100 Вт
датчики температуры платы, процессора, БП, напряжений, токов, состояния блоков питания,
вращения вентиляторов доступны через интерфейс управления CLI и SES;
при критическом превышении температуры ЦП или FPGA устройство выключается автоматически
пароль доступа администратора (manage/!manage; monitor/!monitor; ftp/flash) общий на все интерфейсы;
пароль не может содержать запятые, кавычки и обратую косую черту;
аутентификация telnet/ssh занимает 15 секунд;
пользователю monitor доступна команда shutdown;
неотключаемый пользователь api с паролем !api;
авторизация в HTTP производится по IP адресу (действия, произведённые в одном браузере
немедленно отображаются в другом);
через некоторое время бездействия пароль требуется ввести заново (интервал - 30 минут - можно изменить или отменить);
можно добавлять пользователей (до 12) и раздавать им роли
(Monitor или Manage), уровень возможностей (Standard, Advanced, Diagnostic; используется только Standard),
допустимый интерфейс (WBI, CLI, FTP), округлять число до 1000 или 1024,
сколько выводить знаков после запятой и прочие настройки интерфейса (изменения действуют со следующего сеанса);
сообщения о событиях по SMTP; задаётся IP адрес (не имя!) SMTP сервера и шлюза, почтовое имя отправителя и домен,
до 4 адресов получателей, какие сообщения посылать;
зависание почтового сервера привело к глюкам контролера управоения (restart mc a)
поддерживаемые типы RAID: Non-RAID, RAID-0, RAID-1, RAID-1+0 (RAID-10, RAID-1 объединённые в RAID-0),
RAID-3, RAID-5,
RAID-6 (ADG - Advanced Data Guarding),
RAID-50 (RAID-5 объединённые в RAID-0)
предлагается собственная реализация device-mapper-multipath для Linux (HPDM)
имеется журнал событий (400 записей), хранится во флеш, доступен по FTP, HTTP/HTTPS, telnet/ssh, SNMP;
коды ошибок и рекомендуемые действия описаны в Reference Guide
умеет брать время с одного NTP сервера (только по IP адресу) и смещение (в часах от UTC), летнее время не учитывается;
может использовать широковещательные пакеты;
при недоступности NTP сервера переходит на локальные часы
диски одного типа (SAS/SATA) и форм-фактора (SFF/LFF) объединяются
в поименованные (UTF-8, до 17 байт, можно изменять)
группы дисков (vdisk, виртуальные диски):
до 16 групп на контроллер, до 16 (2 для RAID-1, 32 для RAID-50) дисков в группе;
диски могут быть из разных корзин;
группа дисков должна содержать достаточное количество дисков для организации массива
указанного уровня (RAID-0 и RAID-1 - от 2 дисков, RAID-3 и RAID-5 - от 3 дисков,
RAID-6 и RAID-10 - от 4 дисков, RAID-50 - от 6 дисков);
распределение дисков по подгруппам для RAID-10 и RAID-50 осуществляется вручную;
текущее состояние можно посмотреть в обзоре для текущей группы;
группа может содержать больше дисков, чем это необходимо для массива заказанного уровня -
содержимое массива равномерно распределяется по всем дискам группы (например, можно
сделать RAID-5 на 7 дисках);
диски в группе должны быть одного размера и скорости (точнее говоря, от каждого диска
будет использоваться часть, соответствующая размеру минимального диска);
рекомендуется объединять диски с одинаковой частотой вращения;
[полу]автоматический и ручной режим создания виртуальных дисков;
инициализация может идти в фоновом режиме (Online, в общих настройках задаётся приоритет;
рабочая нагрузка почти полностью давит инициализацию даже при установке приоритета High;
очень медленно - 36 часов на RAID-6 из 12 дисков (2TB, 7200 rpm) при приоритете High)
или предварительном (Offline, особого ускорения не заметил - 33 часа на RAID-5 или RAID-6 из 12 дисков,
восстановление соседней группы не влияет на скорость инициализации);
инициализация RAID-50 также заняла от 32 до 34 часов в зависимости от числа диска (от 8 до 24);
при одновременной инициализации нескольких групп скорость инициализации каждой следующей группы падает;
при сбое во время инициализации она прерывается, но группа дисков остаётся доступной;
при создании можно указать размер полоски
(Chunk Size: 16KB (хорош для случайной записи), 32KB, 64KB (по умолчанию)), изменить нельзя;
желательно согласовать размер полоски и размер запросов ОС;
группе можно приписать выделенный запасной диск (до 4);
новые диски (до 4 одновременно) можно добавлять в группу (только одна группа одновременно) без прерывания обслуживания,
при этом часть данных мигрирует на новый диск,
освобождая равное свободное место на каждом диске нового состава группы
(неразумно медленно - 180 часов на добавление 4 дисков по 2TB к RAID-6 из 12 дисков (4.5MBps),
при этом скорость работы падает очень сильно;
остановить нельзя - только удалением всей группы; а что будет при сбое?);
удалять диски из группы нельзя;
все тома на виртуальном диске должны быть одного уровня RAID (определяется при создании виртуального диска);
виртуальный диск и все его тома (LUN) приписываются одному контроллеру;
при поломке контроллера его виртуальные диски автоматически переписываются на оставшийся;
принадлежность можно изменить, но с прерыванием обслуживания
(требуется переназначить LUN и заново сканировать устройства);
состояния vdisk: Online/UP (для RAID-0 и Non-RAID), FTOL (Fault Tolerant, всё хорошо),
Fault Tolerant Degraded (отсутствует 1 диск в RAID-6, FTDN), Critical (инициализация,
перестройка или необходимость перестройки),
Offline/Down/FATAL FAIL/OFFL (инициализируется или развалился,
можно попытаться оживить командой CLI "Trust VDISK"),
Quarantined (при загрузке обнаружилась недостача дисков в группе;
в результате группа дисков в состоянии QTCR (в критическом состоянии) или QTOF (развалился);
хосты не получают доступа к томам из такой группы;
немедленно проверить, что все диски вставлены и все полки включены;
выходит из этого состояния автоматически при вставке недостающего диска или вручную с последующим восстановлением;
необходима осторожность - нельзя выводить из карантина группу, в которой недостаёт слишком многих дисков!)
экспортируемый хостам RAID массив называется томом (Volume)
и создаётся из части дискового пространства группы дисков (до 128 томов на группу дисков);
для сервера каждый набор томов выглядит как логическое устройство (точнее, как LUN,
а каждый порт - как исполнитель (target) SCSI);
до 512 LUN на устройство (2 контроллера) отображаемых на 64 портов инициаторов (хостов);
размер LUN - до 16 TB (получилось создать и использовать 44TB,
однако badblocks и mkfs.ext4 не умеют работать с блочными устройствами более 16 TB);
поддержка разделов более 2 ТБ за счёт 64-битной адресации LBA (Unix, Linux, MS Windows2003SP1);
в веб-интерфейсе показывается больше свободного места, чем осталось на самом деле;
после создания том необходимо сделать видимым (mapping, отображение тома на порт и LUN)
для каждого хоста явно или по умолчанию;
номера LUN для отображения по умолчанию общие для обоих контроллеров
(Unified LUN Presentation - ULP, Asymmetric Logical Unit Access - ALUA);
явные отображения могут разделять один номер LUN между хостами;
параметры тома:
может иметь имя (UTF-8, до 20 байт, только при фоновой инициалицации),
имена томов не видны хостам никакими средствами, можно изменить
объём (можно увеличивать при наличии свободного места в группе без остановки работы);
LUN и права доступа по умолчанию для каждого порта
тип кеширования упреждающего чтения (включается после 2 последовательных операций чтения;
можно отключить; от 64KB до 32MB (по степеням двойки) или
Maximum (половина памяти распределяется на все тома; не рекомендуется для 3 и более томов);
по умолчанию в размере сегмента для первого запроса (64KB) и в размере полоски для последовательных);
алгоритм стандартный (блоки по 32KB) или агрессивный (для потоковых приложений, прочитанный
блок кеша сразу освобождается, блоки по 128KB)
тип кеширования записи (write-back - оповещать о завершении записи немедленно после попадания
данных в буфер; write-through - ожидать записи данных на диск - подходит для записи видео);
кеши записи зеркалируются между контроллерами (отключаемо);
можно задать условия при которых контроллер будет отключать кеширование
(General Config - System Configuration - Advanced Options - SCSI Configuration):
сбой контроллера, сбой конденсатора, сбой питания, сбой блока питания, сбой вентилятора, перегрев;
контроллер может возвращаться к кешированию записи при возвращении условий к норме)
управления очередью команд нет
отображение (mapping) и права доступа (read-write, read-only, masked)
для определённых хостов (по IQN хоста для iscsi или WWPN хоста для FC
или определённому ранее синониму (до 64 штук, до 15 символов, рекомендуется назначить для сохранения информации
о привязке между загрузками в общих настройках, команда CLI "manage host list"),
список известных IQN/WWPN пополняется автоматически при подключении инициатора
(отслеживаются SCSI команды inquiry или report luns)
с указанием LUN и прав доступа на чтение и запись для каждого порта контроллера, владеющего виртуальным диском;
к одному LUN могут иметь доступ несколько хостов (в т.ч. на запись),
есть хост ANY (удалить его потом невозможно!);
глюк в старой прошивке: в документации имена портов выглядят как A1/A2/B1/B2,
но в одноконтроллерной конфигурации надо указывать просто 1 или 2
(в результате не работает HTTP-интерфейс: ни визард, ни обычная настройка, если попытаться задать отображение):
"map volume access read-write host имя-хоста port номер lun номер имя-тома";
отображение хранится в метаданных на дисках;
атрибут прав доступа должен проверяться ОС инициатора (Linux не проверяет и получает ошибки записи);
изменения вступают в силу немедленно!
настройки группы дисков (включая отображение томов на порты и LUN) записываются в начале каждого диска в виде метаданных,
что позволяет при необходимости перенести диск в другой слот, а группу дисков в другое устройство;
оставшийся от старого массива диск будет в состоянии LEFTOVER, пока не почистить метаданные
настройки контроллера (не массивов!) можно сохранить в файл и восстановить при необходимости
имеется возможность удалённо выключить или перезагрузить контроллер (отдельно контролер управления
и контроллер хранения
запасные (Hot Spare) диски (до 8 общих для всех групп дисков или до 4 выделенных на группу дисков):
при сбое одного из массивов
происходит автоматическое перемещение общего запасного диска в группу и восстановление массива;
размер запасного диска д.б. не меньше размера дисков группы;
система может автоматически назначить свободный подходящий диск запасным при отсутствии выделенного
или глобального запасного диска (это позволяет просто заменить вышедший из строй диск на новый -
необходимо включить Dynamic Spare );
приоритет при поиске: выделенный запасной диск, общий запасной диск, динамически назначаемый запасной диск;
при восстановлении RAID-6 индикатор показывает 0%, если не были предоставлены оба запасных диска
(восстановление просто не начинается, если один из восстанавливаемых дисков
вынуть, то восстановление сбрасывается на обоих дисках);
восстановление RAID-6 из 12 дисков по 2ТБ занимает 15 часов (36MBps), при этом запись полностью давит
восстановление даже с приоритетом утилит high, а чтение - наполовину;
восстановление 2 дисков из RAID-6 (12 дисков по 2ТБ) под нагрузкой - 3 суток (8MBps), без нагрузки - 59 часов (10MBps);
при возвращении в строй "временно выпавшего" диска необходимо очистить метаданные и назначить его запасным;
прервать восстановление можно только удалением виртуального диска
имеется процедура верификации (background scrub или Media Scrub для работы в фоновом режиме,
Verify Vdisk для работы с приоритетом утилит) виртуального диска
(RAID-5, RAID-50 и RAID-6 - чтение блоков данных,
перевычисление и сравнение контрольных сумм; RAID-1 и RAID-10 - сравнение) по запросу (Media Scrub vdisk);
и периодически с указанным интервалом между завершением предыдущей проверки и началом новой;
занимает 15 часов для RAID-6 из 12 дисков по 2ТБ;
можно запускать одновременно для нескольких групп дисков (xcrub - чтение носителя - и
verify - сравнение контрольных сумм);
можно остановить;
записываются в журнал сообщения об ошибках носителя, переназначении блоков, ошибки чтения метаданных, проблемы SMART;
при выполнении с фоновым приоритетом приостанавливается при перегрузке ЦП или доступе к данному виртуальному диску
(в некоторых местах документации говорится, что всегда выполняется с фоновым приоритетом,
в других - с указанным в настройках приоритетом)
процедура постоянного сканирования свободных дисков в фоновом режиме (disk scrub)
периодическое повторение после окончания предыдущей проверки через 24 часа;
управление приоритетом утилит (Reconstruct, Scrub);
заявленный в документации приоритет Background отсутствует
возможность блокировки выдаваемой хостом команды отключения кеша записи и синхронизации кеша
обновление прошивки почти без прерывания работы (при небольшой нагрузке) по FTP или HTTP/HTTPS
(обновлённая прошивка автоматически заливается на второй контроллер);
также можно обновить прошивки дополнительных корзин и НЖМД
контроллер может самостоятельно делать моментальные снимки томов (snapshot, выглядит как новый виртуальный том);
по запросу или через планировщик задач (время начала и конца, интервал, максимальное количество снимков);
для каждого тома создаётся отдельный пул для хранения данных снимков
(хранятся отличия снимков относительно текущего состояния исходного тома -
создаются при записи в исходный том или в снимок) внутри группы дисков (20% от размера группы);
можно откатить состояние тома на момент создания снимка (включая или не включая модификации);
до 64 снимков даруются бесплатно,
далее требуется доплатить за лицензию - лицензия привязывается к серийному номеру корзины и версии прошивки
и определяет максимально возможное количество снимков;
контроллер может самостоятельно делать физическую копию (clone, Volume Copy) главного тома
или снимка (включая или не включая модификации);
перед копированием делается временный снимок в пуле снимков, который и копируется, освобождая доступ к исходному тому;
по запросу или через планировщик задач (время начала и конца, интервал, максимальное количество снимков);
на время копирования доступ к копии блокируется;
в этой модели бесплатно (хотя в документации это отрицается)
имеется возможность автоматически останавливать неиспользуемые диски (в т.ч. по расписанию)
и диски из указанных групп
Replication (Remote Snap) - асинхронное копирование записываемых на том блоков
на это же или другое устройство без участия сервера (по FC или iSCSI);
только исходный том доступен серверу;
это не CDP (используется механизм моментальных снимков, которые осуществляются вручную или планировщиком);
требуется доплатить за лицензию на обоих устройствах;
можно получить временную лицензию на 60 дней;
оба устройства должны быть подключены к коммутаторам в пределах одной фабрики;
VSS/VDS - в этой модели бесплатно
добавлена возможность сбора статистики (не описана в документации):
по контроллеру (нагрузка ЦП, количество чтений, количество записей, прочитанных байт, записанных байт,
скорость ввода/вывода после предыдущего запроса в байтах),
порту (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт, глубина очереди),
группе дисков (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт),
тому (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт),
дискам (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт);
имеется возможность обнулить счётчики
Тестирование скорости с помощью 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 миллиона файлов):
ext4 на RAID-6 из 12 дисков по 2ТБ на 16TiB - 148 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с маленьким stripe при инициализации - 198 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с маленьким stripe - 217 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe (упирается в сеть на уровне 90 MB/s,
netperf показал 769 Mbps вместо привычных 941 Mbps, в обратную сторону всё ОК) - 250 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe с Jumbo кадрами (884 Mbps) - 289 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe с одновременным подключением 2 файловых серверов
(загрузка до 83% CPU, до 570MB/s, причём не одновременно) - 241 MB/s
ext4 на 3 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe с одновременным подключением
2 файловых серверов и Jumbo - 275 MB/s
ext4 на 2 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe - 239 MB/s
xfs на 20TB на RAID-6 из 12 дисков по 2ТБ - 88 MB/s
xfs на 2 тома (первый заполнился значительно раньше второго)
с бубном (приостановка входного потока facula-fd и/или сброс кеша при насыщении устройства) - 141 MB/s
xfs на 3 тома на RAID-6 из 8 дисков по 2ТБ с большим stripe
с одновременным подключением 2 файловых серверов и Jumbo - 233 MB/s
(зато фрагментация 0.2% и на сборке мусора устройство показало 610 MB/s)
Размножение каталога размером 40ГБ (60000 файлов) в 10 раз:
ext4 на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ - 200MB/s
ext4 на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ на 2 серверах - 70 MB/s
(копирование идёт поочерёдно - период 18 минут, 2 горба)
ext4 на LVM с большим страйпом поверх 2 RAID-6 из 8 дисков 2ТБ - 155MB/s
xfs на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ - 160MB/s
xfs на 3 тома с большим stripe с одновременным подключением 2 файловых серверов, Jumbo - 69 MB/s
Сбор архива (find|cpio|dd в /dev/null, 400GB, 600000 файлов):
ext4 на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ - 320MB/s (заклинивает на минуту каждые 10 минут)
ext4 на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ на 2 серверах - 180 MB/s
(временами cpio потребляет 100% времени ЦП, временно помогает /proc/sys/vm/drop_caches)
ext4 на LVM с большим страйпом поверх 2 RAID-6 из 8 дисков 2ТБ - 260MB/s
xfs на LVM с большим страйпом поверх 3 RAID-6 из 8 дисков 2ТБ - 220MB/s
(при провалах cpio потребляет 100% времени ЦП - опять ищет последний свободный байт?)
xfs на 3 тома с большим stripe с одновременным подключением 2 файловых серверов, Jumbo - 117 MB/s
Опять столкнулся с проблемой "перенасыщения" канала записи: если долгое время (полчаса) записывать
со скоростью, превосходящей возможности устройства, то оно устраивает итальянскую забастовку - начинает работать
очень медленно (пробовал ext4 и xfs). Методы борьбы:
Фирма Xyratex является OEM изготовителем автономных дисковых массивов для крупных фирм
(например, DotHill кое-что покупал у них и перепродавал Sun Microsystems), но и под своим именем
продаёт кое-что (документация).
В частности, массив RS-1220-F4-5412E-DL-2 представляет собой
дисковую корзину, монтируемую в стойку (2U)
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них только в течении 30 минут;
ввод/вывод может быть кратковременно приостановлен), PFC, 350Wx2;
обязательно заземление (утечка 1.5mA); выключатель; индикаторы наличия сети и сбоя
вентиляторный блок на ? вентилятора с возможностью замены (не горячей), индикатор сбоя
контроллер или 2 контроллера (нижний - 0 или A или esv0), взаимодействуют через два SAS канала;
2 канала FC на каждый (SFP, у нас Finisar FTLF8524P2BNV - LC 850nm multi-mode; Host 0 слева, IN слева),
скорость - 1/2/4Gb; поддержка топологии: кольцо, точка-точка,
коммутируемая сеть (не на чем попробовать);
индикаторы наличия сигнала (нижний; голубой - 4Gb, зелёный - 2 Gb, жёлтый - 1Gb) и активности FC (верхний);
индикаторы (слева направо и сверху вниз): активность группы дисков (Drive Bank) 0, сбой контроллера (оранжевый),
кеш содержит незаписанные на диск данные, активность группы дисков (Drive Bank) 1, OK (зелёный), сбой батарейки;
процессор ? 800MHz; контроллер FC QLogic ISP2422 , контроллеры RAID LSI 1064 A4
модуль ECC памяти 1GB на контроллер для кеширования (возможно зеркалирование между контроллерами)
аккумуляторный модуль BBU на контроллер для обеспечения сохранности кеша при отключении питания
(48 часов); вынимается из контроллера без вынимания самого контроллера;
если отсутствовала при включении, то считается, что так и надо
порт расширения SAS (SFF-8470, dual cable, 4 линии, индикатор каждой линии)
для подключения до 4 дополнительных дисковых полок RS-1220-E3-XPN на контроллер;
звучок и операторская панель (OPS): кнопка выключения звучка
(также запускает самотестирование звучка и индикаторов, если проблемы не было) и
индикаторы питания, сбоя оборудования, логического сбоя, идентификации
12 отсеков для дисков SAS или SATA-II с NCQ (3.5", высота 1", до 1TB) с горячим подключением;
нумерация от 1 до 12 слева направо сверху вниз;
диски 3, 7, 11, 4, 8 и 12 образуют банк 0 (правая половина);
диски 1, 5, 9, 2, 6 и 10 образуют банк 1 (левая половина);
для диска SATA требуется активный (A/A - позволяет обоим контроллерам обращаться к диску одновременно)
или пассивный (A/P) переходник (MUX Transition);
нельзя смешивать диски различных типов или с различными переходниками в одной колонке и одном массиве;
желательно заполнять колонку целиком;
в каждом отсеке индикаторы: зелёный вверху - питание и доступ, оранжевый - сбой;
через интерфейс управления можно поморгать лампочкой диска и
узнать про каждый диск: номер полки и слот, изготовитель,
модель, версию, серийный номер, [версию прошивки], ёмкость, состояние;
изготовитель требует использования только своих дисков (Xyratex 1TB Hitachi Ultrastar 7200rpm, HUA721010KLA330),
однако даже "домашняя" модель (Hitachi HDS722020ALA330, 2TB) была принята без возражений
(только надо иметь корзинку и соответствующий адаптер), советую использовать только RAID версии дисков,
12 дисков "домашнего" типа в одной корзине разнесут всё (3TB Hitachi HDS723030ALA640 воспринимается как 800GB)
управление через RS-232 (разъём формата USB) - RCU (RAID Configuration Utility);
параметры: 115200 (можно изменить), 8N1, без flow control, ANSI;
если при загрузке несколько раз нажать Enter, то можно попасть в монитор
(ver - показать текущую версию, dp - обновить загрузчик по протоколу 1K X-Modem, требуется аппаратная синхронизация);
для входа в меню надо нажать ^E; авторизации нет; разнообразная информация
о контроллере и его состоянии, статистика обращений
(распределение по размеру блока, выравниванию, эффективность предварительного чтения, кластеризация команд и пр.),
конфигурация
Ethernet канал на контроллер для управления (100Base-T);
индикаторы наличия соединения (справа) и скорости (слева, горит, если 100 Mb);
MAC написан сзади;
DHCP (делает харакири при получении ответа от DHCP сервера - не включать и не отзываться)
или 10.1.1.5/255.0.0.0 (для A) или 10.1.1.6 (для B) или 10.1.1.7 (ошибки);
имя - "admin", пароль по умолчанию - "password"; MAC и IP можно узнать подключившись по последовательному интерфейсу
(диагностика, встроенный модуль; зависает при включённом DHCP);
при завершении работы (reset) рассылается broadcast на UDP/60001 (а зачем?);
постоянно рассылается информация о себе на групповой адрес 225.0.0.225 UDP/9191 для обмена информацией с другими серверами
(для приёма требуется лицензия Global);
может зависать при nmap
при установке необходимо запустить ./esvsetupcl-linux
(из software/storview/embedded/),
который опрашивает неинициализированные дисковые полки в локальной сети (UDP broadcast, port 21334, 1 секунда)
и позволяет установить пароль и настройки IP, после чего устройство считается инициализированным;
для управления используется StorView:
может работать на самом устройстве (лицензия Remote Access, нет email, SNMP и syslog)
или на сервере (лицензия Local Access) в фоновом режиме (Apache 2.0) - /StorViewInstall в /mnt/software/storview/linux
(размещается в /opt/StorView);
позволяет управлять устройством по HTTP (порт 9292 на устройстве или localhost)
или HTTPS (порт 9393, корневой сертификат - CA.cert, подвешивает Embedded module,
так что приходится его сбрасывать, заходя через последовательный порт);
аутентификация - Basic realm - "StorView", имя пользователя - admin,
первоначальный пароль устанавливается при инициализации; завершения сеанса нет;
каждый активный администратор изображается в виде человечка с казанием имени и IP адреса
можно докупить дополнительную лицензию глобального доступа (Global Access), которая обеспечивает извещение
по email (до 10 адресов, с выбором класса событий для каждого получателя,
время оформлено неправильно, после обновления прошивки появилась строка DATE, но с каким-то
левым временем и часовым поясом +0000),
SNMP trap (alerts-snmp.mib) и syslog (можно задать несколько получателей, тип - daemon);
при покупке выдаётся серийный номер, по которому можно сделать
запрос на лицензионный ключ на сайте (потребуется ввести WWN и заполнить анкету)
можно докупить дополнительную лицензию Snapshot, которая позволяет увеличить количество
Overwrite Data Areas (ODA) с 1 до 256, а количество снимков с 4 на логический диск до 64
можно докупить дополнительную лицензию SAN LUN Mapping (даётся 15 ознакомительных дней после чего доступ
к логическим дискам блокируется; в моём только что купленном устройстве интервал ознакомления оказался истёкшим);
также требуется для доступа к ODA с хоста
можно чем-то (NetBurner OS) управлять с помощью telnet - порт 2000 - посмотреть процессы, распределение памяти,
запросы к HTTP серверу, очистить настройки и флеш; имя и пароль запрашиваются; выход - quit
safte-monitor и sg_ses ничего не показывают
возможно создание до 64 (60?) массивов (групп дисков);
поддерживаемые типы RAID: RAID-0 (от 1 до 16), RAID-1 (от 1 до 2), RAID-10 (от 4 до 16),
RAID-5 (от 3 до 16), RAID-6 (от 4 до 16), RAID-50 (от 6 до 16)
(как распределены диски по подмассивам для RAID-10 и RAID-50?);
при создании запрашиваются (настройки сохраняются на всех дисках массива):
профиль использования: СУБД, создание видео, видео по запросу, почтовый сервер
имя массива (до 32 символов)
тип RAID и участвующие диски
размер блока
инициализировать (в фоновом режиме, можно несколько массивов одновременно,
инициализацию можно остановить или приостановить) или так сойдёт
размер резерва для обеспечения совместимости между сериями дисков по размеру (back-off procent)
управление предварительным чтением (автоматически, запретить, 256KB, 512KB, 1MB, 2MB)
размер кеша записи (запретить, 1MB, 2MB, 4MB, 8MB, 16MB, 32MB, 64MB, 128MB, 256MB, Max)
зеркалирование кеша между контроллерами
отключение кеширования при проблемах с батарейкой или дисками
управление кешированием записи при потоковой записи
можно изменить следующие параметры массива
имя массива
управление предварительным чтением
размер кеша записи
отключение кеширования при проблемах с батарейкой или дисками
управление кешированием записи при потоковой записи
управление питанием дисков (APM Level 2): можно останавливать диски
по истечению указанного интервала неиспользования и производить их периодическое включение для проверки
возможно создание до 256 (512?) логических дисков (LUN для хостовой системы) из части массива, всего массива
или частей нескольких массивов;
поддерживаются LUN более 2TB (а до скольки?);
контроллер занимает первый свободный LUN, т.е. до создания первого логического диска имеет LUN0,
после создания контроллер становится LUN1, а диск становится LUN0;
при создании задаются:
список массивов, из которых будет собираться логический диск
имя логического диска (до 32 символов)
размер в десятичных гигабайтах
размер блока (512 или 4096 байт)
номер LUN
через какие порты он будет доступен
можно изменить следующие параметры логического диска
имя логического диска
номер LUN
разрешить снимки (snapshot)
увеличить размер за счёт свободного места в любом регионе любого массива;
предварительно требуется остановить операции ввода/вывода (?)
запасные (Hot Spare) диски (до ? общих для всех массивов или до ? выделенных на массив),
при сбое одного из массивов
происходит автоматическое перемещение общего запасного диска в массив и восстановление массива;
размер запасного диска д.б. не меньше размера дисков группы (с учётом резервирования);
система может автоматически назначить свободный подходящий диск запасным при отсутствии выделенного
или глобального запасного диска (это позволяет просто заменить вышедший из строй диск;
необходимо включить Auto Spare );
приоритет при поиске: выделенный запасной диск, общий запасной диск, динамически назначаемый запасной диск;
"продвинутые" настройки контроллера:
имя конфигурации
WWN какого контроллера использовать в качестве WWN конфигурации
какой номер LUN использовать для контроллера (по умолчанию контроллер берёт первый свободный LUN,
что создаёт проблемы при добавлении новых логических дисков) или отключить совсем
использовать различные WWN для портов (необходимо для подключения обоих портов к одному коммутатору)
Auto Spare - считать диск, вставленный в слот, из которого был вынут сбойнувший диск, запасным
и запускать на нём восстановление массива
Auto Rebuild - автоматическое восстановление массива при наличии запасного диска
(устанавливается автоматически при назначении запасного диска! не нравится - сбрасывайте после этого)
одно- или двухконтроллерный режим (зеркалирование кеша, синхронизация прошивки)
забавная опция (Network Idle Timeout), позволяющая перезагружать сетевой модуль (Embedded module),
если не было HTTP обращений в течении указанного
интервала времени (от 10 минут до недели), в попытке восстановления после сбоев;
к сожалению, не помогает
идентификатор узла (ID 4 и ID 5), тип и скорость Fibre Channel портов
управление питанием дисков (APM Level 1): останавливать неиспользуемые и/или запасные диски,
возможно периодически включать остановленные диски для тестирования
при получении SCSI команды Synchronize Cache записывать кеш на диск или сразу отвечать OK
Target Command Thread Balance - оптимизировать максимальное время выполнения команды
или пропускную способность
уровень оптимизации поточной записи (для СУБД - отключить совсем)
управление передачей сообщений о перегрузке инициатору: не сообщать, сообщать TASK SET FULL,
сообщать BUSY; можно задать предельное время выполнения команды (по умолчанию - 4 секунды)
в фоновом режиме можно производить следующие операции с массивами:
инициализация (12 часов на RAID-6 из 12 SATA 1TB)
повторная инициализация
проверку чётности и корректировку (может потребоваться, если контроллер был выключен в момент записи,
только по одной операции одновременно, 13 часов на RAID-5 из 6 дисков 1TB):
чтение, повторный расчёт и сравнение
расчёт и запись
чтение, повторный расчёт, сравнение и запись
восстановление (только по одной операции одновременно),
операции с массивом в критическом состоянии и его
логическими дисками недоступны;
время восстановление терпимое - около 10 часов (5 часов при отсутствии нагрузки) на RAID-5 из 3 дисков
добавление диска к массиву (только по одной операции одновременно!);
RAID-10 расширяется парами дисков;
перед добавлением требуется остановить операции ввода/вывода (обошёлся без размонтирования),
их можно продолжить после достижения 1%;
сбой диска не останавливает расширение массива (в некоторых прошивках массив разваливается),
восстановление будет запущено только после завершения расширения;
сбой двух дисков во время расширения приведёт к разрушению массива;
в момент добавления отключается кеширование записи и его обратно не включить
(через терминальный доступ команда включения принимается, но явно не срабатывает);
перестроение идёт со скоростью 1% в час;
ни остановить, ни удалить невозможно, никакие операции с любыми массивами
и логическими дисками недоступны, кроме полной очистки конфигурации
можно сохранить настройки контроллера и массивов для последующего восстановления (1MB!)
имеются 2 версии журнала: журнал контроллера (до 4096 записей, доступен за кнопкой контроллера)
и журнал StorView (за кнопкой LOGS слева)
состояние контроллера: имеются датчики температур и напряжений в различных точках, статус контроллера и батарейки;
можно выключить или сбросить контроллер, обновить прошивку контроллера (EGCN-AxxxxA-xx.xx.xxxx.bin)
или модуля ввода/вывода (cdfw_1200_SAS1.0_xx.xx.bin), экспортировать или очистить журнал,
синхронизировать время с часами компьютера администратора
(не влияет на время StorView и нет понятия о часовых поясах и летнем времени), управлять лицензиями,
сбросить отладочную информацию в текстовом формате в файл
контроллер собирает и показывает разнообразную статистику, от простой скорости чтения и записи
до построения гистограммы размеров и выравнивания блоков при чтении и записи,
эффективности упреждающего чтения и слияния команд записи
за кнопкой About скрывается возможность загрузить новую версию StorView в устройство (storview-xxx.bin)
обновление прошивки подробно описано здесь
(всё остановить, прошить подключённые полки, прошить Boot PROM
(через последовательный порт, требуется аппаратная синхронизация, нажать Enter при загрузке,
проверить старую версию - ver, загрузить новую - dp, запустить пересылку файла по протоколу 1K X-Modem),
прошить контроллер (в браузере нажать иконку контроллера, EGCN*),
обновить StorView (кнопка About), прошить диски (через последовательный порт))
поставляется утилита, обеспечивающая интерфейс командной строки (LXCR - Linux Xyratex Command Line Interface for RAID);
32-битная; требуется libstdc++.so.5; ключ "--help"; может работать по TCP/IP ("-N -p имя -p пароль -p адрес")
или SCSI/FC (без всяких там паролей, но требуются права доступа);
только одна команда одновременно;
ключами задаются
объект
--controller (-C)
--configuration (-F)
--enclosure (-E)
--device (-D)
--hostport (-H)
--devport (-D)
--sysman
тип операции
--add
--create
--delete
--get
--number (получить значенине параметра или индекс объекта)
--commit
--set
-z команда
-p параметр
примеры использования командной строки:
LXCR -F -g -z raidsystems -N # опросить все дисковые полки в локальной сети: IP-адреса и MAC-адреса
LXCR -F -g -z rankconfigstruct -p 0 # общая информация о локальном контроллере с индексом 0
LXCR -F -g -z whomai # узнать WWN контроллера
LXCR -D -g -z alldriveinfostruct # вся информация о дисках (номер полки, номер слота, изготовитель, модель,
серийный номер, информация о подключении, счётчики ошибок, индекс массива (RankNo.; 255 - свободен))
LXCR -C -g -z allinfo # вся информация о контроллере и его состоянии (восстановление, инициализация,
проверка, версии, напряжения, температуры (воздуха, ЦП, RAID), состояние батарейки
LXCR -E -g -z sesinfo -l 1 # информация о дисковой полке и её состоянии (БП, вентиляторы, температуры, звучок)
Тестирование производительности с помощью bonnie++
Фирма Axus выпускает семейство автономных дисковых массивов,
монтируемых в стойку и подключаемых к серверу с помощью интерфейса SCSI SPI
или Fibre-Channel.
Например, модель Yotta YB-16SAEF4PR4 представляет собой
дисковую корзину, монтируемую в стойку (3U)
достаточно быстрый процессор (533MHz Power PC 440SP)
модуль памяти 512MB, DDRII SDRAM, 533MHz, ECC для кеширования (расширяется до 4GB)
аккумуляторный модуль (BBM) для обеспечения сохранности кеша при отключении питания
(160 часов для 512MB); работает не всегда
2 блока питания с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них), PFC, 460Wx2
2 вентиляторных блока по 2 вентилятора каждый с возможностью горячей замены
(обеспечивается работоспособность при отключении одного из них, индикатор сбоя)
16 отсеков для дисков SATA-II с NCQ (3.5", высота 1")
с горячим подключением (2 восьмиканальных контроллера);
в каждом отсеке индикаторы: голубой - питание/доступ, красный - сбой;
через интерфейс управления можно поморгать лампочкой диска и
узнать про каждый диск: номер канала,
модель, серийный номер, версию прошивки, ёмкость, поддерживаемые режимы работы,
текущий режим работы, состояние, число зависаний (timeout), ошибки носителя,
данные SMART (нормализованные)
RAID контроллер Areca (ARC-6080?)
2 канала FC (SFP), 1/2/4Gb, поддержка топологии: кольцо, точка-точка (не удалось запустить),
коммутируемая сеть (не на чем попробовать, но документация навевает сомнения
- в некоторых местах написано жёстко FC-AL, в некоторых точка-точка и кольцо,
в рекламе все 3 топологии), Auto (в реальности - кольцо);
можно вручную задать идентификатор кольца (от 0 до 125), создать таблицу соответствия
между шестнадцатеричными именами узлов/портов FC сети и именами, понятными человеку;
изменения в настройках скорости будут доступны только после сброса канала;
изменения в настройках топологии будут доступны после перезагрузки
датчики температуры платы, напряжений, состояний блоков питания,
скорости вращения вентиляторов, уровень зараядки аккумулятора и температуры дисков
доступны через интерфейс управления
Ethernet канал для управления (100Base-T): HTTP, telnet,
SNMP (только чтение, задаются до трёх серверов, имя комьюнити для чтения,
стандартные sysContact, sysName, sysLocation; areca2.mib);
IP параметры задаются явно или с использованием DHCP;
можно изменить номера портов для управления по HTTP и telnet,
а также порт SMTP сервера
управление через RS-232 (RJ-11) и с панели управления (4 кнопки для хождения по меню:
возврат наверх, предыдущий, следующий, подтверждение)
пароль доступа (admin/0000): один уровень, в открытом виде, общий на все интерфейсы
(ввод буковок перебором с панели - небольшая радость);
через некоторое время бездействия пароль требуется ввести заново
консольный порт (RS-232, VT100) для мониторинга состояния
ЖК экран (две строки по 16 символов),
сигнальные лампочки на панели управления (индикатор питания, наличие проблемы, доступ), звучок
сообщения о событиях по SMTP; задаётся IP адрес и порт сервера SMTP, имя и адрес отправителя,
имена и адреса получателей, какие сообщения посылать, посылать ли раз в сутки
"контрольное" сообщение
кеширование записи на дисках (да, нет, в зависимости от наличия батарейки -
выключен при наличии)
округление вниз объёма дисков до 1ГБ или 10ГБ
диски необходимо объединять в поименованные группы дисков (Raid Set),
до 5 групп, до 16 дисков в группе;
диски в группе должны быть одного размера и скорости (точнее говоря, от каждого диска
будет использоваться часть, соответствующая размеру минимального диска);
новые диски можно добавлять в группу, при этом часть данных мигрирует на новый диск,
освобождая равное свободное место на каждом диске нового состава группы
(при добавлении 2 дисков 750GB миграция заняла 40 часов);
удалять диски из группы нельзя;
группу можно деактивировать (для переноса на другое устройство)
и активировать (после включения устройства в неполном составе группы дисков);
если в момент миграции отключилось электропитание, то набор дисков может "пропасть"
из конфигурации устройства, функция "Rescue" может помочь восстановить группу дисков
(а может и не помочь, выполняется после перезагрузки) и воссоздать оглавления дисков;
при миграции не надо "баловаться" с FC сетью -
у меня устройство зависло с развалом массива ("Lost REB/MIG LBA")
RAID массив называется здесь набором томов (Volume Set)
и создаётся из части дискового пространства группы дисков (до 16 массивов на группу);
для сервера каждый набор томов выглядит как логическое устройство (точнее, как LUN,
а каждый FC-порт - как исполнитель (target) SCSI);
группа дисков должна содержать достаточное количество дисков для организации массива
указанного уровня (RAID-0 и RAID-1 - от 2 дисков, RAID-3 и RAID-5 - от 3 дисков,
RAID-6 и RAID-1+0 - от 4 дисков);
группа может содержать больше дисков, чем это необходимо для массива заказанного уровня -
содержимое массива равномерно распределяется по всем дискам группы (например, можно
сделать RAID-1 на 7 дисках);
группа дисков может содержать массивы разных уровней;
параметры набора томов (большинство можно изменять без остановки работы массива):
имя
объём (можно только увеличивать)
FC канал (0, 1 и 0+1) и LUN
уровень RAID (миграция от RAID-6 к RAID-5 занимает более 2 суток)
размер полоски (4KB, 8KB, 16KB, 32KB, 64KB, 128KB;
при изменении начинается процесс миграции)
размер блока (512 или 4K; менять нельзя)
поддержка разделов более 2 ТБ (менять нельзя):
не поддерживать,
поддерживать за счёт блоков размером 4KB (для MS Windows), до 16ТБ
поддерживать за счёт 64-битной адресации LBA (Unix, Linux, MS Windows2003SP1), до 512ТБ
тип кеширования записи
очередь команд
тип инициализации (RAID-0 и RAID-1 доступны немедленно): непосредственная (сутки на дисках 750GB),
в фоновом режиме (в общих настройках задаётся процент пропускной способности)
и совсем без инициализации (для восстановления развалившихся массивов);
миграция при изменении всегда происходит в фоновом режиме
фильтр FC/SCSI инициаторов (до 8 фильтров) позволяет задать списки доступа
(по WWNN или WWPN инициатора и сетевой маске), список доступа может быть
включающим или исключающим (массив будет невидим для попавшего в этот список),
доступ к массиву может быть на чтение и запись или только на чтение (атрибут должен
проверяться ОС инициатора, Linux не проверяет и получает ошибки записи);
если инициатор не попал ни в один список и нет ни одного включающего списка, то он имеет доступ;
если инициатор не попал ни в один список и есть включающий список, то он не имет доступа
настройки массивов записываются в NVRAM и на диски, что позволяет при необходимости
перенести группу дисков в другое устройство
запасные (Hot Spare) диски (общие для всех групп), при сбое одного из массивов
происходит автоматическое перемещение в группу и восстановление массива;
размер запасного диска д.б. не меньше размера дисков группы
после аварийного выключения питания миграция и перестроение массива продолжаются
с точки останова
устройство может обеспечить прозрачный доступ к отдельным дискам, не входящим в группу,
при этом задаются следующие параметры (можно изменять без остановки работы):
тип кеширования записи
очередь команд
FC канал (0, 1 и 0+1) и LUN
если при загрузке в массиве отсутствует диск, то группа дисков переводится в состояние
Incomplete; при этом расположенные на нём массивы недоступны;
можно вручную перевести его в состояние Degraded
имеются процедуры проверки массива (RAID-5 и RAID-6; чтение блоков данных,
перевычисление и сравнение контрольных сумм) по запросу (можно остановить)
и с использованием планировщика, общие правила для всех, задаётся:
количество недель между проверками
(интервал считается от момента завершения предыдущей операции)
проверки после простоя указанной длительности (у меня при данной настройке
проверка не запускается никогда)
при обнаружении плохого блока восстанавливать ли данные из контрольной суммы
при ошибке контрольной суммы восстанавливать ли её из данных
имеется журнал событий (30 записей)
умеет брать время с одного из 2 NTP серверов, учитывать зону и летнее время;
собственных часов реального времени нет, так что до подключения к NTP
в журнал заносится относительное время после загрузки
опция в меню "Restart Controller" сбрасывает все настройки и описания массивов!
обновление прошивки (1.44, хотя уже есть 1.45) состоит из 3 файлов:
BIOS (xxxBOOT.BIN), начальный загрузчик (xxxMBR0.BIN) и управляющая программа (xxxFIRM.BIN);
в браузере можно указать только один файл для заливки;
после обновления все настройки сбрасываются
Интерфейсы управления и настройки: панель управления с 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 массив создаётся из разделов, а не из дисков.
При создании разделов необходимо указывать тип "fd" (Linux RAID auto).
Далее надо описать массив в файле /etc/raidtab и создать его командой mkraid (пакет raidtools).
Информация о конфигурации заносится на диск, что позволяет ядру при загрузке
распознавать элементы RAID массивов и собирать массивы автоматически.
Формат файла /etc/raidtab (raidtab(5), значение каждого параметра на отдельной строке
вслед за именем параметра):
raiddev имя-устройства (например, /dev/md0)
raid-level RAID-уровень
nr-raid-disks число-разделов-в-массиве
nr-spare-disks число-разделов-горячей-замены
device имя-первого-раздела
raid-disk 0
device имя-второго-раздела
raid-disk 1
...
Ключи программы инициализации массива mkraid (первый параметр - имя массива):
--configfile имя-файла (по умолчанию - /etc/raidtab)
--force (инициализировать массив несмотря на предупреждение)
--upgrade (преобразовать массив в новый формат; рекомендуется предварительно сохранить
данные)
Созданный массив можно форматировать и монтировать как обычный раздел.
Состояние массива можно посмотреть в файле /proc/mdstat, который для каждого массива
показывает его имя (md0), состояние (active), тип (raid1), составляющие массив разделы
и их порядок в массиве, объём массива и состояние разделов ("U" - нормально,
"_" - сбой).
Утилита lsraid позволяет получить информацию о RAID массиве,
в т.ч. о вышедших из строя дисках (получает информацию с "оставшихся в живых", но хоть какая-то
часть устройств должна быть доступна):
-p (сканировать все устройства из /proc/partitions в сочетании с -A/-D/-R)
-A {-a md-устройство | -d устройство} (вывести информацию о массиве;
ключи -a и -d позволяют добавить md-устройство и блочное устройство в список опрашиваемых;
ключ -g выводит только работоспособные блочные устройства;
ключ -f выводит только неработоспособные блочные устройства;
ключ -s выводит только резервные блочные устройства)
-D {-a md-устройство | -d устройство} (вывести информацию об исходных блочных устройствах;
ключ -l выводит большее количество информации)
-R {-a md-устройство | -d устройство} (вывести информацию в формате raidtab(5))
Утилита raidstop удаляет raid-устройство, не трогая исходные блочные устройства.
Утилита raidstart собирает массив вновь без инициализации (запускает перестроение массива
при добавлении вручную отформатированного раздела в массив взамен неисправного). Ключи:
--configfile имя-файла (по умолчанию - /etc/raidtab)
-a (все устройства, указанные в конфигурационном файле; иначе необходимо указывать
имена raid-устройств)
Утилита raidreconf
пытается (предварительное резервирование данных обязательно!) преобразовать массив
из одного формата в другой или одиночный диск в массив
(RAID-0 и RAID-5) или массив в одиночный диск,
может также увеличить или уменьшить массив (RAID-0 и RAID-5). Ключи:
--old старая-конфигурация
--new новая-конфигурация (после удачного преобразования её необходимо поместить на место старой)
Пакет 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 задаёт команду,
второй - логическое устройство. Опции:
-v
--readonly (таблица соответствия защищена от записи после загрузки)
Команды:
version
targets (выдать список, поддерживаемых методов отображения)
ls (выдаёт список устройств)
deps [имя-устройства] (выдаёт список базовых блочных устройств)
info [имя-устройства] (выдаёт информацию о логическом устройстве: имя,
состояние (ACTIVE, SUSPENDED, READ-ONLY), наличие таблицы интервалов (LIVE, INACTIVE),
число использований, номер последнего события, major, minor, число интервалов, UUID
status [имя-устройства] (выдаёт информацию о каждом интервале: начало, длина, тип)
table [имя-устройства] (выдаёт информацию о каждом интервале в формате для последующей
загрузки командой load)
create имя-устройства [--major major] [--minor minor] [-u uuid] [имя-файла]
(таблица интервалов читается из файла или с stdin; после создания появляется устройство
в /dev/mapper)
load имя-устройства [имя-файла] (загрузить таблицу из файла или с stdin)
reload имя-устройства [имя-файла] (загрузить таблицу из файла или с stdin)
remove имя-устройства (реальное удаление произойдёт после обнуления счётчика использований)
remove_all
rename имя-устройства новое-имя-устройства
suspend имя-устройства
resume имя-устройства
wait имя-устройства [число] (ждать пока счётчик событий не превысит указанное число;
текущее значение счётчика выдаётся командой info)
Формат таблицы (каждая строка описывает один интервал,
параметры разделяются пробелом):
начальный сектор
число секторов
метод отображения
дополнительные параметры, зависящие от метода:
linear
major:minor базового блочного устройства или имя файла
начальный сектор базового блочного устройства
striped
число полосок (stripes)
размер куска в секторах (chunk)
major:minor базового блочного устройства или имя файла
начальный сектор базового блочного устройства
...
error (любое обращение к сектору из этого интервала возвращает сообщение об ошибке ввода-вывода)
Физический доступ к дискам на псевдо-RAID контроллерах
поддерживается специальными модулями ядра (подсистема libata):
Promise Technology, Inc. FastTrak TX4000/376/378/S150 TX4 (PDC20319):
модуль ft3xx в ядре 2.4 или модуль sata_promise в ядре 2.6
Highpoint HPT37X:
Highpoint HPT45X:
Intel Software RAID:
NVidia NForce:
Пакет 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:
-v|--verbose
-d|--debug
-i|--ignorelocking (необходимо при начальных этапах загрузки)
-f|--format формат[,...] (ограничить действие команды указанными форматами метаданных,
список поддерживаемых форматов можно получить по команде --list_formats;
полезен, если на устройстве обнаружено несколько сигнатур)
--separator символ-разделитель-полей
[-D|--dump_metadata] (для команды "--raid_devices" метаданные сбрасываются в файл
ИмяФормата_ИмяУстройства.dat, смещение метаданных - в файл ИмяФормата_ИмяУстройства.offset,
число секторов - в файл ИмяФормата_ИмяУстройства.size)
-c|--display_columns имя-поля[,...] ()
Команды dmraid:
--list_formats (выдать список подерживаемых форматов)
--block_devices [имя-устройства]
(выдать информацию о блочных устройствах: имя, размер, серийный номер)
--raid_devices [-E|--erase_metadata] [-c|--display_columns имя-поля[,...]] имя-устройства
(выдать информацию о RAID устройствах (физическое блочное устройство, являющееся часть
набора RAID): формат метаданных, уровень, число используемых
секторов, смещение от начала диска; можно явно указать имена колонок:
devpath, format, raidname, type, status, size, dataoffset)
--native_log [имя-устройства] (выдать метаданные в формате производителя)
-s [active|inactive] [-c|--display_columns имя-поля[,...]] [имя-набора]
(выдать информацию о наборах RAID устройств
(совокупность RAID устройств, образующих логическое блочное устройство);
дополнительный ключ -s вызывает выдачу информации о поднаборах (для RAID 10);
ключ -g вызывает выдачу информации о группах наборов;
можно явно указать имена колонок: format, raidname, type, status, stride,
size, subsets, devices, spares)
--activate {yes|no} [имя-набора] (активировать или деактивировать RAID набор;
ключ --no_partitions откладывает активизацию разделов на логическом устройстве)
Пример борьбы в 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 -
создаёт новое блочное устройство с помощью 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 - работает и обслуживает
shaky - работает, но недоступен для обычных операций ввода/вывода
faulty - не работает (failed с точки зрения device-mapper)
ghost - запасной путь, ждёт смерти основного
Пути объединяются в группы путей (группа может состоять из одного пути).
В каждый момент времени только одна группа может находиться в активном состоянии,
т.е. обслуживать ввод/вывод. Заявки внутри активной группы путей обрабатываются по очереди
работающими (ready) путями в соответствии с приоритетами путей.
Приоритет группы равен сумме приоритетов работоспособных путей из группы.
Предполагается, что активной группой должна быть группа с наивысшим приоритетом.
Группа путей может быть в одном из следующих состояний:
active - работает и обслуживает
enabled - ждёт пока в активной группе не отвалятся все пути
disabled - ждёт пока в активной группе и всех разрешённых группах не отвалятся все пути
Многопутёвое устройство создаётся device-mapper (target multipath)
и содержит одну или более групп путей. Идентифицируется по WWID или имени
(обычно или совпадает с WWID или имеет вид mpathX).
device-mapper-multipath состоит из
модуля ядра dm_multipath (обеспечивает обслуживание соответствующего
target для device-mapper),
обеспечивает распределение нагрузки внутри группы путей и переключение состояний групп путей
модуля ядра dm_round_robin
модули ядра, специфические для устройства, необходимые для обработки ошибок
и переключения групп путей
утилита multipath (/etc/multipath.conf, multipath.8) позволяет собирать, просматривать и
удалять многопутёвые устройства, запускается при загрузке из
rc.sysinit и при добавлении нового блочного устройства с помощью udev
(/etc/udev/rules.d/40-multipath.rules?)
получает список путей от sysfs
для каждого пути извлекается WWID (используется белый список допустимого оборудования)
сливает пути в группы в соответствии с политиками и группы в многопутёвые устройства
полученную карту скармливает ядру (device mapper)
имена блочных устройств обрабатываются udev
/etc/udev/rules.d/40-multipath.rules? обеспечивает записи
для многопутёвых устройств в /dev/disk/by-id/ и /dev/mpath/
демон multipathd и соответствующий сервис (/etc/rc.d/init.d/multipathd, multipathd.8) -
слежение за восстановлением и созданием новых путей (точнее за тем, чтобы активной было группа
с наивысшим приоритетом) и вызов multipath
утилита kpartx (/etc/kpartx.conf?, kpartx.8?, kpartx_get_name?)
позволяет разбить многопутёвое устройство на разделы
/etc/dev.d/block/multipath.dev?
cciss_id выдаёт WWID для Compaq SMART Array Controllers
mpath_ctl {add|remove} {map|path} имя-в
mpath_get_name?
утилита автоматического определения приоритета пути по битам ALUA (SPC-3) -
path_prio_alua (mpath_prio_alua.8)
утилиты автоматического определения приоритета пути для различных устройств -
mpath_prio_emc,
mpath_prio_hds_modular, mpath_prio_hp_sw, mpath_prio_netapp, mpath_prio_tpc
Конфигурационный файл /etc/multipath.conf имеет вложенную блочную
структуру (блоки выделяются фигурными скобками за именем блока;
значения по умолчанию можно посмотреть в файле multipath.conf.defaults):
блок defaults определяет значения параметров по умолчанию
udev_dir каталог-с-устройствами (/dev)
polling_interval секунд (5)
selector алгоритм ("round-robin 0"; алгоритм выбора пути,
предлагаемый по умолчанию; других и не бывает)
path_grouping_policy политика (failover; политика группирования путей по умолчанию)
failover - один путь на группу
multibus - все пути в одну группу
group_by_serial - группировать по серийному номеру
group_by_prio - все пути одинакового приоритета в группу
group_by_node_name - группироватть пути по имени исполнителя
getuid_callout скрипт ("/sbin/scsi_id -g -u -s";
скрипт и аргументы для получения уникального идентификатора пути (тома? WWID?))
prio_callout скрипт (; скрипт и аргументы для получения приоритета пути;
если указать шаблон "%n", то вместо него будет подставлено имя устройства вида "sda")
features дополнительные-опции-multipath (; реализована только "1 queue_if_no_path" -
эквивалент "no_path_retry queue")
failback секунд (immediate; задержка при возвращении группы путей в состояние активности;
immediate - немедленно, manual - ждать ручного вмешательства)
rr_min_io число (1000; количество операций ввода/вывода перед переключением
к следующему пути в группе при распределении нагрузки)
max_fds число (; максимальное число открытых дескрипторов файлов для multipathd;
можно указать unlimited)
rr_weight {priorities|uniform} (uniform - поровну; priorities - путь с большим приоритетом
будет получать большую нагрузку)
no_path_retry {queue|fail|число} (; количество неудачных
попыток до остановки постановки в очередь; fail - перестать сразу;
queue - ставить невзирая на)
flush_on_last_del {no|yes} (no; прекратить постановку в очередь при удалении последнего пути)
user_friendly_names {no|yes} (no; использовать /var/lib/multipath/bindings для
назначения уникального имени (каждая строка содержит имя вида mpathN и WWID);
заполняется автоматически
bindings_file /var/lib/multipath/bindings
mode 0644 (права доступа к файлам многопутёвых устройств)
uid 0
gid 0
блок devnode_blacklist задаёт шаблоны имён и/или WWID блочных устройств,
которые система multipath обслуживать не будет (по умолчанию - не обслуживается никто)
wwid уникальный-идентификатор
devnode регулярное-выражение
devices - настройки по типам устройств (по vendor и product);
содержит вложенные блоки device
vendor строка (определяет изготовителя, для которого определяются
дальнейшие специфические настройки)
Рассмотрим решение следующей проблемы - имеются два двухпортовых iSCSI хранилища
и несколько серверов, в каждом из которых выделено по два порта для работы SAN,
организовано 2 выделенных сети, каждая из которых обслуживает свой набор портов.
Необходимо развести их так, чтобы в нормальных условиях трафик к первому хранилищу
проходил внутри первой сети, трафик ко второму - внутри второй сети.
И только при сбое одной из сетей весь трафик перемещался во вторую.
При этом остальные хранилища продолжали работать как раньше.
заносим WWID логического тома в /var/lib/multipath/bindings (например, под именем mpathtest)
создаём скрипт получения приоритета в зависимости от IP адреса портала
/usr/local/sbin/mpath_prio_ip (права не забыть):
#!/bin/sh
HBTL=`ls -l --full-time /sys/block/$1/device|awk '{print $11}'|awk -F/ '{print $7}'`
HBT=`echo $HBTL|awk -F: '{print $1 ":" $2 ":" $3}'`
if [ -f /sys/class/iscsi_transport/target$HBT/portal_ip_address ]
then
ip=`cat /sys/class/iscsi_transport/target$HBT/portal_ip_address`
if [ $ip = "первый порт первого хранилища" ]
then
pri=50
elif [ $ip = второй порт первого хранилища"" ]
then
pri=10
elif [ $ip = "первый порт второго хранилища" ]
then
pri=10
else
pri=50
fi
else
pri=30
fi
echo $pri
Позволяет создавать массив из блочных устройств, как физических (в т.ч. разделов
и 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":
Для работы в режиме 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) и после запуска.
Возможные состояния массива:
clear (отсутствие массива)
inactive (настройки есть, но массив не работает - все запросы ввода-вывода завершаются
аварийно)
suspended (все запросы ввода-вывода откладываются; не реализовано)
readonly (запросы записи завершаются аварийно)
read-auto (модификация readonly?)
clean (массив в работе; нет незавершённых запросов записи)
active (массив в работе)
active-idle (массив в работе; не было запросов записи в течении определённого времени)
write-pending
Описание устройства в /sys/block/mdN.
В версии ядра 2.6.18 имеется подкаталог md с описанием
параметров массива:
level (уровень RAID)
raid_disks (число устройств)
chunk (размер "куска")
component_size (логический размер устройства)
metadata_version (версия метаданных)
layout (вариант реализации уровня)
resync_start (?)
new_dev (сюда надо записывать major:minor добавляемого диска)
safe_mode_delay (период бездействия при записи отметок
clean/dirty в секундах, вещественное число, см. ниже; установка 0 отключает безопасный режим)
array_state (состояние массива, в некоторых случаях сюда можно писать)
sync_speed_min (см. /proc/sys/dev/raid/speed_limit_min; ограничение на каждый диск; только для данного массива)
sync_speed_max (см. /proc/sys/dev/raid/speed_limit_max; ограничение на каждый диск; только для данного массива)
sync_completed (число синхронизированных секторов / общее число секторов)
sync_speed (средняя - за 30 секунд - скорость синхронизации)
sync_action (состояние перестроения массива: resync (перевычисление контрольных сумм),
recover (подключение диска горячей замены), idle (всё хорошо), check (проверка контрольных сумм),
repair (проверка и перевычисление контрольных сумм по запросу пользователя);
сюда можно записывать требуемое состояние: idle (приостановить текущий resync/recovery),
resync (возобновить resync, остановленный командой idle),
recovery (возобновить recovery, остановленный командой idle),
check (начать проверку контрольных сумм),
repair (начать проверку и перевычисление контрольных сумм))
mismatch_count (число нессответствий при проведении проверки или восстановления контрольных сумм)
stripe_cache_size (только RAID-5; от 16 до 32768; по умолчанию - 128)
strip_cache_active (только RAID-5)
Для каждого компонента массива имеется подкаталог /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) устройство, то оно вводится в эксплуатацию.
Параметры ядра:
raid=noautodetect (по умолчанию, первичные разделы дисков типа 0xFD проверяются на наличие
метаданных и из обнаруженных частей строятся массивы)
raid=partitionable (автоматически собранный массив будет иметь разделы; только в ядре 2.6;
см. mdp в /proc/devices)
md=номер,устройство1,... (собрать /dev/mdN из указанных устройств при загрузке;
необходимо для корневой файловой системы; если перед номером указать символ "d",
то соберётся устройство с разделами)
md-mod.start_dirty_degraded=1 (массив RAID-5 или RAID-6 в состоянии "dirty" при отказе
одного из дисков может иметь повреждённые данные, которые невозможно проверить;
по умолчанию, система не будет собирать такой массив без использования ключа --force;
для сборки корневого диска требуется указание этого параметра ядра)
Созданный массив можно форматировать и монтировать как обычный раздел.
Состояние массива можно посмотреть в файле /proc/mdstat, который для каждого массива
показывает его имя (md0), состояние (active), тип (raid1), составляющие массив разделы
и их порядок в массиве, объём массива и состояние разделов ("U" - нормально,
"_" - сбой). Пример вывода /proc/mdstat (номер в скобках после имени диска - номер в массиве;
первое число в скобках после числа блоков - общее число дисков, второе - чмсло активных дисков):
--scan (использовать конфигурационный файл и /proc/mdstat для поиска отсутствующей информации)
--verbose [--verbose]
--quiet
--brief [--verbose]
--force (разрешить сомнительные действия)
--metadata=формат (0 или 0.90 или default; 1 или 1.0; 1.1; 1.2)
--write-mostly (при создании или добавлении последующие устройства пометить флагом writemostly)
--bitmap=имя-файла (специальные имена: internal - хранить битовую карту рядом с метаданными;
none - удалить битовую карту)
--bitmap-chunk=число (сколько КБ представляет каждый бит)
--write-behind[=число] (сколько оперций записи можно кешировать,
только в сочетании с битовой картой)
Режимы:
--create (создать массив с записью метаданных; в качестве имени временно отсутствующего
компонента можно указывать слово "missing")
--level=RAID-уровень
--layout=вариант-реализации
для raid5 можно определить расположение блока чётности:
left-asymmetric, left-symmetric, right-asymmetric, right-symmetric
для faulty можно определить характер моделируемых ошибок и период (число за словом):
write-transient, read-transient, write-presistent, read-persistent, write-all,
read-fixable, clear (сбросить все периоды),
flush (сбросить все накрпленные постоянные ошибки), none;
режимы можно добавлять с помощью --grow
для raid10: n (near) или f (far), за которым следует число копий;
по умолчанию - n2
--chunk=размер (64; размер куска в кибибайтах)
--rounding=размер (для linear)
--raid-devices=число-активных-устройств
--spare-devices=число-резервных-устройств
--size=кибибайт (размер используемой части каждого устройства)
--assume-clean (массив существовал ранее и находился в совместимом состоянии)
--name=имя-массива (только для метаданных версии 1)
--run (запустить массив, несмотря на то что некоторые компоненты используются
в других массивах и файловых системах)
--auto[=no|yes|md|mdp[число-разделов]][номер] (создать при необходимости файл устройства,
используя неиспользуемый minor; mdp - устройство с разделами)
--assemble (сборка созданных ранее частей массива в действующий массив)
--uuid=уникальный-идентификатор (устройства, не умеющие указанного идентификатора
в метаданных, исключаются из списка кандидатов в компоненты массива
--name=имя-массива (имя, использованное при создании массива)
--run (запустить массив, несмотря на неполноту собранного массива)
--auto[=no|yes|md|mdp[число-разделов]][номер] (создать при необходимости файл устройства,
используя неиспользуемый minor; mdp - устройство с разделами)
--update=опция (преобразовать метаданные при сборке:
super-minor - согласовать номер minor в метаданных с minor собираемого массива
--monitor (периодический опрос и извещение о событиях;
может также переместить запасной диск в пределах одной spare-group;
применение см. в /etc/rc.d/init.d/mdmonitor)
--mail email-адрес (послать письмо при наступлении событий: Fail, FailSpare, DegradedArray,
TestMessage)
--program имя-программы (при наступлении любого события выполнить программу;
первый параметр - имя события, второй - имя массива, третий - имя устройства)
--syslog (источник: daemon)
--delay секунд (интервал между опросами)
--daemonise (при запуске перейти в фоновый режим)
--pid-file имя-файла
--oneshot (для запуска из cron; события: NewArray, DegradedArray, SparesMissing)
--test (для тестирования; события: TestMessage)
--grow (изменение формата массива: увеличение и уменьшение параметра size для RAID-1, RAID-5
и RAID-6 (это позволяет по очереди заменить маленькие диски на большие, затем
увеличить размер массива, затем увеличить размер файловой системы);
изменение числа дисков в RAID-1; добавление битовой карты в RAID-1)
Простейшие задачи:
проверка состояния массива: mdadm --query --detail /dev/md0
подстановка нового диска взамен упавшего (таблицу разделов необходимо сделать вручную):
mdadm --manage /dev/md0 --add /dev/sdb1
Имена событий мониторинга:
DeviceDisappeared (созданный ранее массив перестал собираться)
RebuildStarted
Rebuild20, Rebuild40, Rebuild60, Rebuild80 (прохождение при перестроении
указанного числа процентов)
RebuildFinished
Fail (используемый компонент массива помечен как неисправный)
FailSpare (сбойнул резервный диск, используемый вместо ранее сбойнувшего основного)
SpareActive (резервный диск введён в действие вместо неисправного)
NewArray (обнаружен новый массив)
DegradedArray (обнаруженный массив имеет неисправные компоненты)
MoveSpare (резервный диск перемещён от одного массива в другой в пределах spare-group)
SparesMissing (в обнаруженном массиве не хватает задекларированного резервного диска)
TestMessage (выдаётся для каждого обнаруженного массива по ключу --test)
Формат конфигурационного файла (по умолчанию: /etc/mdadm.conf):
файл состоит из слов, разделённых пробельными символами
символ "#" начинает комментарий, который продолжается до конца строки
строка, начинающаяся с пробела или табуляции, является продолжением предыдущей строки
прочие строки начинаются с ключевого слова
DEVICE - перечисляются устройства и разделы,
которые могут содержать компоненты массивов при автоматической сборке (--scan);
можно использовать шаблоны; ключевое слово partitions ссылается на /proc/partitions
ARRAY - описываются реальные массивы; можно получить по "mdadm --examine --scan";
первый параметр указывает имя устройства массива (/dev/md0);
следующие параметры описывают массив (логическое И):
uuid= (UUID из метаданных в шестнадцатеричном формате)
name= (имя массива из метаданных)
super-minor= (minor из метаданных - заносится при создании)
devices= (имена или шаблоны имён устройств через запятую; должны быть указаны в DEVICE)
level= (уровень RAID)
num-devices=
spare-group= (имя группы запасных дисков; диски являются общими для всех массивов группы)
auto= (см. описание ключа --auto)
MAILADDR - e-mail адрес для извещений при мониторинге
PROGRAM - имя-программы, вызываемой при мониторинге
Утилита 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) записать загрузчик на второй диск:
При первой загрузке необходимо обеспечить мониторинг массивов:
в /etc/mdadm.conf в DEVICE поставить /dev/hd*, /dev/sd* и что там у вас есть ещё
запустить mdadm --examine --scan
результат записать в /etc/mdadm.conf
поменять MAILADDR
[пере]запустить mdmonitor (service, chkconfig) и проверить какие ключи он использует
(желателен --syslog и проверить с помощью --oneshot --test)
Оставшийся в живых раздел из состава 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) позволяет рассматривать разделы дисков как
элементарные строительные блоки, которые можно объединять в общий пул пространства хранения,
из которого можно нарезать логические диски требуемого размера. 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
Вводится следующая иерархия понятий:
физический том (раздел диска или RAID устройство); делится на экстенты (PE - physical extents),
по умолчанию размер экстента - 4MB; 32 МБ (обеспечивает максимальный размер логического тома в 2 ТБ в ядре 2.4);
идентифицируются по UUID, а не по имени устройства, однако, при "горячем" подключении
может потребоваться выполнить утилиту vgscan
группа логических томов (пул) состоит из одного или нескольких физических томов;
физические тома можно добавлять в группу и удалять из неё; размер PE всех томов в группе одинаков
логический том является частью группы логических томов, его можно форматировать и
монтировать как обычный раздел; размер логического тома можно увеличивать за счёт свободного
места в той же группе логических томов; неиспользуемую часть логического тома можно
вернуть в группу; размер логического тома кратен размеру экстента (размер логического
экстента - LE - совпадает с размером физического экстента);
максимальный размер тома (зависит от размера PE!) - 16TB для x86 и 8EB для x86-64;
каждому логическому тому соответствует блочное устройство /dev/mapper/группа-том
(при создании снимков кроме устройства для тома снимков
создаётся дополнительное устройство для "реального" исходного тома и изменений к нему)
и ссылка на него в /dev/группа/том
Стратегии отображения логических экстентов на физические:
линейное отображение
отображение с чередованием (первый LE отображается на первый PE на первом физическом томе,
второй LE - на первый PE на втором физическом томе и т.д.), позволяет распараллелить
доступ к дискам
смешанные стратегии как результат расширения группы томов
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:
раздел /boot нельзя располагать на LVM ни в коем случае, поэтому его необходимо создать
отдельно (100 МБ, обязательно первичный раздел)
создать требуемое число физических томов из свободных разделов или RAID устройств -
выбрать physical volume LVM в качестве типа файловой системы
объединить требуемые физические тома в группу (группы) логических томов - кнопка LVM,
здесь же можно установить имя группы и размер экстента (по умолчанию - 32 МБ)
создать требуемые тома из частей группы логических томов (кнопки Add/Edit/Delete);
здесь задаётся размер и имя логического тома, тип файловой системы или swap и точка монтирования;
часть места в группе можно оставить под дальнейшее расширение (я бы даже рекомендовал
создавать файловые системы поменьше, т.к. увеличивать размер файловой системы легко,
а уменьшать сложно)
Утилита /sbin/lvm (/sbin/lvm.static) может выполнить любую из
нижеупомянутых функций. Имя функции указывается в качестве первого параметра
(дополнительные функции - dumpconfig, formats, segtypes). Без параметров утилита переходит
в интерактивный режим (используются возможности readline). Возможно чтение
команд из файла. Общие ключи:
--driverloaded { y | n } (пытаться ли загружать модули ядра)
--autobackup { y | n } (делать ли резервную копию метаданных после изменения;
обычно последняя версия хранится в /etc/lvm/backup/имя-группы, а предыдущие в
/etc/lvm/archive/)
--partial (пытаться работать с частично доступными группами томов)
--metadatatype тип
--ignorelockingfailure (используется при загрузке, когда замки (в /var/lock/lvm/) недоступны)
--addtag этикетка (добавить этикетку в описание физического тома, группы или
логического тома; в дальнейшем объекты можно группировать, используя строку
'@этикетка' вместо имён объектов)
--deltag этикетка
--alloc политика-выделения-PE
normal (по умолчанию; некие разумные правила)
inherit (логический том наследует политику от группы томов)
contiguous (новые PE должны примыкать к уже выделенным)
anywhere (брать PE откуда угодно)
Переменные окружения:
LVM_SYSTEM_DIR (/etc/lvm; каталог, содержащий lvm.conf и прочие файлы)
LVM_VG_NAME (имя группы томов по умолчанию)
Работа с физическими томами:
pvcreate (инициализация указанного раздела (типа 0x8e), диска (без таблицы разделов),
метаустройства или loopback в качестве физического тома: создание VGDA -
volume group descriptor area):
--uuid UUID (задать UUID явно; необходим при восстановлении метаданных)
--yes (автоматически отвечать "да" на все вопросы)
--force [--force]
--zero { y | n } (обнулять ли первые 2048 байт; по умолчанию они обнуляются, если
не использованы ключи --restorefile или --uuid)
-M2 (использовать формат LVM2)
--metadatasize байт
--metadatacopies число-копий (0; 1: записываются в пятом секторе; 2: записываются в начале и в конце)
--dataalignment выравнивание
--restorefile имя-файла (восстановить метаданные из файла, созданного vgcfgbackup)
--labelsector номер-сектора (по умолчанию, метка записывается во второй сектор)
--setphysicalvolumesize размер (по умолчанию, соответствует размеру исходного блочного устройства)
--units единицы-размера (выводить размеры в указанных единицах: h, H - человеколюбивый формат;
s - в секторах; b - в байтах; k, m, g, t - в двоичных килобайтах и т.д.;
K, M, G, T - в десятичных килобайтах и т.д.)
--nosuffix (не выводить суффикс единиц измерения)
--unbuffered
--options список-колонок-через-запятую (pv_fmt, pv_uuid, pv_size, dev_size, pv_free, pv_used,
pv_name, pv_attr, pv_pe_count, pv_pe_alloc_count, pv_tags; можно также использовать
имена колонок из vgs)
--sort список-колонок-через-запятую (для обратного порядка сортировки используйте знак '-'
перед именем колонки)
--all (обработать все обнаруженные физические тома)
--allocatable { y | n } (разрешать ли использование PE с данного физического тома)
pvmove (переместить выделенные PE с одного физического тома на другой; если тома не указаны,
то возобновляется прерванное ранее перемещение; на время перемещения создаётся временый
логический том "pvmove"):
исходный-физический-том[:PE[-PE]...]
физический-том-назначения[:PE[-PE]...] ... (если интервал не указан, то используется
свободное место; если том назначения совсем не указан, то используется алгоритм выделения,
приписанный группе томов)
vgchange (изменить атрибуты указанной группы томов)
--available {y | n } (доступность логических томов для ввода/вывода)
--available {ey | en } (доступность логических томов для ввода/вывода в кластере для одного узла)
--available {ly | ln } (доступность логических томов для ввода/вывода в кластере для этого узла)
--logicalvolume число (задать максимальное число логических томов в неактивной группе)
--physicalextentsize число[kKmMgGtT] (размер PE; по умолчанию - 4M; д.б. степенью 2;
перед использованием необходимо долго мучаться с pvmove, pvresize и lvresize)
--resizeable {y | n } (можно ли добавлять/удалять физические тома в группу)
vgdisplay (вывести атрибуты указанной группы томов или всех групп томов)
--activevolumegroups (только активные группы)
--colon (вывести в виде колонок, разделённых ':')
--short
--verbose (с перечислением физических и логических томов)
vgscan (сканирование блочных устройств в поиске групп логических томов LVM и перестроение
кеша (/etc/lvm/.cache), используемого другими утилитами)
--mknodes (создание/удаление специальных файлов в /dev)
vgs (вывести атрибуты указанной группы томов)
--separator строка (разделитель между колонками)
--aligned (выравнивать колонки)
--noheadings (не выводить заголовок таблицы)
--units единицы-размера (выводить размеры в указанных единицах: h, H - человеколюбивый формат;
s - в секторах; b - в байтах; k, m, g, t - в двоичных килобайтах и т.д.;
K, M, G, T - в десятичных килобайтах и т.д.)
--nosuffix (не выводить суффикс единиц измерения)
--unbuffered
--options список-колонок-через-запятую (vg_fmt, vg_uuid, vg_name, vg_attr, vg_size, vg_free,
vg_sysid, vg_extent_size, vg_extent_count, vg_free_count, max_lv, max_pv, pv_count, lv_count,
snap_count, vg_seqno, vg_tags; можно также использовать
имена колонок из pvs и lvs; биты из vg_attr: w - writeable, r - readonly, z - resizeable,
x - exported, p - partial, c - clustered)
--sort список-колонок-через-запятую (для обратного порядка сортировки используйте знак '-'
перед именем колонки)
vgreduce имя-группы-томов [имя-физического-тома] ... (удалить неиспользуемые физические тома
из группы томов)
--all (удалить все неспользуемые физические тома)
--removemissing (рекомендуется предварительно попробовать с ключом --test, т.к. все логические
тома и снимки, которые частично расположены на исчезнувших устройствах, будут удалены
полностью)
vgextend имя-группы-томов имя-физического-тома ... (добавить проинициализированный физический
том в группу томов)
vgremove (удалить указанную деактивированную группу томов, не содержащую логических томов;
если один из физических томов недоступен, то предварительно его необходимо удалить
"vgreduce --removemissing")
vgrename старое-имя-группы новое-имя-группы
vgsplit имя-группы имя-новой-группы имя-физического-тома ... (разбиение группы томов
на две и перемещение указанных физических томов в новую группу; при этом логические тома
разбиваться не могут)
vgmerge результирующая-группа добавляемая-группа (вливает одну группу томов в другую;
добавляемая группа томов д.б. неактивна, размеры PE должны совпадать;
проверяются ограничения на число томов в результирующей группе томов)
vgconvert (преобразование формата метаданных)
vgexport имя-группы ... (подготовить неактивную группу для передачи физических томов на другую
систему)
vgimport имя-группы ... (принять группу томов после переноса физических томов с другой системы)
vgcfgbackup [имя-группы] ... (сделать резервную копию метаданных; обычно хранятся в
/etc/lvm/backup/имя-группы)
--file имя-файла
vgcfgrestore [имя-группы] ... (восстановить метаданные из предусмотрительно сделанной резервной копии)
--file имя-файла
--name имя-группы
vgck [имя-группы] ... (проверить метаданные)
vgmknodes [ имя-группы | имя-логического-тома] ... (восстановить необходимые для работы файлы
в /dev)
lvmsar (создание отчётов, не реализовано)
lvmsadc (сбор статистики)
Работа с логическими томами:
lvcreate имя-группы-томов [имя-физического-тома] ... (создать логический том в группе томов;
если указывается имя физического тома, то экстенты выделяются только на нём)
--name имя-логического-тома
--extents число-PE-в-LV (--extens и --size несовместимы)
--size размер (можно использовать суффиксы: kKmMgGtT)
--permission { r | w }
--contiguous { y | n }
--stripes число (число полосок для параллельного доступа,
обычно соответствует числу физических томов)
--stripesize числоКБ (степень двойки, не более PE)
--minor число (значение minor для блочного устройства)
--persistent { y | n } (сделать ли значение minor постоянным)
--zero { y | n } (обнулять ли первый килобайт логического тома)
lvcreate --snapshot имя-исходного-логического-тома (создание снимка логического
тома для резервирования или экспериментов; неизменная часть исходного тома и его снимка
хранится только в одном экземпляре; если места под изменения не хватит, то снимок будет
переведён в нерабочее состояние; снимок является логическим томом в той же группе,
над которым допустимы все действия как над обычным логическим томом; его можно монтировать
и т.д.; после использования его необходимо удалить):
--name имя-логического-тома-снимка
--extents число-PE-в-LV (--extens и --size несовместимы; размер определяется числом предполагаемых
изменений, его можно увеличить утилитой lvextend)
--size размер (можно использовать суффиксы: kKmMgGtT)
--units единицы-размера (выводить размеры в указанных единицах: h, H - человеколюбивый формат;
s - в секторах; b - в байтах; k, m, g, t - в двоичных килобайтах и т.д.;
K, M, G, T - в десятичных килобайтах и т.д.)
--nosuffix (не выводить суффикс единиц измерения)
--unbuffered
--segments (использовать колонки для информации о сегментах LE и PE)
--options список-колонок-через-запятую (lv_uuid, lv_name, lv_attr,
lv_major, lv_minor, lv_kernel_major, lv_kernel_minor, lv_size, seg_count,
origin, snap_percent, copy_percent, move_pv, lv_tags, segtype, stripes,
stripesize, chunksize, seg_start, seg_size, seg_tags, devices;
можно также использовать имена колонок из vgs;
lv_attr:
тип логического тома:
m - зеркало (?)
M - зеркало без начальной синхронизации
o - исходный том
p - том для pvmove
s - снимок
S - деффективный снимок
v - virtual (?)
права на запись: r или w
политика выделения новых PE (используются прописные буквы при блокировании изменения политики):
c - непрерывными сегментами
n - "обычная"
a - выделять откуда угодно
i - наследуется из описания группы томов
m - значение minor блочного устройства зафиксировано
состояние тома:
a - активен
s - приостановлен
I - дефективный снимок
S - дефективный приостановленный снимок
d - нет таблицы отображения device-mapper
i - неактивная таблица отображения device-mapper
o - устройство открыто
--sort список-колонок-через-запятую (для обратного порядка сортировки используйте знак '-'
перед именем колонки)
lvremove (удалить указанный логический том из группы; предварительно необходимо размонтировать
файловую систему и деактивировать логический том)
lvextend логический-том [физический-том] ... (увеличение размера логического тома за счёт
указанного физического тома; далее необходимо увеличить размер файловой системы)
--extents [+]число-PE-в-LV (--extens и --size несовместимы)
--size [+]размер (можно использовать суффиксы: kKmMgGtT)
--stripes число (число полосок для добавляемого куска)
--stripesize числоКБ (степень двойки, не более PE)
lvreduce (уменьшение размера указанного логического тома; предварительно необходимо
уменьшить размер файловой системы; запрошенный размер может быть округлён)
--extents [-]число-PE-в-LV (--extens и --size несовместимы)
--size [-]размер (можно использовать суффиксы: kKmMgGtT)
lvresize логический-том [физический-том] ... (изменение размера логического тома;
увеличение за счёт указанного физического тома;
после увеличения размера логического тома необходимо увеличить размер файловой системы;
перед уменьшением размера логического тома уменьшить размер файловой системы)
--extents [+ | -]число-PE-в-LV (--extens и --size несовместимы)
--size [+ | -]размер (можно использовать суффиксы: kKmMgGtT)
--stripes число (число полосок для добавляемого куска)
--stripesize числоКБ (степень двойки, не более PE)
lvconvert (преобразование логического тома из линейного формата в зеркало или наоборот;
также позволяет добавлять или удалять журналы из зеркала)
Перед началом работы lvm или любая другая утилита читает настроечный
файл (/etc/lvm/lvm.conf). Строки, начинающиеся с '#' являются комментариями. Файл состоит из
секций и присвоений значения переменной. Секция состоит из имени секции, за которой идёт
символ '{', затем последовательность секций и присвоений, затем символ '}'.
Присвоение записывается как (значения могут быть строками в кавычках, целыми числами и числами с плавающей
точкой, последовательностями значений через запятую в квадратных скобках):
имя-переменной = значение
Секции:
devices - управление устройствами
dir - каталог для создания устройств, соответствующих группам томов (/dev)
scan - массив каталогов для рекурсивного сканирования блочных
устройств при поиске физических томов (/dev)
filter - даёт возможность пропускать некоторые устройства при сканировании
cache - имя файла для хранения кеша сканирования
md_component_detection - не сканировать компоненты md-устройств
log - настройка журналирования
verbose (от 0 до 3) при выдаче на stdout или stderr
syslog (LOG_USER, не заметил ничего, т.к. level = 0)
file (имя файла для записи журнала)
overwrite (перезаписывать файл или дополнять)
level (уровень серьёзности для записи в файл от 1 до 9; 6 - это много;
по умолчанию - 0, т.е. ничего!)
command_names (выводить имя команды в сообщениях)
prefix (предварять каждое сообщение указанной строкой)
если не получается ("BLKRRPART: Device or resource busy"), то попробовать
понять кем он занят и, например, если смонтирована файловая система на логическом томе, то
размонтировать файловую систему (umount точка-монтирования)
на всякий случай, выдать информацию о логических томах (lvdisplay)
деактивировать логические тома ("vgchange --available n имя-группы")
экспортировать группу томов ("vgexport имя-группы")
импортировать группу томов ("vgimport имя-группы")
активировать логические тома ("vgchange --available y имя-группы")
смонтировать файловую систему
проверить, не держат ли раздел NFS (остановить сервер NFS, "umount /proc/fs/nfsd", "rmmod nfsd"),
прилинкованная файловая система (mount -bind),
multipathd, smartd или hp-health (hp-snmp-agents), почистить /etc/lvm/.cache
если освободить ресурс и перечитать таблицу разделов не удалось, то перезагрузка!
создать физический том на разделе с помощью "pvcreate имя-раздела"
добавить его в группу с помощью "vgextend имя-группы имя-раздела"
увеличить нужный логический том с помощью "lvextend -L +мегабайтM /dev/имя-группы/имя-тома"
или взять всё с помощью "lvextend -l +100%FREE /dev/имя-группы/имя-тома"
увеличить файловую систему (resize2fs требует размонтирования;
ext2online - нет, но умеет только увеличивать размер файловой системы;
начиная с некоторой версии (FC6) возможности ext2online влиты в resize2fs;
большие файловые системы лучше предварительно размонтировать и проверить:
"e2fsck -f -C 0 -v /dev/mapper/имя-группы-имя-тома" (22 минуты на пустой файловой системе 9TB)
и "resize2fs -p /dev/mapper/имя-группы-имя-тома" (30 минут для увеличения с 9ТБ до 10ТБ);
xfs_growfs; resize_reiserfs; jfs имеет опцию монтирования resize)
resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома размерGB # уменьшаем файловую систему (очень медленно)
lvresize --size размер-чуть-побольшеGB /dev/ГруппаТомов/ИмяТома # уменьшаем LV с запасом
resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома # подгоняем размер файловой системы под размер LV
pvmove -v --interval 10 освобождаемое-устройство # сдвиг экстентов на остающиеся физические тома;
для проверки состояния переноса можно использовать "dmsetup status ГруппаТомов-pvmove0";
как увеличить допустимую долю использования полосы пропускания ввода/вывода?
vgreduce -v ГруппаТомов ИмяФизическогоТома # удаление физического тома из группы
отключение сервисов, использующих файловую систему
umount ...
vgchange --available n имя_группы
vgexport имя-группы
multipath -f имя
увеличение логического тома на MSA
blockdev --rereadpt /dev/sdX
blockdev --rereadpt /dev/sdY
multipath
vgimport имя_группы
vgchange --available y имя_группы
pvresize /dev/dm-номер
lvextend -l +100%FREE /dev/имя_группы/имя_тома
e2fsck -f -C 0 -v /dev/mapper/имя_группы-имя_тома
resize2fs -p /dev/mapper/имя_группы-имя_тома
mount ...
включение сервисов, использующих файловую систему
Преобразование
корневой файловой системы "на ходу" (пример написан для LVM1 и LILO - надо переделать).
Оценка потерь скорости работы файловой системы при использовании снимков
(при двух снимках дождаться создания файла 20 ГБ нелегко, а прервать невозможно):