|
Bog BOS: hardware: Использование RAID контроллеров в Linux
|
Последнее изменение файла: 2024.02.27
Скопировано с www.bog.pp.ru: 2024.12.03
Bog BOS: hardware: Использование RAID контроллеров в Linux
В статье описываются технические возможности некоторых RAID (Redundant Array of Independent Disk)
контроллеров, драйверов и утилит. Массив дисков может позволить преодолеть ограничение
максимальной ёмкости отдельных дисков, может обеспечить доступность данных при выходе
одного или двух дисков из строя, может ускорить доступ к данным, может обеспечить
непрерывное функционирование системы при сбое и даже в момент замены диска.
Наличие RAID -
не повод для расслабления.
Не забудьте также, что купленный для замены диск должен быть не меньше старого,
а у некоторых производителей объём диска может меняться от версии к версии (фактически
от партии к партии).
Или можно поставить диск большего объёма и при инициализации массива использовать не всё доступное место.
Массив, проинициализированный одним контроллером, скорее всего не будет
распознан контроллером другого типа. Так что резервный RAID контроллер необходим.
Многие контроллеры отказываются кешировать операции записи при отсутствии специальной
батарейки (и это правильно). При этом скорость записи может снижаться очень сильно,
так что стоимость закупаемой дополнительно батарейки необходимо учесть в смете расходов.
Первоначально "I" в слове RAID означало "Inexpensive" (дешёвых), но быстро выяснилось,
что цена самого массива очень высока.
- Общие сведения
- Intel RAID controller SRCS28X (SATA, PCI-X, megaraid)
- LSI Logic MegaRAID SATA300-8X (SATA, PCI-X, megaraid)
- LSI Logic MegaRAID SATA150-6 (SATA, PCI-66/64, megaraid)
- Утилита LSI Logic megarc
- Утилита LSI Logic megamgr
- LSI Logic MegaRAID Configuration Console Package
- LSI Logic GAM (не описан)
- Intel RAID controller SRCS14L (SATA, PCI-66/64, gdth)
- Mylex AcceleRAID 170 (SCSI, PCI-33/32, DAC960)
- LSI Logic MegaRAID 320-1 (SCSI, PCI-66/64, megaraid)
- LSI Logic/AVAGO/Broadcom MegaRAID SAS 9xxx (SATA+SAS+NVMe, PCIe 2/3/4/5 x8, megaraid_sas)
- Утилита LSI Logic StorCLI
- Утилита LSI Logic megacli
- Intel VROC
- HP Smart Array P400 (SAS/SATA)
- Автономный дисковый массив Sun StorEdge 3310 (SCSI SPI LVD)
- Автономный дисковый массив HP StorageWorks MSA 2012i (iSCSI)
- Автономный дисковый массив HP StorageWorks MSA 2012fc G2 (FC)
- Автономный дисковый массив HP StorageWorks MSA P2000 G3 (FC)
- Автономный дисковый массив Xyratex RS-1220-F4-5412E-DL-2 (FC)
- Автономный дисковый массив Axus Yotta YB-16SAEF4PR4 (FC)
- Программный RAID в ядре 2.4 (raidtools)
- device-mapper (ядро 2.6)
- dm-crypt - шифрование блочного устройства с использованием device-mapper
- Поддержка псевдо-RAID контроллеров в ядре 2.6
- Device Mapper Multipath (DM-MP)
- Программный RAID в ядре 2.6
- LVM2 (Logical Volume Management)
- flashcache
- LVM Cache
- Статистика
- Дедупликация
Возможные причины потери данных:
- удаление файла по команде пользователя (администратора, хакера); для защиты данных требуется
регулярное резервирование данных (например, с помощью bacula);
RAID в этом случае не поможет
- полный отказ диска; для защиты данных возможно использование RAID технологии
- внезапное отключение питания; для защиты данных необходимо использование UPS
с программным обеспечением аккуратного завершения работы системы при исчерпании батареи;
RAID в этом случае только ухудшит последствия (если не имеет встроенной батарейки);
может помочь (кроме сохранения БД) файловая система с журнализацией данных при условии,
что контроллер и диск не переупорядочивают операции записи (поддерживают barrier)
- "плохие" блоки; рекомендуется "badblocks -svw" перед использованием диска до сборки RAID или LVM;
RAID в этом случае не поможет
- молчаливая ошибка записи (запись блока происходит по неправильному адресу)
- ошибки приложений и ОС; рекомендуется система управления версиями (обычное резервирование
помогает не всегда); RAID в этом случае не поможет
- утеря сервера (кража, пожар); рекомендуется регулярное резервирование данных и хранение
копий на другой территории
Первоначально деление RAID массивов на уровни (типы)
было предложено Гибсоном, Катцом и Патерсоном
(University of California at Berkeley), часть предложенных уровней в настоящее
время не используется, зато исторически добавились новые (скорость зависит от реализации
и доступности кеширования записи, может отличаться от ожидаемой на порядок; терминология
составных массивов - 10, 01, 0+1 - не устоялась окончательно):
- 0 (stripe) - данные делятся на блоки (полоски, stripe) и записываются на диски поочерёдно,
это увеличивает пропускную способность (запись идёт параллельно),
слабо уменьшает латентность и не увеличивает надёжность (вернее, уменьшает надёжность,
так как число устройств увеличивается)
- 1 (mirror) - две одинаковые копии данных записываются на два диска, пропускная способность
при чтении увеличивается, латентность снижается, пропускная способность при записи слегка
уменьшается, надёжность увеличивается (допустим сбой одного диска), стоимость увеличивается
вдвое
- 5 - данные делятся на блоки (полоски, stripe) и записываются на диски поочерёдно вместе с
блоками контрольных сумм, надёжность увеличивается (допустим сбой одного диска с сильной
потерей в производительности);
стоимость увеличивается на цену одного дополнительного диска;
требуется не менее 3 дисков; скорость записи слегка уменьшается
(надо записать сами изменённые данные и блок контрольных сумм, но можно делать это
параллельно); пропускная способность при чтении увеличивается с увеличением числа дисков;
варианты алгоритма распределения блоков контрольных сумм (левый/правый) и данных (симметричный/асимметричный):
- левый - на первом круге блок чётности на последнем диске, далее смещается на 1 влево
- правый - на первом круге блок чётности на первом диске, далее смещается на 1 вправо
- асимметричный - блоки данных по очереди на каждом круге с пропуском места под блок чётности, первый блок на первом диске
- симметричный - первый блок на диске, на котором на предыдущем круге был блок чётности; ускоряет последовательное чтение
- 5E - запасной (hotspare) диск "размазан" по всему массиву в виде запасных полосок;
увеличивает количество используемых в работе шпинделей, что ускоряет многопоточный доступ
- 6 - две полоски контрольных сумм записываются поочерёдно на различные диски, что позволяет
продолжать работу при отказе 2 дисков в массиве; скорость работы ниже, чем у RAID-5
(очень медленно при отказе 2 дисков)
- 10 (1+0) - массив RAID 0 из нескольких RAID 1, обеспечивающая увеличение как скорости, так и надёжности
(допустим отказ любого числа дисков, пока не откажут все диски одной группы RAID1)
- 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 не стандартизован (хотя стандарт DDF существует), то переносить диски от одного
аппаратного контроллера в другой в общем случае нельзя. Требуется покупка нового контроллера того же типа.
Программная реализация:
- позволяет съэкономить деньги
- больше нагружает общую шину ввода/вывода
- не рекомендуется подключать 2 устройства к одной PATA шине - ухудшается производительность,
при сбое одного устройства может быть заблокировано и второе (особенно, если вышло
из строя устройство master)
- больше нагружает процессор, хотя для современного процессора нагрузка невелика
- позволяет безболезненно переносить диски между системами
- требует предусмотрительности при настройке загрузчика (загрузочный раздел на RAID-5
определённо вызовет проблемы; если корневая файловая система находится на RAID, то
поддержка RAID должна быть встроена в ядро или initrd, а загрузочный раздел отделён)
- некуда поставить батарейку для кеширования записи
- в случае внезапного останова (батарейка и UPS не защищают от "kernel panic"!)
могут быть серьёзные поломки файловой системы
- реже ломается и обычно лучше отлажена, чем firmware аппаратного контроллера и утилиты,
хотя бывает всякое...
- позволяет напрямую контролировать отдельные диски (SMART, параметры и т.д.)
- единый интерфейс управления (в рамках одной ОС)
- могут быть проблемы с горячей заменой
- требуется настроить BIOS для загрузки с "выжившего" диска (и auto-detect!)
Кеширование записи на физических дисках включать нельзя - при сбое питания
велик шанс порчи данных (LUA?). Кеширование записи в контроллере (Write-Back) включать можно только при наличии
BBU (Battery Backup Unit), а ещё лучше TBBU (Transport BBU), которая позволяет спасти данные из кеша
даже в случае выхода из строя контроллера. Write-Through - это отсутствие кеширования записи.
Запасные диски (hot disk, hot spare) обеспечивают возможность
при отказе одного из действующих дисков массива автоматически заменить его запасным.
После синхронизации массив сохраняет устойчивость к возможному сбою другого диска.
Запасной диск (диски) могут быть привязаны к массиву, группе массивов или быть общими.
Перестроение массива (копирование данных или вычисление контрольных сумм и запись на
запасной диск) может выявить плохие блоки на одном из оставшихся дисков, что вызовет
полный развал массива (RAID6 позволяет защититься от подобных случаев, если разработчик не оплошал).
Рекомендуется регулярная проверка на наличие плохих блоков
пока всё ещё хорошо (некоторые контроллеры имеют встроенную возможность периодической проверки
в фоновом режиме).
Возможность горячей замены (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.
Результаты тестирования с помощью bonnie:
SE7230NH1LX (E7230), Pentium D 3000 MHz, RAM: 1 GB, 6 Seagate ST3400832AS (400GB)
RAID-5 6x400G Write Thru, No Read Ahead, Direct I/O, hd cache - Write Thru
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 7682 16.5 7259 2.9 5879 1.9 23415 41.5 72048 10.0 304.0 1.0
RAID-5 6x400G Write Thru, No Read Ahead, Cached I/O, hd cache - Write Thru
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 7196 15.4 6870 2.7 5676 1.9 28476 50.7 60275 8.4 307.9 0.9
RAID-5 6x400G Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write Thru
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 7304 15.7 7056 2.8 5993 2.0 26043 46.2 56675 8.1 314.2 0.9
RAID-5 6x400G Write Back, Adaptive ReadAhead, Cached I/O, hd cache - Write Thru
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 45858 97.6 109810 43.5 34725 10.5 34700 61.4 57584 8.1 345.3 1.0
RAID-5 6x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
RAID 1*4000 15368 34.0 16212 6.6 13546 4.4 32698 63.0 56587 8.1 310.8 0.9
RAID-50 2x3x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 13847 30.5 13987 5.8 11277 3.7 29361 55.6 50942 7.3 334.0 1.0
RAID-50 2x3x400GB Write-Back, Adaptive ReadAhead, Cached I/O, hd cache - Write-Back
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
m7 1*4000 44556 98.2 94405 40.3 31298 9.6 31920 60.5 51559 7.3 356.3 1.3
LSI Logic MegaRAID SATA300-8X
(аналог Intel RAID controller SRCS28X).
Интерфейс: PCI-X 1.0a (64 bit, 133 MHz, может работать на частоте 66 или 100 MHz).
Содержит собственный процессор Intel 80331 (аппаратный XOR для RAID 4/5, 100 MHz?)
и память под кеш (128MB embedded, unbuffered ECC DDR 333 SDRAM).
Поддерживает 8 независимых SATA II портов (с NCQ и TCQ) на контроллере Marwell 88SX6081
(нумеруются снизу и от платы).
Поддерживает SAF-TE (управление контроллером ящика, I2C).
Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50.
Текущая версия прошивки 814B, BIOS H431, U828, WebBIOS 3.23
(813G загружался быстрее, а задержка раскрутки дисков так и не появилась).
Инициализируется больше минуты.
Для включения кеширования записи необходимо докупить батарейку
LSIBBU03 (640 mAH, 32 часа) или
LSIiBBU01 (880 mAH, 72 часа, автоматический заряд и информация о напряжении, температуре и токе).
Заряжается несколько часов; менять через 3 года.
Держит содержимое кеша, при восстановлении питания записывает содержимое кеша записи на диск.
Без неё кеширование записи write back нельзя включить из BIOS.
Скорость записи без кеширования для RAID-5 меньше 10 MB/sec, с кешированием - более 90 MB/s
(переход на RAID-50 без кеширования скорость записи не увеличивает).
Не помогает при пропадании питания при включённом кешировании на самих дисках
(можно включить/выключить только в BIOS 813i/H430).
Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине).
Возможность задержки раскручивания дисков.
Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk,
hot spare). Запасной диск можно добавить позднее (в общий пул или для конкретного массива).
При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail"
и восстановлению не подлежит. При сбое одного диска (состояние массива "Degradated")
необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву
(в версии 813g/H425 не сработало).
Автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки
(необходимо указать при создании - FlexRAID PowerFail в BIOS,
указывается доля расходуемой на это пропускной способности, при 30% и запрете кеширования
записи восстановление диска 400 GB занимает больше суток,
более 50% может не понравиться ОС, та же доля используется при проверке массива;
собственно, создание массива RAID-5 есть непрерываемый режим проверки;
при нахождении различия данные считаются правильными, а контрольная сумма перевычисляется).
Имеет собственный звучок (включается при переходе одного из массивов
в состояние Fail или Error; отключается программно или в BIOS временно или навсегда;
равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск;
на одном экземпляре звук очень тихий - как щелчки).
Чтобы войти в настройки RAID необходимо нажать ^M (текстовый режим)
или ^H (графический режим) при загрузке. Не срабатывает, если
разрешена загрузка с CD-ROM или ATA и загрузка возможна (например, установлен загружаемый CD-ROM).
Требуется отключить в BIOS материнской платы всякие там Quick boot, Fast boot, Silent boot и прочее.
Можно сконфигурировать до 30 логических дисков на контроллер, до 32 физических
дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять
только в порядке обратном порядку создания.
Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50),
может состоять только из части массива. Массив конструируется из физических дисков.
Логический диск после создания должен быть проинициализирован (заполняется нулями).
BIOS позволяет объединять/заменять физические диски слегка различающегося
размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале.
Все настроечные данные хранятся на диске и в NVRAM (настройка контроллера BIOS Config Auto
Selection позволяет выбирать при их несовпадении).
Политика ввода/вывода: с использованием кеша, прямой доступ.
Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование.
Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш),
write through (контроллер рапортует о завершении записи после передачи на диск).
Кеширование записи можно включать только при наличии батарейки (см. выше).
Кеширование записи дисков необходимо выключить.
Мультипликатор портов (до 4, PM-ENBL, нельзя включать при наличии логических дисков, требуется
перезагрузка).
С точки зрения драйверов и утилит - аналог
Intel RAID controller SRCS28X,
так что можно использовать megamgr и megarc.
LSI Logic (Symbios Logic) MegaRAID SATA150-6
SER523 Rev B2.
Интерфейс: PCI 2.2 66 MHz, 64-bit, 3.3V или 5V (для 32-битной шины необходим 3-позиционный джампер).
Содержит собственный процессор Intel GC80302 (аппаратный XOR) и память под кеш (64 MB, 66 MHz, ECC SDRAM).
Поддерживает 6 независимых SATA-1 портов (150 MB/s, 3 контроллера Silicon Image SATALink Sil3112ACT144,
порт 0 с края корпуса).
Джамперы: PCI 32-bit, использовать ли BIOS, Mode 0 (?),
3.3V load sharing (питание снимается с одновременно с линий 3.3V и 5V, иначе только с линии 5V).
Поддерживает протокол SAF-TE (интерфейс I2C с процессором SEP стойки).
Обеспечивает RAID уровней 0, 1, 5 (инициализация в фоновом режиме), 10 и 50.
Текущая версия прошивки 713N (не обновлялась с 2004 года), BIOS Version : G119.
Для включения кеширования записи необходимо докупить батарейку
LSIBBU01 (NiMH, 600 mAH, быстрая зарядка - 6 часов - не сработала (из-за температуры выше 40?);
менять ежегодно (?!) или через 1000 циклов зарядки - счётчик доступен в megamgr).
Держит содержимое кеша 53 часа (свежая полностью заряженная батарейка, обещание изготовителя),
при восстановлении питания записывает содержимое кеша записи на диск,
имеется интерфейс для подключения индикатора наличия незаписанных данных в кеше..
Без неё кеширование записи write back нельзя включить.
Скорость записи без кеширования для RAID-5 меньше 6 MB/sec, с кешированием - более 40 MB/s.
Не помогает при пропадании питания при включённом кешировании на самих дисках.
Поддержка горячей замены дисков (должна быть поддержка в самих дисках и корзине).
Возможность задержки раскручивания дисков (не работает).
Обеспечивается автоматическое восстановление при наличии запасных дисков (hot disk,
hot spare). Запасной диск можно добавить позднее (только общий пул).
При отсутствии запасного диска после сбоя второго диска массив RAID-5 переходит в состояние "Fail"
и восстановлению не подлежит. При сбое одного диска (состояние массива "Degradated")
необходимо отключить его, вынуть неисправный диск, вставить новый, добавить его к массиву.
Возможно автоматическое продолжение создания или восстановления массива RAID-5 после перезагрузки,
необходимо указать при создании FlexRAID PowerFail в BIOS.
Указание доли пропускной способности, расходуемой на восстановление.
При 30% и запрете кеширования записи восстановление диска 400 GB занимает больше суток,
более 50% может не понравиться ОС.
Та же доля используется при проверке массива
(создание массива RAID-5 есть непрерываемый режим проверки).
При нахождении различия данные считаются правильными, а контрольная сумма перевычисляется,
если при чтении произошла ошибка ввода, то данные перевычисляются из контрольной суммы,
а блок переназначается на резервную дорожку. Рекомендуется периодически делать проверку массива,
т.к. если "плохой" блок "проявится" при восстановлении, то данные будут потеряны.
Имеет собственный звучок (включается при переходе одного из массивов
в состояние Fail или Error; отключается программно или в BIOS временно или навсегда;
равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск).
Настройка во время загрузки BIOS - ^M, графический режим настройки - ^H
(дополнительные функции - отключение BIOS, требуется при загрузке не с массива; coercion;
отключение восстановления данных при проверке; остановка при ошибке в конфигурации;
выбор конфигурации при расхождении между версиями в NVRAM и на диске; задержка раскрутки;
отключение автовосстановления).
Можно сконфигурировать до 40 логических дисков на контроллер, до 32 физических
дисков в массиве, не более 2 TB на логический диск. Логические диски можно удалять
только в порядке обратном порядку создания.
Логический диск (в реальности, хост) конструируется из массивов (необходимо для RAID-10 и 50),
может состоять только из части массива или частей массива (даже несмежных), но на реконфигурацию
такого логического диска накладывается множество ограничений.
Массив конструируется из физических дисков.
Логический диск после создания должен быть проинициализирован (заполняется нулями).
BIOS позволяет объединять/заменять физические диски слегка различающегося
размера (coercion) округляя вниз до 128 MB или 1 GB (GB = 10^9), но это надо делать в самом начале.
Все настроечные данные хранятся на диске и в NVRAM (настройка контроллера BIOS Config Auto
Selection позволяет выбирать при их несовпадении). Это позволяет перемещать диск внутри контроллера.
Чтобы переместить массив целиком на новый контроллер (того же типа), необходимо очистить
конфигурацию нового контролера, диски необходимо подключать в те же самые позиции,
что и на сгоревшем контроллере. Если в кеше записи остались данные, а батарейный модуль не
типа TBBU, то они при смене контроллера будут потеряны.
Реконфигурацию массива (добавление диска, смена типа RAID) нельзя прерывать и перезагружаться
(что происходит с данными не уточняется ;).
Политика ввода/вывода: с использованием кеша, прямой доступ.
Кеширование чтения: обычное кеширование, предварительное чтение, адаптивное кеширование.
Кеширование записи: write back (контроллер рапортует о завершении записи сразу после записи в кеш),
write through (контроллер рапортует о завершении записи после передачи на диск).
Кеширование записи можно включать только при наличии батарейки (см. выше).
Кеширование записи дисков необходимо выключить.
Заявлена поддержка RHL 7.3 и 8.0. Работает в RHL 9 (состояние /proc/megaraid) и в CentOS 4.2
(модули megaraid_mbox и megaraid_mm,
управление megarc и megamgr).
Материнская плата S875WP1, Pentium 4 3000 MHz, 1GB
RAID-5 5x400GB Write Thru, Adaptive ReadAhead, Cached I/O, hd cache - off
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
3*2000 5326 12.6 5292 2.5 4753 1.8 25555 51.8 49339 7.7 253.6 0.8
RAID-5 5x400GB Write Back, Adaptive ReadAhead, Cached I/O, hd cache - off
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
2*2000 34438 85.4 42080 19.4 14883 5.0 24167 76.0 27510 4.2 249.9 0.8
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номер-логического-диска (вывести информацию о логическом диске)
- -delLD -Lномер-логического-диска (удалить логический диск)
- -initLD -Lномер-логического-диска (инициализировать логический диск)
- -cldCfg тип-кеширование-записи тип-кеширования-чтения кеширование (изменить параметры кеширования)
- -chkonLd -Lномер-логического-диска (начать полную проверку массива в фоновом режиме;
ежесекундно показывает состояние, прервать по ^C)
- -abortCCBI (прервать проверку или фоновую инициализацию массива)
- -ViewInitProg (показать состояние инициализации)
- -ViewBICCProg (показать состояние проверки или фоновой инициализации, прервать по ^C)
- -LogPhysInfo (вывести информацию о логических и физических дисках)
- -physOn pd\[0:N\] ("вернуть в строй" физический диск - это крайняя мера, ведущая к разрушению файловой системы;
квадратные скобки - часть синтаксиса)
- -physOff pd\[0:N\] (вывести физический диск из обслуживания)
- -physSetHsp pd\[0:N\] (назначить физический диск в горячий резерв)
- -physUnsetHsp pd\[0:N\] (перевести физический диск из горячего резерва в рабочее состояние)
- -doRbld -RbldArray{список-физических-дисков} -aN [-ShowProg] (запустить перестроение массива
после сбоя одного диска)
- -showRbld
- -stopRbld -RbldArray{список-физических-дисков} (остановить перестроение массива)
- -pdFailInfo -chN -idN (в нормальном ли состоянии физический диск и что с ним случилось)
- -clrErrHistory (очистить журнал ошибок)
- -pSetCache -chN -idN -aN -ViewCache (включено ли кеширование записи на диске)
- -pSetCache -chN -idN -aN -WCE1 [-SaveCacheSetting] (включить кеширование записи на диске)
- -phys -chN -idN -aN (вывести информацию о физическом диске - модель, ревизия; не выводится
имя изготовителя)
- -physdrvSerialInfo -chN -idN -aN (вывести серийный номер - для SATA не работает)
- -ViewExtSenseData -chN -idN -aN (вывести дополнительную информацию - у меня не работает)
- -getRbldRate
- -setRbldRate процентов
- -enableBI (разрешить инициализацию в фоновом режиме)
- -disableBI
- -FastInitOn (разрешить быструю инициализацию)
- -FastInitOff
- -SetFrpOn (разрешить автоматическую обработку после аварийного отключения питания -
Flex RAID Power Failure)
- -SetFrpOFF
- -ForceBootON
- -ForceBootOFF
- -CoercionON (округление вниз размера физического диска)
- -CoercionOFF
- -CoercionVu (показать текущее значение)
- -dskSpinUP -Dsksдисков-за-раз (поочередное раскручивание дисков, через каждые 6 секунд)
- -ShowdskSpinUP (для SATA не работает)
- -setFlush -tсекунд (интервал сброса кеша: 2, 4, 6, 8, 10)
- -enAlarm (разрешить выдачу звукового сигнала)
- -disAlarm
- -silenceAlarm (прекратить звуковой сигнал для текущего сбоя)
- -showAlarm
- -enableBios
- -disBios
- -showBios
- -autoRbldOn (разрешить автоматическое восстановление после сбоев)
- -autoRbldOff
- -onBIOS_SOE (останавливаться при ошибке)
- -offBIOS_SOE
- -dskBIOScfgm (при расхождении описания массива на диске и в контроллере брать описание с диска)
- -nvBIOScfgm (при расхождении описания массива на диске и в контроллере брать описание из контроллера)
- -usrBIOScfgm (при расхождении описания массива на диске и в контроллере спрашивать пользователя)
- -getNVRAMLog (абсолютно неинформативно, разве что узнать время загрузки)
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.
Аналог (точнее прародитель) вебконсоли от Intel. Устанавливать не стал.
Мониторинг состояния 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 - ежедневная проверка)
- -cons -abort
- -enChkCon (разрешить регулярные проверки, заданные планировщиком)
- -disChkCon (запретить)
- -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.
Результаты тестирования с помощью bonnie 1.4:
i875, Intel(R) Pentium(R) 4 CPU 2.80GHz, RAM: 1 GB, 4 Seagate ST3120026AS (120GB), RH 9, 2.6.8.1
RAID-5 4x120G Delayed Write - off, hd cache - off
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
1*2000 7010 98.8 13289 2.8 8100 2.1 6153 84.9 36931 4.3 263.4 0.4
RAID-5 4x120G Delayed Write - on, hd cache - off
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
1*2000 6921 97.9 11782 2.5 9164 2.3 6023 83.3 43438 4.9 265.3 0.5
RAID-5 4x120G Delayed Write - on, hd cache - on
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
1*2000 7011 99.2 20625 4.4 16007 4.2 6618 91.4 39487 4.7 274.1 0.5
Mylex (в девичестве 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.
Материнская плата Intel D865PERL, Pentium 3000
cache: disable, RAM: 512 MB
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
t03 1*2000 14435 36.7 13931 6.6 10672 3.7 22210 44.6 42235 6.4 307.0 1.0
cache: disable, RAM: 1 GB
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
t03 2*2000 13443 34.3 14106 6.7 10606 3.6 23517 47.1 42803 6.4 239.2 1.0
cache: Write-Back, RAM: 1 GB
---Sequential Output (nosync)--- ---Sequential Input-- --Rnd Seek-
-Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --04k (03)-
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
t03 2*2000 18637 48.2 18455 9.3 12742 4.3 22698 45.2 42479 6.3 248.9 1.1
VROC (Virtual RAID on CPU) - очередная инкарнация программного RAID (RAID 0, 1, 5 и 10) для NVMe SSD (PCIe).
Обеспечивает также конфигурацию массивов без использования ОС, возможность горячей замены и индикацию состояния.
Для работы программного RAID используется встроенный в ЦП (Intel Xeon Scalable) контроллер VMD (Volume Management Device),
который обслуживает "свои" устройства NVMe (PCIe).
Отдельный VMD обслуживает до 12 NVMe устройств и до 6 массивов (3 домена PCIe на ЦП, 4 устройства на домен), до 2 томов на массив,
RAID1 - 2 устройства, RAID10 - 4 устройства, возможно использование коммутаторов PCIe (2 уровня, до 24 устройств на VMD).
Возможно создание виртуального массива с использованием устройств от нескольких VMD (spanning), но будет медленно.
Виртуальный массив может быть загрузочным.
Управление созданными массивами в Linux осуществляется через mdadm ("mdadm --detail-platform"), mdmon, ledmon, ledctl;
формат метаданных imsm (Intel Matrix Storage Manager).
Горячая замена осуществляется преобразованием сигналов удаления и создания шины PCIe в события mdadm (меняйте по очереди!).
Также VMD осуществляет управление индикацией состояния.
Конфигурация массивов работает только в UEFI и без Secure Boot (?). Требуется аппаратный ключ.
Активация в SETUP UEFI: Advanced - Chipset - North Bridge - IIO - VMD.
Аппаратные ключи:
- VROCSTANMOD (AOC-VROCSTNMOD, Intel 951605 Standard) - RAID 0, 1, 10 для NVMe SSD, а также UEFI конфигурацию, горячую замену и индикацию
- VROCPREMMOD (AOC-VROCPREMOD, Intel 951606 Premium) - добавляет поддержку RAID-5 (кто считает?)
и обеспечивает запись из кеша при пропадании питания
- VROCINTMOD (AOC-VROCINTMOD, Intel 956822 Intel SSD) - как VROCPREMMOD, но только при использовании SSD производства Intel
RAID5 при записи чудес не показывает.
Кеширование производится в ОП без батареечной поддержки - здравствуй, "write hole" для RAID5 и борьба с ней
(Intel предлагает несколько алгоритмов борьбы, что намекает).
Ссылки:
HP Smart Array P400 (P400/512MB с батареей - 411064-B21)- серия RAID контролеров SAS (3Gbps) и/или SATA (1.5Gbps).
P400i (412206-001) - встроенный вариант (процессор - 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 батарейкадля P400 и P400i (BBWC, Battery-Backed Write Cache, 390936-001 батарея с кабелем, кабель 399034-001,
только батарея 398648-001/381573-001 (на заряднике 012695-001 REV 0F);
для P410, P410i и P411 - 462976-001 (на заряднике 013277-001 REV 0B) без кабеля или 462969-001/B21 с кабелем) хранит данные 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
- controller номер select
- controller blink={off|on}
- controller modify bootable=yes
- controller delete (?!)
- controller create type=logicaldrive raid={6|5|1|0} drives=... spare=...
- logicaldrive номер show
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)
Обновление информации о томах:
echo "rescan volumes" > /proc/driver/cciss/cciss0
Утилита /sbin/cciss_id (часть device-mapper-multipath) выводит WWID логического диска.
В комплекте с "родным" драйвером поставляются утилиты /sbin/cciss_phys_devs
(выводит список SCSI-устройств, подключённых к указанному контроллеру)
и /sbin/cciss_hotplug (поиск НЛМ).
Утилита hpacucli (HP Array Configuration Utility CLI,
пакет hpacucli-8.28-13.0.noarch.rpm или hpssacli-2.40-13.0.x86_64.rpm) предоставляет
командный интерфейс для настройки и мониторинга.
В начале указывается объект, затем действие, затем параметры
(параметр "forced" заранее подверждает потенциально опасное действие).
В качестве объекта можно указать
- контроллер
(controller {all | slot=номер | wwn=адрес | serialnumber=номер | chassisserialnumber=номер})
- массив (controller выбор-контроллера array {all | идентификатор})
- физический диск (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 тысячи строк информации со всей подноготной; в версии 9 в виде zip-архива в форматах txt, HTML и XML)
- rescan (поиск контроллеров)
При установке создаётся /opt/compaq.
В документации утверждается, что для работы требуется "HP Management Base".
Я не заметил такой потребности.
Можно вызывать из скрипта: "hpacucli controller slot=0 show status; hpacucli controller slot=0 ld 1 show status".
Например:
# добавление отдельного диска под видом 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
# удалить все запасные диски
hpacucli controller slot=0 array A remove spares=all
Утилита cpqacuxe (HP Array Configuration Utility)
пристраивает к веб-интерфейсу для настройки и мониторинга
(объединённая System Management Homepage, HTTPS, порт 2381) возможность настраивать
RAID контроллер (выпрыгивающее окошко). Сервер cpqacuxe запускается как демон.
Может использоваться как для настройки локального контроллера (--disable-remote),
так и удалённой настройки контроллера (cpqacuxe --enable-remote).
После использования можно остановить (-stop).
Есть возможность изготовить скрипт из текущей конфигурации (-c имя-файла)
и выполнить его (-i имя-файла [-reset]).
Декларативный язык создания конфигурации описан в документации.
Есть автономный загрузочный диск с cpqacuxe.
Утилита hpadu (HP Array Diagnostic Utility)
пристраивает к веб-интерфейсу для настройки и мониторинга
(объединённая System Management Homepage, HTTPS, порт 2381) веб-интерфейс для генерации отчётов.
Имеется также командный интерфейс (hpaducli -f имя-файла), который не требует SMH
(вывод подозрительно похож на "hpacucli diag").
Загрузочный диск для автономной настройки массива - hpacucd.
Простейший способ обновить прошивку - загрузиться с Firmware Maintenance CD
(заодно можно обновить прошивку дисков, BIOS и прочее).
Данные SMART (обощённые) для отдельных физических дисков доступны утилитам
из комплекта smartmontools. Настройки для smartd (/etc/smartd.conf,
один логический диск 0 из двух физических в слотах 0 и 1):
/dev/cciss/c0d0 -d cciss,0 -m root -M daily
/dev/cciss/c0d0 -d cciss,1 -m root -M daily
Вызов smartctl:
smartctl -a -d cciss,НомерДиска /dev/cciss/c0d0
Измерение производительности
HP Proliant DL320 G5p, P400/256, RAID 1+0 из двух SATA дисков 250GB, 7200RPM, кеширование включено
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s191.cs.niis 11000M 31349 7 16120 2 68845 4 270.9 0
HP Proliant DL365 G5, P400i/512, RAID 1+0 из двух SAS дисков 146.8GB, 10000RPM, кеширование включено
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
40000M 76154 15 28177 3 72999 5 369.7 0
HP Proliant DL365 G1, RAID 5 из четырёх SAS дисков 146.8GB, 10000RPM, кеширование включено
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
40000M 80360 54 41559 20 146629 32 176.5 1
В RHEL 7 вместо драйвера cciss можно использовать новый драйвер hpsa (при загрузке требуется ключ
"hpsa.hpsa_allow_any=1" для старых (P400 - старый) контроллеров; ключ "hpsa.hpsa_simple_mode" управляет производительностью -
performant или simple), логические диски прикидываются SCSI-устройствами (в cciss - блочными).
Переменные в /sys/class/scsi_host/hostX/: rescan, firmware_revision, transport_mode (performant, simple).
В /proc/scsi/scsi попадают в том числе и логические тома. Имена устройств - стандартные для SCSI /dev/sdX.
Вместо утилиты hpacucli используется hpssacli (пакет hpssacli-2.40-13.0.x86_64
с сайта HPE, интерфейс аналогичен.
smartctl работает как через sg (использовать sg контроллера, а не логического диска): "smartctl -x /dev/sg1 -d cciss,0",
так и через блочные устройства: "smartctl -i /dev/sda -d cciss,0" или "smartctl -i /dev/disk/by-id/scsi-3600508b1001030363943334445300800"
или "smartctl -i /dev/disk/by-id/wwn-0x600508b1001030363943334445300800" или даже "smartctl -i /dev/disk/by-label/boot".
Утилита "cciss_vol_status -V /dev/sda" работает:
Controller: Smart Array P400i
Board ID: 0x3235103c
Logical drives: 1
Running firmware: 5.22
ROM firmware: 5.22
/dev/sda: (Smart Array P400i) RAID 1 Volume 0 status: OK.
Physical drives: 2
connector 1I box 1 bay 1 HP DG146BAAJB P4X5TWEA HPD9 OK
connector 1I box 1 bay 2 HP DG146BAAJB P4X5PRUA HPD9 OK
/dev/sda(Smart Array P400i:0): Non-Volatile Cache status:
Cache configured: Yes
Read cache memory: 52 MiB
Write cache memory: 156 MiB
Write cache enabled: Yes
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.
megaraid cmm: 2.20.2.6 (Release Date: Mon Mar 7 00:01:03 EST 2005)
megaraid: 2.20.4.6-rh2 (Release Date: Wed Jun 28 12:27:22 EST 2006)
megaraid: probe new device 0x1000:0x1960:0x1000:0x0520: bus 4:slot 0:func 0
megaraid: fw version:[1L37] bios version:[G119]
scsi4 : LSI Logic MegaRAID driver
scsi[4]: scanning scsi channel 0 [Phy 0] for non-raid devices
Vendor: ESG-SHV Model: SCA HSBP M27 Rev: 1.14
Type: Processor ANSI SCSI revision: 02
scsi[4]: scanning scsi channel 1 [virtual] for logical drives
Vendor: MegaRAID Model: LD0 RAID5 79512R Rev: 1L37
Type: Direct-Access ANSI SCSI revision: 02
SCSI device sda: 572440576 512-byte hdwr sectors (293090 MB)
sda: asking for cache data failed
sda: assuming drive cache: write through
sda: sda1 sda2
Attached scsi disk sda at scsi4, channel 1, id 0, lun 0
Attached scsi generic sg0 at scsi4, channel 0, id 6, lun 0, type 3
Attached scsi generic sg1 at scsi4, channel 1, id 0, lun 0, type 0
SE7230NH1 (E7230), Pentium D 2800 MHz, RAM: 1 GB, PCI32/33
5 Seagete CHEETAH ST373207LC (10000 rpm, Ultra320)
RAID-5 5x73G Write Thru, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3000M 8234 19 7853 3 6505 1 27060 55 42828 4 541.8 1
при плотном потоке записи компьютер "подвисает"
RAID-5 5x73G Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3000M 40353 93 51799 22 22260 5 34104 69 43591 4 604.1 1
RAID-5 5x73G Write Thru, Adaptive Read Ahead, Cached I/O, hd cache - on
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3000M 11459 26 10705 4 9500 2 33896 69 42680 4 559.3 1
RAID-5 5x73G Write Back, Adaptive Read Ahead, Cached I/O, hd cache - on
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3000M 40742 95 56377 23 19886 5 33768 68 43685 4 591.8 1
SE7230NH1 (E7230), Pentium D 2800 MHz, RAM: 2 GB, PCI32/33
5 Seagete CHEETAH ST373207LC (10000 rpm, Ultra320)
RAID-0 5x73G Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
5000M 40531 94 68731 28 25717 6 40108 81 52590 5 634.6 1
Intel 5000P/Intel 3100/PXH, Intel Xeon 5110 (C2D, 1.6 GHz), RAM: 2 GB, PCI-X
Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
Seagete CHEETAH ST3146707LC (10000 rpm, Ultra320)
RAID-1
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
infra 8000M 34283 91 46545 17 15769 4 38066 93 67274 6 338.1 0
LVM stripe поверх двух RAID-1
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
infra 8000M 32752 89 53432 20 21082 5 38389 93 59056 7 432.2 1
LSI Logic регулярно выпускает серии HBA и RAID контроллеров линеек MegaRAID 92xx/93xx/94xx/95xx/96xx
архитектуры Fusion-MPT (Message Passing Technology, модуль ядра megaraid_sas).
Данный бизнес был куплен как часть LSI Corporation компанией Avago, затем Avago купила Emulex и Broadcom Corporation и переименовалась в Broadcom Limited.
Контроллеры каждой серии делятся (personality) на HBA (JBOD, последние серии поддерживаются не только JBOD, но и RAID-0, RAID-1) и RAID (MR),
которые в свою очередь делятся на дешёвые устройства Entry Line (RAID-1), средние Value Line и дорогие Feature Line (внешние порты, большое количество портов).
Различные модели в серии непосредственно поддерживают от 8 до 24 внутренних и внешних устройств хранения SAS 6/12/24 Gb (SAS, SSP),
SATA 6 Gb (SATA SSD должны поддерживать набор команд ATA-8 ACS) и NVMe (начиная с 94xx) через одни и теже порты (Tri-Mode).
С использованием экспандеров (туннелирование SATA - STP до 12 Gb/s; multipath; протокол управления SMP)
и коммутаторов PCIe возможно подключение большого количества (64, 128, 240, 255) устройств хранения.
Подключение производится с помощью широких портов (4 устройства SAS на кабель mini-SAS SFF-8087, HD Mini-SAS SFF-8643, 8 SAS на SFF-8654 Slim SAS и т.п.).
Количество портов более 8 на старших моделях 92xx/93xx обеспечивается встроенными экспандерами (кроме 9361-16i и 9361-24i).
Некоторые модели:
- MegaRAID SAS 9266-8i (LSI00295, LSI00296):
- PCI Express 2.0 x8 (32 Gbps), совместим с PCI Express 1.1, вставляется в x16
- низкопрофильная (MD2, 6.6" x 2.536")
- ROC (Raid On Chip) процессор MegaRAID SAS 2208 Dual Core (Thunderbolt, 2 x 800 MHz PowerPC, предположительно 450 Kiops)
- память под кеш (1GB, 1333 MHz, ECC DDR3, 10.7 GBps)
- непосредственно 8 портов SAS 2.1 (SSP) или SATA (SATA I, SATA II, SATA III) 6 Gbps как
2 внутренних разъёма mini-SAS SFF-8087 x4 (монтаж сбоку, 48 Gbps, порт 0 сверху);
можно подключить (через экспандеры, протоколы SMP для управления и STP для SATA) до 128 устройств (до 16 корзин,
до 2 корзин (SEP) на порт, до 15 устройств на порт, включая SEP и экспандеры);
В некоторых частях документации заявлено, что STP (SATA устройства за экспандером) ограничен скоростью 3 Gbps;
в другом месте написано 6 Gbps и это правда;
- альтернативный к SES интерфейс с корзиной осуществляется через SFF-8485 (SGPIO), встроенный в mini-SAS и mini-SAS HD
- 2 дополнительных соединения с модулем управления дисковой полкой (3-pin, I2C)
- опциональный модуль резервного копирования кеша на флеш LSI CVM01 (включает CVFM02 и подключение внешнего CVPM02)
или соединения с локальной или внешней батареей LSIiBBU09
- соединение для аппаратного ключа разблокировки "продвинутых" опций CacheCade и др. (3-pin)
- перемычка: использовать ли BIOS (SBR bypass)
- индикаторные разъёмы: с 8 индикаторами ошибки для каждого из 8 портов, с индикатором активности,
с индикатором загруженного кеша, индикатор активности (Drive), индикатор ошибки (Global)
- имеется в списке совместимости SuperMicro SAS2-216EB и SAS2-216EL2 (экспандер от LSI, fw 206)
- собственный звучок (включается при переходе одного из массивов в состояние Fail;
отключается утилитами или в UEFI/BIOS для текущего события или навсегда;
примерное описание: равномерные гудки - деградация, длинные - отказ, короткие - задействован резервный диск)
- MegaRAID SAS 9271-8i на той же микросхеме отличается PCIe 3.0 x8 (на той же микросхеме, но PCIe 3.0?!)
- HBA SAS 9300-8i на SAS3008 (PCIe 3.0 x8, 8 портов SAS3/SATA2, 1 MIOPS, 6GB/s, по запросу IR - RAID-0/1/1E/10 (IS/IM/IME/IMS); PowerPC 476 @ 1.2 GHz),
LP, 2 Mini-SAS HD SFF8643, SFF-8485 SGPIO
- HBA SAS 9305-16i на SAS3216 (1 MIOPS при 4KB, 6 GB/s; PowerPC 476 @ 1.2 GHz; Gigabit Ethernet),
PCIe 3.0 x8, LP, 4 Mini-SAS HD SFF-8643 по 4 SAS3/SATA2 порта, SFF-8485 SGPIO,
2 раздельных SAS ядра по 8 портов, широкий порт должен состоять из портов одного ядра, отдельные проблемы с multipath и загрузочным устройством
- HBA SAS 9305-24i на SAS3224 (1 MIOPS при 4KB, 6.5GB/s; PowerPC 476 @ 1.2 GHz; Gigabit Ethernet), PCIe 3.0 x8, LP, Half Length,
6 Mini-SAS HD SFF-8643 по 4 SAS3/SATA2 порта, SFF-8485 SGPIO,
3 раздельных SAS ядра по 8 портов, широкий порт должен состоять из портов одного ядра, отдельные проблемы с multipath и загрузочным устройством
- MegaRAID SAS 9361-8i на микросхеме LSI SAS 3108 dual core RAID on Chip (ROC, 2 x 1200 MHz PowerPC) поддерживает
PCIe 3.0 x8 (8GB/s) и 8 SAS 12Gbps / SATA 3.0 (9.6GB/s),
увеличена частота ECC DDR3 памяти до 1866 MHz (14.9 GB/s, кеш 1GB или 2GB - 05-25420‐17), 2 разъёма HD Mini-SAS SFF8643 (Horizontal mount),
опциональный модуль резервного копирования кеша на флеш LSICVM02 (включает CVFM04 и CVPM02), до 128 устройств с использованием экспандеров, низкопрофильная MD2,
тесты производительности на случайную запись для SSD
в любых RAID (кроме RAID-0) не показали существенного прироста;
ускорение в RAID-0 и пропускной способности существенно
- MegaRAID SAS 9361-16i (05-25708-00)
- базируется на микросхеме LSI SAS 3316 dual core RAID on Chip (ROC, 2 x 1200 MHz PowerPC 476)
- поддерживает PCIe 3.0 x8 (8GB/s) и 16 прямых портов SAS 12Gbps, 19.2GB/s (4 HD Mini-SAS SFF-8643, вверху порты 0-3, внизу порты 12-15)
- альтернативный к SES интерфейс с корзиной осуществляется через SFF-8485 (SGPIO), встроенный в mini-SAS и mini-SAS HD
- 2GB 1866MHz ECC DDR3 SDRAM (14.9 GB/s)
- опциональный модуль питания модуля резервного копирования кеша на флеш CacheVault CVPM02 (05-50038-00, только конденсатор (282 J) и кабель (9 на 9),
модуль флеша встроен в плату контроллера, возможно докупить плату для монтажа конденсатора BBU-BRACKET-05
- до 240 устройств с использованием экспандеров
- размер - MD2 low profile - 68.90 x 155.65 мм (68.90 x 135 мм?); потребляемая мощность - от 16 до 24 Вт, CVPM при зарядке - 6 Вт
- CPLD версии 04468-021 необходимо обновить до 04468-031
- 2 независимых ядра (SAS core) обслуживают PHY 0 to 7 (Core 1) и PHY 8 to 15 (Core 0) и не могут общаться
(все физические порты широкого порта должны обслуживаться одним и тем же ядром, отдельные проблемы с multipath и загрузочным устройством)
- подключение аппаратного разблокировщика опций CacheCade, SafeStore и т.п. (3-pin)
- подключение индикатора активности диска (общий для всех)
- подключение индикатора сбоя диска (общий для всех)
MegaRAID SAS 9361-24i (05-50022-00) на микросхеме LSI SAS 3324 dual core RAID on Chip (ROC, 2 x 1200 MHz PowerPC 476)
поддерживает PCIe 3.0 x8 (8GB/s) и 24 прямых порта SAS 12Gbps, 28.8GB/s (6 HD Mini-SAS SFF8643),
4GB DDR4-2133 (в описании микросхемы указано 1866MHz ECC DDR3, попутали с 9365-28i?),
опциональный модуль питания модуля резервного копирования кеша на флеш CacheVault CVPM02 (05-50038-00, только конденсатор (282 J) и кабель (6 на 9),
т.к. модуль флеша встроен в плату контроллера, возможно докупить плату для монтажа конденсатора BBU-BRACKET-05;
MegaRAID SAS 9365-28i (4GB DDR4-2133 с ECC, SAS3508 dual-core RAID-on-Chip (ARM A15, 1Miops), CVPM05, 6.6" - Half Length, Full Height,
PCIe 3.1 x8 и 28 портов SAS 12GBs (6 x4 Mini SAS HD SFF-8643; 1 x4 SlimSAS SFF-8654), экспандер (микросхема имеет только 8 портов))
HBA 9400-8i Tri-Mode на SAS3408 (PCIe 3.1 x8, ARM A15 @ 1.2 GHz; 1.7 MIOPS? 6.850 GB/s? SFF-8485 SGPIO,
8 SAS3/SATA и 2 или 4 NVMe (PCIe 3.1 x4 или x2 (8 линий в сумме), SFF-8639/SFF-8680),
LP, 2 HD Mini-SAS SFF-8643 (8 линий) для подключения SFF-8639 (U.2, по 4/2/1 линии на разъём) и SFF-8680 (SAS/SATA, по 1 линии на разъём);
для использования NVMe x2 требуется размножитель REFCLK;
выбор типа управления полкой в соответствии с SFF-8448 или его надмножестве SFF-9402 (для NVMe) -
REFCLK использует тот же провод HD Mini-SAS, что и SGPIO, поэтому использовать SGPIO невозможно, I2C вместо него;
новомодное управление полкой в соответсвии с SFF-TA-1005 (UBM - Universal Backplane Management): тип REFCLK, ширина NVMe, скорость, мощность,
порядок кабелей, горячее подключение;
для подключения U.2 требуются специальные кабеля для каждой пары SFF-8643 к соседним слотам
(U.2 Enabler Cable 1x8 Mini SAS HD (Adapter Side) to 2x4 SlimLine (SFF-8654) или OCuLink (SFF-8612) или Mini SAS HD (05-50061-00 для полок SuperMicro)),
которые обеспечивают перетасовку линий, REFCLK, VPP over I2C (для управления индикаторами);
длина кабеля не более 1 метра;
полка должна соответствовать SFF-9402;
HBA поддерживает профили: только SAS/SATA (умолчание для MegaRAID), только NVMe, смешанный (умолчание для HBA)
HBA 9400-16i Tri-Mode на SAS3416 (PCIe 3.1 x8, ARM A15 @ 1.2 GHz; 1.7 MIOPS? 6.850 GB/s? SFF-8485 SGPIO,
16 SAS3/SATA и 4 или 8 NVMe (PCIe 3.1 x4 или x2 (16 линий в сумме), SFF-8639/SFF-8680),
LP, 4 HD Mini-SAS SFF-8643 (16 линий) для подключения SFF-8639 (U.2, по 4/2/1 линии на разъём) и SFF-8680 (SAS/SATA, по 1 линии на разъём);
устройство по традиции сегментировано на SAS ядра (8 портов в ядре) и PDB (PCIe device bridge, 8 линий в PDB);
про REFCLK, кабели и полку см. выше
HBA 9405W-16i Tri-Mode на SAS3616W (PCIe 3.1 x16, ARM A15 @ 1.2 GHz; 2.7 MIOPS? 13.7 GB/s? SFF-8485 SGPIO,
16 SAS3/SATA и 4 или 8 NVMe (PCIe 3.1 x4 или x2 (16 линий в сумме), SFF-8639/SFF-8680),
LP MD2, 4 HD Mini-SAS SFF-8643 (16 линий) для подключения SFF-8639 (U.2, по 4/2/1 линии на разъём) и SFF-8680 (SAS/SATA, по 1 линии на разъём);
устройство по традиции сегментировано на SAS ядра (8 портов в ядре) и PDB (PCIe device bridge, 8 линий в PDB);
про REFCLK, кабели и полку см. выше
MegaRAID 9460-8i на SAS3508 (2GB DDR4-2133 с ECC (17GB/s), 2 ядра ARM A15, 1Miops) и экспандере SAS35x36 -
8 SAS3/SATA и 4 NVMe (PCIe 3.1 x4 или x2 (8 линий в сумме), SFF-8639/SFF-8680)
MegaRAID 9460-16i на SAS3516 (4GB DDR4-2133 с ECC (17GB/s), 2 ядра ARM A15, 1Miops) - 16 SAS3/SATA
и 8 NVMe (PCIe 3.1 x4 или x2 или x1 (16 линий в сумме), SFF-8639/SFF-8680)
HBA 9500-16i Tri-Mode на SAS3816 (PCIe 4.0 x8, 2 ядра ARM A15 @ 1.6 GHz, 3 MIOPS при 4K (в другом месте сказано 1 MIOPS), 13.7 GB/s при 256K,
16 SAS3/SATA и 4 или 8 или 16 NVMe (PCIe 4.0 x4 или x2 или x1 (16 линий в сумме), ? SFF-8639/SFF-8680, до 32 NVMe устройств через коммутатор),
LP MD2, 2 SlimSAS SFF-8654 (2x8 линий) для подключения ? SFF-8639 (U.2, по 4/2/1 линии на разъём) и SFF-8680 (SAS/SATA, по 1 линии на разъём);
устройство по традиции сегментировано на SAS ядра (8 портов в ядре) и PDB (PCIe device bridge, 8 линий в PDB);
для использования NVMe x2 или x1 требуется размножитель REFCLK (если полка/устройство не поддерживает SRIS);
выбор типа управления полкой в соответствии с SFF-8448 или его надмножестве SFF-9402 (для NVMe) -
REFCLK использует тот же провод HD Mini-SAS, что и SGPIO, поэтому использовать SGPIO невозможно, I2C вместо него;
новомодное управление полкой в соответсвии с SFF-TA-1005 (UBM - Universal Backplane Management): тип REFCLK, ширина NVMe, скорость, мощность,
порядок кабелей, горячее подключение;
для подключения U.2 (SFF-8639) требуются специальные кабели Broadcom от каждого SlimSAS SFF-8654 x8 к SlimLine 2x4/1x8
или OCuLink 2x4 или Mini SAS HD 2x4 (2 варианта) или 2 U.2 (SFF-8639) или 8 U.3 (SFF-TA-1001);
длина кабеля не более 1 метра;
полка должна соответствовать SFF-9402;
HBA поддерживает профили: только SAS/SATA (умолчание для MegaRAID), только NVMe, смешанный (умолчание для HBA)
MegaRAID 9540-8i Tri-Mode (05-50134-03) на SAS3808 (PCIe 4.0 x8; никакого аппаратного RAID и батарейки; RAID 0, 00, 1, 10); LP MD2;
8 SAS3/SATA (12Gb/s, до 63 через экспандер) и 4 NVMe (16GT/s);
новомодное управление полкой в соответсвии с SFF-TA-1005 (UBM - Universal Backplane Management): тип REFCLK, ширина NVMe, скорость, мощность,
порядок кабелей, горячее подключение;
для подключения U.2 (SFF-8639) требуется специальный кабель Broadcom от SlimSAS SFF-8654 x8 к SlimLine 2x4/1x8
или OCuLink 2x4 или Mini SAS HD 2x4 (2 варианта) или 2 U.2 (SFF-8639) или 8 U.3 (SFF-TA-1001);
MegaRAID 9560-8i Tri-Mode (05-50077-01, наклейка R-R-A8T-50077)
- базируется на SAS3908 (PCIe 4.0 x8 16GB/s; 4GB DDR4-2666 с ECC (21GB/s), 2 ядра ARM A15 1600MHz,
обещано 3Miops/240k на случайных запросах 4KB в RAID5, 13.7 GB/s на чтении 256KB)
- LP MD2 (155.52 x 68.77 мм), температура от 0 до 55 °C, типичное потребление 9.64 Вт
- 8 SAS3/SATA3/SATA2 (12Gb/s или 6Gb/s или 3Gb/s, до 240 через экспандер - STP, SMP, SSP) или
2 NVMe PCIe v4.0 x4 (16GT/s, или 4 NVMe x2 или 8 NVMe x1, до 32 через коммутатор)
- NVMe реализуется средствами PDB (PCIe device bridge) x4
- NVMe в режимах общей (для каждой квадриги в SFF-8654 x8 SlimSAS) и раздельной синхронизации;
для использования устройств x2 и x1 необходимо шаманить с полкой; рекомендуется использовать устройства с SRIS
- 1 разъём SFF-8654 x8 SlimSAS;
для подключения U.2 (SFF-8639) требуется специальный кабель Broadcom от SlimSAS SFF-8654 x8 к SlimLine 2x4/1x8
или OCuLink 2x4 или Mini SAS HD 2x4 (SFF-8643, 2 варианта) или 2 U.2 (SFF-8639) или 8 U.3 (SFF-TA-1001)
- выбор метода управления корзиной по побочным каналам согласно SFF-8448:
SFF-8485 (SGPIO, встроен в mini-SAS и mini-SAS HD (SFF-8643), SFF-8654) или I2C (2-wire);
SFF-9402 расширяет перечень побочных каналов сигналами SFF-8654 (каналы A и B для двух x4) и PCIe;
как помигать лампочками слота, в который поставили NVMe в обход контроллера?
новомодное управление полкой в соответсвии с SFF-TA-1005 (UBM - Universal Backplane Management): тип REFCLK, ширина NVMe, скорость, мощность,
порядок кабелей, горячее подключение
для полок без UBM управление индикаторами NVMe предлагается для каждой пары NVMe с помощью VPP (Virtual Pin Port)
на головном устройстве через I2C (PCA9555 на плате, порт 0x40);
как узнать о наличии, как управлять?
NVRAM - 128KB
Flash - 16MB
CacheVault Flash - 17.320 GB
нужен модуль питания CacheVault CVPM05 (05-50039-00, FBU345), подключается 1 составным кабелем в J14 (9 пин), флеш накопитель встроен в плату контроллера
подключение аппаратного разблокировщика опций CacheCade, SafeStore и т.п. (3-pin?)
подключение индикатора активности диска (общий для всех)
подключение индикатора сбоя диска (общий для всех)
жёлтый индикатор перегрева
зелёный индикатор здоровья (мигает 1 Гц)
жёлтый индикатор проблем с CVPM05 на обратной стороне
эелёный индикатор работы с ONFI на обратной стороне
MegaRAID 9560-16i Tri-Mode (05-50077-00)
- базируется на SAS3916 (PCIe 4.0 x8; 8GB DDR4-2666 с ECC (21GB/s), 2 ядра ARM A15 1600MHz,
обещано 3Miops/240k на случайных запросах 4KB в RAID5, 13.7 GB/s на чтении 256KB)
- LP MD2 (155.52 x 68.77 мм), температура от 0 до 55 °C, типичное потребление 13.21 Вт
- 16 SAS3/SATA3/SATA2 (12Gb/s или 6Gb/s или 3Gb/s, до 240 через экспандер - STP, SMP, SSP) или
4 NVMe (PCIe 4.0 x4 16GT/s или 8 NVMe x2 или 16 NVMe x1, до 32 через коммутатор)
- 2 независимых ядра (SAS core) обслуживают PHY 0 to 7 (Core 1) и PHY 8 to 15 (Core 0) и не могут общаться
(все физические порты широкого порта должны обслуживаться одним и тем же ядром, отдельные проблемы с multipath и загрузочным устройством)
- NVMe реализуется средствами 2 независимых PDB (PCIe device bridge) x4
- NVMe в режимах общей (для каждой квадриги в SFF-8654 x8 SlimSAS) и раздельной синхронизации;
для использования устройств x2 и x1 необходимо шаманить с полкой; рекомендуется использовать устройства с SRIS
- 2 разъёма SFF-8654 x8 SlimSAS;
для подключения U.2 (SFF-8639) требуются специальные кабели Broadcom от каждого SlimSAS SFF-8654 x8 к SlimLine 2x4/1x8
или OCuLink 2x4 или Mini SAS HD 2x4 (2 варианта) или 2 U.2 (SFF-8639) или 8 U.3 (SFF-TA-1001)
- выбор метода управления корзиной по побочным каналам согласно SFF-8448:
SFF-8485 (SGPIO, встроен в mini-SAS и mini-SAS HD, SFF-8654) или I2C (2-wire);
SFF-9402 расширяет перечень побочных каналов сигналами SFF-8654 (каналы A и B для двух x4) и PCIe
- новомодное управление полкой в соответсвии с SFF-TA-1005 (UBM - Universal Backplane Management): тип REFCLK, ширина NVMe, скорость, мощность,
порядок кабелей, горячее подключение
- нужен модуль питания CacheVault CVPM05 (05-50039-00, FBU345), подключается 1 составным кабелем в J14 (9 пин), флеш накопитель встроен в плату контроллера
- подключение аппаратного разблокировщика опций CacheCade, SafeStore и т.п. (3-pin?)
- подключение индикатора активности диска (общий для всех)
- подключение индикатора сбоя диска (общий для всех)
- жёлтый индикатор перегрева
- зелёный индикатор здоровья (мигает 1 Гц)
- жёлтый индикатор проблем с CVPM05 на обратной стороне
- эелёный индикатор работы с ONFI на обратной стороне
Поддержка UEFI 2.0: драйвер UEFI, сервис загрузки, конфигурация и диагностика встраиваются в BIOS/UEFI Setup.
В реальности, в старых прошивках невозможно пользоваться загрузкой UEFI (нет HII), а в новых невозможно пользоваться Legacy (нет обработки ошибок).
Управление корзиной возможно с помощью встроенного в SAS SES или
внешними протоколами SFF-8485 SGPIO (линии имеются в mini-SAS, mini-SAS HD, Slim SAS) или с помощью I2C.
Поддерживает (поддерживала?) протокол SAF-TE (интерфейс I2C с процессором SEP корзины).
Корзины нумеруются не с нуля, например, с 12 или 250
("Zero Based Enclosure Enumeration = No", в некоторых серверах (Dell, Lenovo) установлено в Yes).
Устройства хранения нумеруются не с нуля и не обязательно подряд.
При настройке до 32 физических устройств хранения объединяются в группу устройств (DG, до 128 групп).
Из группы или нескольких групп (до 8, span, упряжка) нарезаются виртуальные диски (VD), не более 16 на группу,
не более 64 (до 240 в новых прошивках) виртуальных дисков на контроллер.
"Прежде чем размежеваться мы должны объединиться"!
Виртуальные диски являются устройствами хранения с точки зрения ОС.
Допускается не более 128 (240) устройств хранения на контроллер, не более 64 на корзину (увеличили?), не более 16 корзин на порт.
Размер виртуального диска был до 64 ТБ, увеличен до ?.
Возможные состояния физического диска:
- Online - часть виртуального диска и работоспособен
- Hot Spare - сконфигурирован как запасной и работоспособен
- Unconfigured Good - работоспособен, но не используется
- Failed - был сконфигурирован, но облажался (можно конфигурировать слежение между перезагрузками)
- Rebuild - сюда сейчас пишутся данные при восстановлении избыточности
- Unconfigured Bad - не рабочий, не использовался или не получилось проинициализировать
- Missing - здесь должен быть используемый диск, но его нет
- Offline - часть виртуального диска, работоспособен, но содержит "неправильные" данные
- Shielded - промежуточное состояние на время диагностики после сбоя (должна быть разрешена поддержка в настройках)
- Copyback - диск, которым заменили сбойный, сюда будут возвращены данные
- JBOD - отсутствуют метаданные DDF (должна быть разрешена поддержка в настройках)
Возможные состояния виртуального диска:
- Optimal - всё отлично
- Degraded - ещё 1 отказавший диск и всё
- Partial Degraded - 1 диск отказал, но резерв ещё есть (RAID-6)
- Failed - неработоспособен
- Offline - недоступен контроллеру
- Foreign - метаданные (DDF) на дисках не имеют соответствия в конфигурации контроллера
В линейке 93xx контроллер можно перевести (storcli, требуется перезагрузка) в режим JBOD (аналог IT HBA) - только RAID-0, RAID-1, RAID-10,
зато Passthrough, метаданные (DDF) не пишутся на диск (кроме поддерживаемых RAID).
При этом вновь вставленный диск без DDF отображается как JBOD вместо Unconfigured Good.
В линейке 95xx можно задать профиль, например отключить возможность работы с NVMe ("show profile; set profile номер").
/opt/MegaRAID/storcli/storcli64 /c0 show profile
Controller Properties :
=====================
--------------------------------------------------------------------------------
Mode ProfID MaxPhyDrv MaxLD MaxPCIeDev MaxAHCIDev Dflt Curr Optm Pend WBSup Cmp
--------------------------------------------------------------------------------
RAID 30 240 240 32 0 Yes Yes No No Yes Yes
RAID 32 240 240 0 0 No No No No Yes Yes
--------------------------------------------------------------------------------
ProfID=Profile ID|MaxPhyDrv=Maximum Physical Drives|MaxLD=Maximum Logical Drives
MaxPCIeDev=Maximum PCIe Devices|MaxAHCIDev=Maximum AHCI Devices
Dflt=Default Profile|WBSup=Write Back Support|Curr=Current Profile
Optm=Optimal Profile|Pend=Pending Profile|Cmp=Compatible Profile
Данные нарезаются на полоски, которые распределяются по дискам (strip size - размер полоски на одном диске,
stripe width - число дисков в группе, stripe size - сумма размеров полосок данных "на одном обороте").
Размер полоски (strip) - от 8 КиБ (от 64 КиБ в новых версиях) до 1 МиБ.
Логический диск после создания должен быть проинициализирован.
По умолчанию, при создании массива запускается фоновая инициализация логических дисков (через 5 минут после создания для
RAID-5 из 5 дисков и RAID-6 из 7 дисков), повторная инициализация с теми же параметрами не портит данные пользователей.
Фоновые операции (инициализация, восстановление, проверка) могут быть приостановлены и продолжены в любое время.
Доля (приоритет) пропускной способности контроллера на фоновые операции задаётся в настройках отдельно для каждого типа.
Чтобы изменить скорость необходимо остановить операцию, изменить её долю от возможностей дисков и запустить её заново.
по непонятным причинам начиная с версии ? фоновая инициализация (RAID6 из 24 диска SAS 10000rpm 900GB) длится от 2 часов до суток;
инициализация RAID-6 из 18 дисков SATA 2TB 7200rpm - более 5 суток при 100% доле; приходится останавливать и запускать "init full").
Контроллер обеспечивает RAID уровней 0 (до 32 дисков), RAID-1 (чётное число дисков от 2 до 32, параллельное чтение не заявлено?),
RAID-5 (от 3 до 32 дисков), RAID-6 (от 4 до 32 дисков),
RAID-00 (RAID-0 из групп дисков типа RAID-0; от 2 до 256 дисков),
RAID-10 (RAID 1+0, RAID-0 из групп дисков (до 8 групп, чётное число дисков от 2 до 32 в группе), собранных в RAID-1;
размер stripe (strp*число-дисков-данных) д.б. одинаков),
RAID-50 (RAID-0 из дисков, собранных в RAID-5, размер stripe (strp*число-дисков-данных) д.б. одинаков)
и RAID-60 (RAID-0 из дисков, собранных в RAID-6, размер stripe (strp*число-дисков-данных) д.б. одинаков).
Не забывайте, что RAID не является заменой резервного копирования.
Независимые диски конфигурируются как RAID-0 или RAID-00 (в новых версиях как JBOD без метаданных).
Можно делать смешанные логические устройства из SAS и SATA дисков, но не из SSD (диски и SSD тоже нельзя смешивать).
Описание вариантов смешивания - мутное. Начиная с версии ? можно смешивать всё, но изготовитель сильно не советует.
Можно смешивать устройства с секторами 512n и 512e, но нельзя смешивать устройства с секторами 4Kn и 512n/e.
Можно запретить запись на логическое устройство (Read Only).
Тип предваряющего чтения логического устройства: включено, выключено, раньше был адаптивный режим - удалили.
Политика ввода/вывода логического устройства: с использованием кеша (все читаемые и записываемые данные попадают в кеш),
прямой ввод-вывод (данные читаются одновременно в кеш и на сервер, предварительно читаемые данные попадают в кеш, записываемые данные попадают в кеш в режиме writeback).
Изготовитель рекомендует прямой ввод-вывод без предварительного чтения (и похоже знает, что говорит).
Режимы кеширования записи логического устройства: Write Back (контроллер рапортует о завершении записи сразу после записи в кеш, если есть батарейка),
Always Write Back (контроллер всегда рапортует о завершении записи сразу после записи в кеш),
Write Through (контроллер рапортует о завершении записи после передачи на устройство хранения).
Кеширование записи на самих устройствах хранения необходимо выключить, если устройство не обеспечивает его сохранности самостоятельно.
Интервал сохранения кеша задаётся в настройках (4 секунды).
Также можно потребовать сохранять содержимое кеша для отсутствующих или отключённых логических устройств.
Содержимое кеша записи в аварийных ситуациях (отключение питания) может быть сохранено
опциональным модулем сброса кеша записи из памяти DDR на ONFI (флешку) LSI CVM01 (CacheVault, LSI00297) или LSI CVM02 для 93cxx.
или батарейным модулем LSIiBBU09 питания DRAM (LiON, достаточно для 48 часов удержания данных в DRAM, может работать при температуре до 45 градусов,
в комплекте должны идти TMM - Transportable Memory Modules, чтобы содержимое кеша можно было перенести на новый контроллер).
А ведь ради этого мы и покупаем аппаратные RAID6 контроллеры!
Модуль CVM02 для 9266 или CVM04 для 93xx включает флеш (CVFM02 для 9266 (USB флеш), CVFM04 для 93xx (ONFI), можно перенести на новый контроллер)
со средствами мониторинга и заряда,
суперконденсатор (очень быстрая зарядка, хранение данных много лет, необязательно мониторить и регулярно менять как LiON iBBU,
нельзя нагревать выше 55, потребляет 6 Вт при зарядке) CVPM02 (LSI 49571-01, 283 J, 9.4V) с датчиком температуры и заряда
и переходной кабель (большой 6-pin со стороны конденсатора, малый 6-pin со стороны CVFM02).
Имеется интерфейс для подключения индикатора наличия незаписанных данных в кеше (нет в 9361-16i).
CVPM нельзя подключать на ходу.
В 9361-16i модуль с флешкой (избыточного объёма, для борьбы с плохими блоками?) встроен в контроллер, докупать надо только CVPM02
(с другим переходным кабелем: 6-pin со стороны конденсатора, 9-pin со стороны контроллера?),
в результате содержимое кеша пропадает вместе с умершим контроллером.
Для 9365-28i и для всех 94xx/95xx вместо CVPM02 требуется CVPM05 (104 J) и переходной кабель 9-pin.
Можно докупить держатель BBU-BRACKET-05 для CVPM02/05 (занимает слот PCIe), самодельное крепление не должно давить сверху.
CVFM0x можно перемещать на аналогичный контроллер с очищенными настройками.
Интересно, что происходит с кешем при зависании контроллера и сбросе без выключения питания?
Средства управления и настройки в HII и storcli позволяют мониторить состояние CVFM и CVPM,
запускать проверку работоспособности и управлять периодическим запуском проверки в автоматическом режиме.
storcli64 /c0/cv show all
Cachevault_Info :
===============
--------------------
Property Value
--------------------
Type CVPM05
Temperature 19 C
State Optimal
--------------------
Firmware_Status :
===============
---------------------------------------
Property Value
---------------------------------------
NVCache State OK
Replacement required No
No space to cache offload No
Module microcode update required No
---------------------------------------
GasGaugeStatus :
==============
------------------------------
Property Value
------------------------------
Pack Energy 75 J
Capacitance 100 %
Remaining Reserve Space 0
------------------------------
Design_Info :
===========
------------------------------------
Property Value
------------------------------------
Date of Manufacture 08/05/2019
Serial Number 22515
Manufacture Name LSI
Design Capacity 104 J
Device Name CVPM05
tmmFru N/A
CacheVault Flash Size 17.320 GB
scapBatversionNo 0x00
scapSerialNo 22515
scap Date of Manufacture 08/05/2019
scapPcbAssmNo 50046-01
scapPCBversionNo B
scapBatPackAssmNo 49571-222
Module Version -241-4GB
------------------------------------
Design_Info :
===========
------------------------------------
Property Value
------------------------------------
Date of Manufacture 04/05/2012
Serial Number 6108
Manufacture Name LSI
Design Capacity 283 J
Device Name CVPM02
tmmFru N/A
CacheVault Flash Size N/A
tmmBatversionNo 0x0
tmmSerialNo 13059
tmm Date of Manufacture 16/05/2012
tmmPcbAssmNo L22541903A
tmmPCBversionNo 0x03
tmmBatPackAssmNo 49571-01A
scapBatversionNo 0x0
scapSerialNo 06108
scap Date of Manufacture 04/05/2012
scapPcbAssmNo 1700054483
scapPCBversionNo G
scapBatPackAssmNo 49571-01A
Module Version 25849-04
------------------------------------
Properties :
==========
------------------------------------------------------------------------
Property Value
------------------------------------------------------------------------
Auto Learn Period 27d (2412000 seconds)
Next Learn time 2024/03/05 14:01:01 (762962461 seconds)
Learn Delay Interval 0 hour(s)
Auto-Learn Mode Transparent
Last Successful Learn Time Completed, TUE, February 6, 2024 at 16:01:01
------------------------------------------------------------------------
Если при восстановлении питания в копии кеша записи (CV) или в самом кеше (iBBU) обнаруживаются несброшенные данные,
то контроллер немедленно пытается записать содержимое кеша записи на устройства хранения.
Если обнаруживается, что кеш (или его часть) восстановить неуда (например, отсутствуют устройства хранения от нужных логических томов
или они были попорчены), то при загрузке модуль инициализации устройства предлагает сделать что-нибудь.
В модуле настройки BIOS или HII появляется строка меню для очистки кеша.
При заполненном кеше некоторые функции контроллера недоступны, например,
импорт конфигурации с вновь вставленных дисков (foreign), зато предлагается очистить постороннюю
конфигурацию. Надо отказаться, очистить кеш, затем импортировать конфигурацию.
До 1008 (в другом месте 255, 5101 для 9560-8i) команд параллельно, scatter/gathers до 60 (80 для 93xx),
максимальный размер передачи - 8192 (2048 для 95xx) сектора (до 42 полосок - 2688 KiB; 6.4MiB для 93xx при размере полоски 64KB).
Возможность расширения находящегося в оптимальном состоянии логического диска и миграции между уровнями RAID без остановки работы.
Реконфигурацию массива (добавление диска, смена типа RAID - level migration) нельзя прерывать и перезагружаться,
после вынимания диска на ходу массив остался в состоянии миграции, сделать с ним ничего не смог.
Добавление 17-го диска - SAS, 900GB и 10k rpm - в RAID-6 заняло 52 часа, после чего инициализация массива ещё 6 часов,
всё это время данные беззащитны, а скорость доступа упала в десятки раз;
24-го диска - предположительно займёт 70 часов;
добавление 3 дисков к 12 - SAS, 1800GB и 10k rpm, RAID-6 - 97 часов, после чего инициализация массива ещё 23 часа;
добавление 1 диска к 9 - SAS, 900GB и 10k rpm, RAID-6 - 27 часов, после чего инициализация массива ещё 5 часов;
добавление 2 дисков к 13 - SATA, 500GB и 7200, RAID-6 - 42 часа, после чего инициализация массива ещё 7 часов.
при реконструкции на всех логических дисках контроллера отключается кеширование записи.
Возможность задержки раскручивания дисков (интервал между парами дисков).
Запасные диски горячей замены (hot spare) позволяют автоматически и без остановки работы заменять неисправные диски с помощью
перестроения (восстановления избыточности, rebuild) группы дисков (автоматическое продолжение восстановления после перезагрузки.
Горячая замена должна поддерживаться в самих дисках и корзине.
Имеется возможность заранее задать долю (в реальности приоритет) - по умолчанию 30% - доступа к дискам для операций восстановления).
Восстановление после сбоя 2 дисков RAID-6 происходит по очереди.
Диски горячей замены можно привязывать к дисковой полке и/или к группе дисков.
При отсутствии подходящего диска горячей замены необходимо извлечь сбойнувший диск и вставить новый.
Возможно автоматическое назначение неиспользуемого диска в качестве диска горячей замены (то-то будет сюрприз при случайной вставке диска с ценными данными!).
При вставке нового чистого диска в корзину он автоматически становится запасным (и форматируется при необходимости), настраивается.
Если при восстановлении происходят ошибки чтения,
то блокируется соответствующая область на восстанавливаемых устройствах (Punctured Block Entries),
последующие чтения всегда будут возвращать ошибку до очистки (полной инициализации).
Если запасной диск имеет больший размер, то свободное место использовать не получится.
Восстановление как первого, так и второго диска RAID-6 без нагрузки произсходит очень быстро
(2 часа для SAS диска 900GB 10000rpm), под полной нагрузкой - очень медленно (более 2 суток для SAS диска 900GB 10000rpm).
Возможно автоматическое продолжение создания или восстановления массива после перезагрузки (настраивается).
Рекомендуется настроить периодическую (раз в месяц) проверку массива (CC) на соответствие данных и чётности,
т.к. если "плохой" блок "проявится" при восстановлении, то данные будут потеряны.
Можно настраить остановку проверки при обнаружении ошибки или автоматическое лечение.
Необходимо установить время на контроллере.
Для RAID6 при расхождении данных будет использована правильная копия.
Без нагрузки на массив: RAID6 - 240 минут, RAID1- 200 минут (24 диска SAS 10000rpm 900GB);
при полной нагрузке на массив: RAID6 - 300 часов, влияние на нагрузку минимальное - 10%;
RAID6 из 18 дисков SAS 4TB 7200rpm - 20 часов независимо от ccrate.
Возможна настройка проверки записи (описание мутное).
Можно задавать скорость SAS и NVMe, ширину NVMe.
Поддержка Large IO (включена по умолчанию) - что это?
Возможна предупреждающая замена "подозрительных" дисков (replace) с копированием данных (вручную или по SMART).
Отдельно (?) возможно автоматическое копирование данных с SSD с плохими данными SMART на запасное устройство (SSD Guard).
Интервал опроса SMART настраивается (300 секунд).
Патрульное чтение дисков, в т.ч. неиспользуемых (без нагрузки на массив, все диски одновременно - 2 часа;
при полной нагрузке время патрульного чтения стремится в бесконечность, влияние на нагрузку минимальное - 20%).
Запуск регулярный или вручную. Можно задать долю используемых ресурсов для патрульного чтения.
Поддержка нескольких путей доступа к устройствам (multipath) в пределах контроллера, в т.ч. и к SATA,
Обещана балансировка загрузки путей для SAS устройств (2 пути вижу, а скорость не прибавилась),
автоматическое распознавание экспандеров (ESM, enclosure modules) в одной корзине, обнаружение путей, использование запасных путей,
замена одного из ESM без остановки работы.
Утилита storcli (и MSM, и LSA) показывает только 1 ESM из пары, но демонстрирует наличие запасных путей.
В режиме JBOD каждый путь к устройству (только SAS) представляется как устройство, сервер должен обрабатывать multipath (MPIO)
и балансировать нагрузку самостоятельно.
Возможна экономия электричества за счёт автоматической остановки
несконфигурированных дисков, дисков горячей замены и неиспользуемых логических дисков (Dimmer Switch),
настраивается интервал ожидания. Не советую.
Округление размера дисков вниз (coercion) - требуется для последующей беспроблемной замены диска.
Отключение восстановления данных при проверке; задержка раскрутки; отключение автовосстановления.
Настройки хранятся на диске (COD - Configuration on Disk) в формате DDF и в контроллере на NVRAM/EEPROM
(при настройке контроллера можно задать поведение при их несовпадении).
Возможна перестановка местами дисков (drive roaming), подключённых к одному контроллеру (требуется отключать питание,
перестроение массива начнётся с начала).
Возможна перестановка группы дисков на другой контроллер - drive migration (требуется сохранять порядок дисков (?!),
необходимо предварительно очистить конфигурацию нового контролера).
Импортирование не работает при заполненном кеше контроллера, экспортирования или деактивания группы дисков нет, поэтому требуется выключить
сервер перед выемкой дисков (перед этим деактивировать LV и экспортировать VG!)).
При очистке конфигурации (предлагалось во время импортирования конфигурации с неосвобождённым кешем) и
последующем созданием точно такой же данные сохранились.
Если в кеше записи старого контроллера остались данные, а батарейный модуль не перемещаемый типа TBBU/CVFM, то они будут потеряны.
Возможен импорт группы дисков с контроллеров типа IR (Integrated RAID), если использовался формат метаданных
LDF (LSI Data Format) размером 512 MB (группа дисков с метаданными LDF 64MB будет испорчена).
Обнаружив на вставленном диске остатки чужой DDF контроллер предлагает посмотреть и импортировать чужие (Foreign) настройки или стереть их.
С импортом могут быть проблемы: чужой логический диск был в состоянии активности, был сбойным или имел отсутствующие устройства хранения.
Можно включить автоматический импорт чужих конфигураций (не рекомендуется).
Имеется управление аварийной сиреной (сообщает об отсутствии в конкретной модели): отключить разово, отключить навсегда.
Можно управлять поведением при обнаружении проблем во время загрузки: остановить загрузку, приостановить загрузку,
игнорировать проблему, перевести контроллер в ограниченный режим работы.
В 92xx не поддерживается команда TRIM
(LSI 3ware and MegaRAID controllers do not support TRIM, LSI SAS HBAs with IR firmware do not support TRIM)
("Sense Key : Illegal Request [current]; Add. Sense: Invalid field in parameter list") и scterc (SCT (Get) Error Recovery Control, TLER).
Дополнительно можно закупить возможность ускорения работы с SSD
FastPath (программная лицензия LSI00266 или аппаратный ключ LSI00289).
FastPath доступен бесплатно с какого-то момента:
для виртуального диска включить набор Write Thru, Direct IO, No Read Ahead, Disk Cache Policy Disabled, Strip Size 64K.
За отдельную плату доступно ПО кеширования доступа к массивам на SSD CacheCade Pro 2.0 / 3.0
(программная лицензия LSI00293 или аппаратный ключ LSI00290).
Максимальный поддерживаемый объём SSD - 512 ГБ (2 ТБ) на контроллер.
Для использования в комплекте с CacheCade Pro 2.0 предлагался LSI Nytro WarpDrive (SLC: 200 или 400 ГБ,
MLC: 400, 800 или 1600 ГБ) или LSI Nytro MegaRAID (одна плата, совмещающая LSI 9266-4i с Nytro WarpDrive;
SLC: 100 ГБ, eMLC: 200 или 800 ГБ) или LSI Nytro XD (MLC 400 ГБ в комплекте с ПО).
Имеется утилита LSI Nytro Predictor для оценки выигрыша в производительности.
Отдельно от ПО Cache Cade продавался SSD WarpDrive (SLC 300GB).
Ключ активации можно перемещать между контроллерами (re-host).
SafeStore Disk Encyption - локальное управление ключами шифрования виртуальных дисков,
необходимо использовать устройства с самошифрованием (SED),
при загрузке может запрашиваться пароль хранилища ключей (Authenticated Mode).
Утрата ключей обеспечивает очень быстрый способ стирания данных, так что необходимо озаботиться резервным хранением ключей.
Не всегда дружелюбен. Например,
/opt/MegaRAID/storcli/storcli64 /c0 set directpdmapping=on
Status = Success
Directpdmapping ON (Requires reboot for effect)
после загрузки контроллер пропал
в UEFI появилось сообщение, что настройки MegaRAID несовместимы со свойствами корзин,
BOOT_MSG_ENCL_VIOLATION_MODE (MR_EVT_CTRL_CRASH)
поэтому контроллер остановлен и настройки его недоступны
Интерфейс настройки и управления:
- StorCLI (storcli64) (для совсем новых устройств разрабатывается Avenger StorCLI2)
- MegaCLI (MegaCli64) (устарело)
- HII (UEFI OpROM)
- настройка во время загрузки в BIOS Setup в графическом режиме - WebBIOS Configuration Utility;
^H в нужный момент при загрузке; для работы USB мышки требуется включить эмуляцию порта 60/64;
отключение OpROM в BIOS (требуется при загрузке не с массива) значительно ускоряет загрузку;
возможность остановки при ошибке в конфигурации;
выбор конфигурации при расхождении между настройками контроллера и конфигурацией на диске
- текстовая (псевдографика) утилита конфигурации для BIOS Setup (^R в нужный момент при загрузке)
- MegaRAID Management Suite
- MegaRAID Storage Manager (MSM, установить или обновить
пакеты Lib_Utils (libsysfs) и Lib_Utils2 (Pegasus), множество 32-битных библиотек, затем пакет MegaRAID_Storage_Manager;
после этого у вас появляются сервисы login и logoff (хорошо хоть не reboot, как у Intel ;),
дополнения к /etc/X11/xinit/xinitrc.d, ещё одно старое JRE,
скрипт msm_profile в /etc/init.d вместо /etc/sysconfig и прочие радости;
перед запуском необходимо выключить SELinux, сетевой экран и настроить маршруты multicast;
сервис vivaldiframework, сервис ls_mrdsnmpd (SNMP интерфейс);
в общем, не стоит "разворачивать" это без надобности)
- интерфейс к SNMP
- интерфейс SMIS
- LSA - LSI Storage Authority Software для 96xx, требуется RHEL8, обеспечивает веб-интерфейс, использует OpenSLP (Service Location Protocol)
- LWM - Light Weight Monitor, требуется RHEL8
Прошивки для 9266-8i (mr2208fw.rom):
- Отличия 3.190.15-1686 относительно 3.160.15-1559: поддержка CacheCade Pro 2.0 и CacheVault;
описание исправленных ошибок мотивирует немедленно обновиться
- Отличия 3.220.35-1998 относительно 3.190.15-1686: поддержка FUA;
описание исправленных ошибок мотивирует немедленно обновиться.
- Отличия 3.230.05.2100 относительно 3.220.35-1998: поддержка DDF2.0;
описание исправленных ошибок мотивирует немедленно обновиться (особенно для дисков с 2 портами или с секторами 4KB).
- Отличия 3.270.65-2578 (пакет 23.16.0.0018 - MR 5.7 P1) относительно 3.230.05.2100: поддержка секторов 4k в WebBIOS, исправления при работе с SSD,
обработка двойных ошибок и ошибок ECC, ускорение последовательного чтения при включённом Read Ahead,
отключение NCQ, обработка ошибок SuperCap, Fastpath стал бесплатным, возможность выключить питание отдельного диска.
- Отличия 3.290.15-2935 (пакет 23.18.0.0014 - MR 5.8 Point Release) относительно 3.270.65-2578: полная поддержка устройств с секторами 4k,
описание исправленных ошибок мотивирует немедленно обновиться (обработка сбоев).
- Отличия 3.340.55-3173 (пакет 23.22.0-0020 - MR 5.9 Point Release) относительно 3.290.15-2935: поддержка 128 дисков в одном ящике, SCSI VERIFY,
команда идентификации диска (locate) не давала собрать виртуальный диск, была несовместимость MR и iMR (набортный вариант) в одной системе,
показывает состояние NCQ
- Отличия 3.400.45-3507 (пакет 23.28.0-0015 - MR 5.10 Patch Release) относительно 3.340.55-3173:
описание исправленных ошибок мотивирует немедленно обновиться (обработка сбоев), потеря данных CacheCade после перезагрузки,
проблемы с моделями с 2GB памяти, проблемы с 4k дисками.
- Отличия 3.410.35-3698 (пакет 23.29.0-0016 - MR 5.11 Patch Release) относительно 3.400.45-3507: логические диски с секторами 512e,
отключение кеширования записи при нагреве суперконденсатора, поэтапное включение дисков при выходе из спячки,
240 логических дисков, VT-d/IOMMU ддля iMR, кеш диска по умолчанию теперь выключен, Mirror Join (?),
деградированный RAID можно превратить в RAID0.
- Отличия 3.440.05-3712 (пакет 23.32.0-0009 - MR 5.12) относительно 3.410.35-3698: обновление прошивки CacheVault (Gas Gauge, преждевременный сбой),
Head of Queue (?),
описание исправленных ошибок мотивирует немедленно обновиться (обработка сбоев),
фоновая инициализация замедлилась вдвое
- Отличия 3.450.55-4187 (пакет 23.33.0-0018 - MR 5.13) относительно 3.440.05-3712: исправили скорость инициализации,
борьба за 240 логических дисков в самом разгаре, изменился алгоритм раздачи идентификаторов дисков (?),
удаление адаптивного предупреждающего чтения завершено
- Отличия 3.450.75-4319 (пакет 23.33.0-0023 - MR 5.13 P1) относительно 3.450.55-4187: исправление ошибок
- Отличия 3.460.05.4565 (пакет 23.34.0.0005 - MR 5.14) относительно 3.450.75-4319: исправление существенных ошибок;
Avago вместо LSI; значительные доработки UEFI и HII; улучшения в утилите настройки при загрузке (см. storcli 1.14)
- Отличия 3.460.95-6434 (пакет 23.34.0-0017 - MR 5.14 PR) относительно 3.460.05-4565: исправление существенных ошибок
- Отличия 3.460.95-6465 (пакет 23.34.0-0019 - MR 5.14 PR) относительно 3.460.95-6434: исправление ошибок; почти 2 года нет обновлений, видимо всё;
в комплекте TFM_70-25849-04.rom (требуется MR 5.12 и storcli 1.14.12
- 3.460.115-6465 (3.460.95-6465?!)
Прошивки для 9361-8i
(Invader, mr3108fw.rom; при обновлении с MegaRAID 6.6 к 6.7 в VPD поменяли LSI на Broadcom, так что вернуться обратно будет непросто):
- 4.200.20-2839 (пакет 24.0.2-0013 - MR 6.0.1) начальный (чем он отличается от MR 5.14 непонятно)
- Отличия 4.210.50-3015 (пакет 24.1.1-0006 - MR 6.1) относительно 4.200.20-2839: исправление существенных ошибок;
возможность отключить питание на отдельном диске
- Отличия 4.220.40-3267 (пакет 24.2.1-0021 - MR 6.2) относительно 4.210.50-3015: исправление существенных ошибок;
подписанные прошивки
- Отличия 4.230.20-3532 (пакет 24.3.0-0050 - MR 6.3) относительно 4.220.40-3267: исправление существенных ошибок;
разбиение зеркала; изменение поведения SES индикаторов; ускорение записи в режиме обхода кеша;
убрано 4 секундное окно нераспознавания обмена дисков (?!); включение бита WCE (Write Cache Enable) на устройствах
- Отличия 4.250.00-3569 (пакет 24.5.0-0015 - MR 6.4) относительно 4.230.20-3532: исправление существенных ошибок;
поддержка SAS и SATA дисков в полках с 2 путями; в VPD включена версия PCB; вывод статуса NCQ
- Отличия 4.250.00-3830 (пакет 24.5.0-0030 - MR 6.4 P) относительно 4.250.00-3569: запись 128 КБ в обход кеша
- Отличия 4.260.00-3735 (пакет 24.6.0-0023 - MR 6.5) относительно 4.250.00-3569: исправление существенных ошибок;
ускорено перестроение массивов; возможность перевести логический том в отключённое состояние (offline);
возобновление CC после перезагрузки откладывается на 5 минут;
решены множество проблем при обновлении прошивки управления суперконденсатором
- Отличия 4.270.00-3972 (пакет 24.7.0-0026 - MR 6.6) относительно 4.260.00-3735: исправление существенных ошибок;
битва за 240 логических томов продолжается (RAID5/6); безопасное стирание на SATA SSD; загрузка с устройств 4k;
MPI 2.6; формат NVRAM изменён с LEGACY на EXT и расширенный DDF на устройства (для 240 устройств; ни шагу назад!);
вывод количества ошибок phy для SATA
- Отличия 4.270.01-4183 (пакет 24.7.0-0042 - MR 6.6 P1):
особая процедура обновления и отката прошивки (отключение всех устройств, обновление, подключение, импорт);
- Отличия 4.280.00-4226 (пакет 24.8.0-0020 - MR 6.7) относительно 4.270.00-4183 (24.7.0-0042 - MR 6.6 P1):
особая процедура обновления и отката прошивки (с обновлением прошивки CacheVault);
MCTP (Management Component Transport Protocol, управление по PCIe - подготовка к отказу от SAS? установка ОС с помощью BMC?);
размер CacheCade увеличен до 2 TiB; был LSI, а стал Avago
- Отличия 4.290.00-4536 (пакет 24.9.0-0022 - MR 6.8) относительно 4.280.00-4226: исправление ошибок;
отключение возможностей CacheCade Pro 2.0
- Отличия 4.600.00-4747 (пакет 24.10.0-0017 - MR 6.9) относительно 4.290.00-4536: исправление существенных ошибок;
Cache-split (?); поддержка 2 ядер SAS (Intruder FPGA)
- Отличия 4.600.00-4907 (пакет 24.10.0-0020 - MR 6.9 P1) относительно 4.600.00-4747: исправление ошибок;
индикация дисков в режиме JBOD
- Отличия 4.620.00-5026 (пакет 24.12.0-0020 - MR 6.10) относительно 4.600.00-4907: исправление ошибок;
storcli показывает имя устройства в Linux (/dev/sdX); настройка RAID00 в Setup
- Отличия 4.650.00-6121 (пакет 24.15.0-0016 - MR 6.11) относительно 4.620.00-5026: исправление ошибок;
поддержка 128 устройств хранения в ящике; поддержка Sparc Solaris
- Отличия 4.650.00.6422 (пакет 24.15.0-0026 - MR 6.11 P1) относительно 4.650.00-6121: исправление ошибок;
доступ к каждому экспандеру (SEP изображает ящик)
- Отличия 4.650.00.8095 (пакет 24.15.0-0032 - MR 6.11 P2) относительно 4.650.00.6422: исправление ошибок
- Отличия 4.660.00-8102 (пакет 24.16.0-0082 - MR 6.12) относительно 4.650.00.8095: исправление ошибок;
"true Multipath"(?!); режим HBA переименован в JBOD; SAS-4; PCIe 4.0; параллельное обновление прошивки устройств хранения;
UEFI ARM64
- Отличия 4.670.00-6500 (пакет 24.18.0-0021 - MR 6.13) относительно 4.660.00-8102: исправление ошибок
- Отличия 4.680.00-8249 (пакет 24.21.0-0012 - MR 6.14) относительно 4.670.00-6500: исправление ошибок
- Отличия 4.680.00-8292 (пакет 24.21.0-0025 - MR 6.14 PR) относительно 4.680.00-8249: исправление ошибок
- Отличия 4.680.00-8392 (пакет 24.21.0-0067 - MR 6.14 PR) относительно 4.680.00-8292: исправление ошибок
- Отличия 4.680.00-8443 (пакет 24.21.0-0088 - MR 6.14 PR) относительно 4.680.00-8392: исправление ошибок (замена SATA диска не сбрасывает ошибки,
плохой PD0 мешает работать); поддержка Secure Boot
- Отличия 4.680.01-8446 (пакет 24.21.0-0091 - MR 6.14 PR) относительно 4.680.01-8442 (?): исправление ошибок (невозможно смонтировать XFS)
- Отличия 4.680.00-8454 (пакет 24.21.0-0095 - MR 6.14 PR) относительно 4.680.00-8446: исправление ошибок (проблемы с оптимизацией XFS;
блокирование SATA SSD навсегда)
- Отличия 4.680.00-8505 (пакет 24.21.0-0119 - MR 6.14 PR) относительно 4.680.00-8454: исправление ошибок;
пропускать команды pass-through к плохим, сбойным и отключённым устройствам
- Отличия 4.680.01-8519 (пакет 24.21.0-01 (?) - MR 6.14 PR) относительно 4.680.01-8504 (?): исправление ошибок
- Отличия 4.680.00-8527 (пакет 24.21.0-0132 - MR 6.14 PR) относительно 4.680.01-8519: исправление ошибок
- Отличия 4.680.00-8537 (пакет 24.21.0-0139 - MR 6.14 PR) относительно 4.680.00-8527: исправление ошибок
- Отличия 4.680.00-8551 (пакет 24.21.0-0146 - MR 6.14 PR) относительно 4.680.00-8537: исправление ошибок
- Отличия 4.680.00-8555 (пакет 24.21.0-0148 - MR 6.14 PR) относительно 4.680.00-8537 (?): исправление ошибок
- Отличия 4.680.00-8577 (пакет 24.21.0-0159 - MR 6.14 PR) относительно 4.680.00-8555: исправление ошибок
Прошивки для 9361-16i (mr3316fw.rom, MR_FW_3324_4MB.rom):
- 4.710.00-8108 (пакет 24.17.0-0084 - MR 6.12) подаётся как начальный выпуск mr3324fw.rom (Intruder)
- Отличия 4.720.00-8218 (пакет 24.19.0-0047 - MR 6.13) относительно 4.710.00-8108: требуется CPLD Version = 04468-031;
исправление ошибок
- Отличия 4.740.00-8247 (пакет 24.22.0-0013 - MR 6.14) относительно 4.720.00-8218: исправление ошибок
- Отличия 4.740.00-8288 (пакет 24.22.0-0023 - MR 6.14 PR) относительно 4.740.00-8247: исправление ошибок; Cachecade3.0;
CPLD д.б. новее 04468-021
- Отличия 4.740.00-8394 (пакет 24.22.0-0023 (?!) - MR 6.14 PR) относительно 4.740.00-8247 (?!): исправление существенных ошибок (SSD)
- Отличия 4.740.00-8394 (?!) (пакет 24.22.0-0034 - MR 6.14 PR) относительно 4.740.00-8288: исправление ошибок
- Отличия 4.740.00-8433 (пакет 24.22.0-0045 - MR 6.14 PR) относительно 4.740.00-8394 (пакет 24.22.0-0034): исправление существенных ошибок (CC);
поддержка Secure Boot
- Отличия 4.740.00-8435 (пакет 24.22.0-0048 - MR 6.14 PR) относительно 4.740.00-8433: исправление существенных ошибок (XFS, SATA)
- Отличия 4.740.00-8447 (пакет 24.22.0-0061 - MR 6.14 PR) относительно 4.740.00-8435: исправление ошибок
- Отличия 4.740.00-8449 (пакет 24.22.0-0065 - MR 6.14 PR) относительно 4.740.00-8447: исправление ошибок
- Отличия 4.740.00-8452 (пакет 24.22.0-0071 - MR 6.14 PR) относительно 4.740.00-8449: слияние; Sanitize
- Отличия 4.740.00-8457 (пакет 24.22.0-0079 - MR 6.14 PR) относительно 4.740.00-8452: исправление ошибок
- Отличия 4.740.00-8464 (пакет 24.22.0-0091 - MR 6.14 PR) относительно 4.740.00-8457: исправление ошибок; слияние
- Нет описания 4.740.00-8474 (пакет 24.22.0-0105
Прошивки для 9460-8i (9460-16i, 9365-28i) - 5.220.00-3691 (пакет 51.22.0-4545 - MR 7.22), путаница на сайте (пакет 51.23.0-4637).
Прошивки для Aero 9560-8i (9560-8i-4G_NOPAD.rom; обстарение от MR 7.20 и MR 7.22 не разрешается;
рекомендуется обновление PSoC Catalog Firmware (управление сбросом и питанием) - сначала поставьте пакет MR 7.20)
- была на момент покупки: 5.120.02-2904 (пакет 52.12.0-3026 (?) - MR 7.12)
- Отличия 5.120.00-2904 (пакет 51.12.0-3027 (не 3026?) - MR 7.12) относительно 5.110.00-2706: исправление ошибок
- Отличия 5.120.00-2995 (пакет 51.12.0-3097 - MR 7.12) относительно 5.120.00-2904 (и тоже 51.12.0-3027!): исправление существенных ошибок (CV, конфигурация)
- Отличия 5.130.02-3059 (пакет 52.13.0-3222 - MR 7.13) относительно 5.120.00-2995 (не 3097?!): исправление существенных ошибок; прощай BBU
- Отличия 5.140.00-3185 (пакет 52.14.0-3440 - MR 7.14) относительно 5.130.02-3059:
- Отличия 5.150.02-0359 (пакет 52.15.0-3629 - MR 7.15) относительно 5.140.00-3185:
- Отличия 5.160.02-3415 (пакет 52.16.0-3803 - MR 7.16) относительно 5.150.02-0359 (52.15.0-3629):
- Отличия 5.160.02-3481 (пакет 52.16.0-3952 - MR 7.16) относительно 5.160.02-3415:
- Отличия 5.170.02-3483 (пакет 52.17.0-3970 - MR 7.17) относительно 5.160.02-3481:
- Отличия 5.170.02-3513 (пакет 52.17.0-4031 - MR 7.17) относительно 5.170.02-3483:
- Отличия 5.180.02-3512 (пакет 52.18.0-4053 - MR 7.18) относительно 5.170.02-3513:
- Отличия 5.190.02-3553 (пакет 52.19.0-4169 - MR 7.19) относительно 5.180.02-3512:
- Отличия 5.190.02-3581 (пакет 52.19.0-4233 - MR 7.19) относительно 5.190.02-3553:
- Отличия 5.190.02-3610 (пакет 52.19.0-4294 - MR 7.19) относительно 5.190.02-3581:
- Отличия 5.200.00-3618 (пакет 51.20.0-4341 - MR 7.20) относительно 5.190.02-3610:
- Отличия 5.210.00-3663 (пакет 51.21.0-4428 - MR 7.21) относительно 5.200.00-3618:
- Отличия 5.220.00-3691 (пакет 51.22.0-4544 - MR 7.22) относительно 5.210.00-3663:
- Отличия 5.230.00-3723 (пакет 52.23.0-4636) относительно 5.220.00-3691:
- 5.230.00-3767:
- Отличия (пакет 52.24.0-4763 - MR 7.24):
- 5.250.00-3847 (пакет 52.25.0-4902 - MR 7.25):
- 5.260.00-3875 (пакет 52.26.0-5014 - MR 7.26):
- Отличия 5.270.00-3937 (пакет 52.27.0-5171 - MR 7.27) относительно 5.260.00-3875: исправления ошибок; обработка сигнала PERST NVMe; управление динамиком (а он есть?!)
- Отличия 5.280.00-3972 (пакет 52.28.0-5305 - MR 7.28) относительно 5.270.00-3937: исправления ошибок (номера слотов);
обработка сигнала PERST NVMe; управление динамиком (а он есть?!); новые профили и лицензии; MegaRAID 9561-16i
Прошивки для Avenger 9660-16i
Установка новой прошивки с помощью storcli на 9560-8i
/opt/MegaRAID/storcli/storcli64 /c0 download file=9560-8i-4G_NOPAD.rom ResetNow
/opt/MegaRAID/storcli/storcli64 /c0 download psoc file=pblp_catalog.signed.rom # "This command supports only IT"
Установка новой прошивки с помощью storcli на 9266-8i и 9361-16i
(старые прошивки не распознают ResetNow, поэтому после установки требуется перезагрузка с выключением питания ("storcli /c0 restart"?),
длительная инициализация при загрузке, прерывается фоновая инициализация - надо сразу запустить CC):
/opt/MegaRAID/storcli/storcli64 /c0 download file=mr2208fw.rom ResetNow # mr3316fw.rom
Установка новой прошивки CacheVault (Gas Gauge) до обновления прошивки контроллера с помощью storcli (TFM для 9266-8i,
модуль CVPM02 версии 25849-01 требует обновления до 70-25849-04; 25849-03 и -04 не требуют), предварительно обновить прошивку
минимум до MR 5.12 (пакет 23.32.0-0009, 3.450.55-4187) и storcli до 1.14.12:
/opt/MegaRAID/storcli/storcli64 /c0/cv show all # Module Version 25849-01
/opt/MegaRAID/storcli/storcli64 /c0 download file=TFM_70-25849-04.rom fwtype=2 resetnow
/opt/MegaRAID/storcli/storcli64 /c0/cv show all # Module Version 25849-04
Модуль megaraid_sas.ko, параметры:
- max_sectors - не получается задать более 280 KiB (/sys/block/sda/queue/max_sectors_kb)
- lb_pending_cmds (4) - от 1 до 128, балансировка RAID-1
- msix_disable (0)
- msix_vectors (задаётся прошивкой)
- allow_vf_ioctls (0) - ioctl в режиме SR-IOV VF
- throttlequeuedepth (16) - глубина очереди при замятне
- resetwaittime (180_ - секунд ожидания перед сбросом
- smp_affinity_enable (1)
- rdpq_enable (1)
- dual_qdepth_disable (0)
- scmd_timeout (90) - ожидание SCSI в секундах
- perf_mode (0) - режим производительности (только для 95xx): 0 - сбалансированный, 1 - увеличение IOPS, 2 - уменьшение задержек;
права - 444, значение - -1
- event_log_level (2) - от -2 (отладка) до 4 (все умерли)
Сообщения ядра (FUA отсутствует, несмотря на обновление прошивки) для 9266:
megasas: 06.504.01.00-rh1 Mon. Oct. 8 17:00:00 PDT 2012
megasas: 0x1000:0x005b:0x1000:0x9266: bus 2:slot 0:func 0
megaraid_sas 0000:02:00.0: PCI INT A -> GSI 32 (level, low) -> IRQ 32
megaraid_sas 0000:02:00.0: setting latency timer to 64
megasas: Waiting for FW to come to ready state
megasas: FW now in Ready state
alloc irq_desc for 89 on node 0
alloc kstat_irqs on node 0
alloc irq_2_iommu on node 0
megaraid_sas 0000:02:00.0: irq 89 for MSI/MSI-X
... 90,91,92,93,94,95,96,97,98,99,100,101,102,103,104 - 16 прерываний
megasas:IOC Init cmd success
megasas: INIT adapter done
scsi0 : LSI SAS based MegaRAID driver
scsi 0:0:0:0: Direct-Access LSI MR9266-8i 3.27 PQ: 0 ANSI: 5
scsi 0:0:12:0: Enclosure LSI CORP SAS2X36 0717 PQ: 0 ANSI: 5
scsi 0:0:15:0: Enclosure LSI CORP SAS2X36 0717 PQ: 0 ANSI: 5
scsi 0:2:0:0: Direct-Access LSI MR9266-8i 3.27 PQ: 0 ANSI: 5
sd 0:2:0:0: [sda] 38655885312 512-byte logical blocks: (19.7 TB/18.0 TiB)
sd 0:2:0:0: [sda] Write Protect is off
sd 0:2:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: unknown partition table
sd 0:2:0:0: [sda] Attached SCSI disk
sd 1:2:0:0: [sda] 4096-byte physical blocks
/proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 12 Lun: 00
Vendor: LSI CORP Model: SAS2X36 Rev: 0717
Type: Enclosure ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 15 Lun: 00
Vendor: LSI CORP Model: SAS2X36 Rev: 0717
Type: Enclosure ANSI SCSI revision: 05
Host: scsi0 Channel: 02 Id: 00 Lun: 00
Vendor: LSI Model: MR9266-8i Rev: 3.16
Type: Direct-Access ANSI SCSI revision: 05
Сообщения ядра для 9560
megasas: 07.714.04.00-rh1
megaraid_sas 0000:31:00.0: BAR:0x0 BAR's base_addr(phys):0x000020bfffe00000 mapped virt_addr:0xffffb5c5713fc000
megaraid_sas 0000:31:00.0: FW now in Ready state
megaraid_sas 0000:31:00.0: 63 bit DMA mask and 63 bit consistent mask
megaraid_sas 0000:31:00.0: firmware supports msix : (128)
megaraid_sas 0000:31:00.0: irq 142 for MSI/MSI-X
...
megaraid_sas 0000:31:00.0: irq 185 for MSI/MSI-X
megaraid_sas 0000:31:00.0: requested/available msix 44/44
megaraid_sas 0000:31:00.0: current msix/online cpus : (44/36)
megaraid_sas 0000:31:00.0: RDPQ mode : (enabled)
megaraid_sas 0000:31:00.0: Current firmware supports maximum commands: 5101 LDIO threshold: 0
megaraid_sas 0000:31:00.0: Configured max firmware commands: 5100
megaraid_sas 0000:31:00.0: Performance mode :Balanced
megaraid_sas 0000:31:00.0: FW supports sync cache : Yes
megaraid_sas 0000:31:00.0: megasas_disable_intr_fusion is called outbound_intr_mask:0x40000009
megaraid_sas 0000:31:00.0: FW supports atomic descriptor : Yes
megaraid_sas 0000:31:00.0: FW provided supportMaxExtLDs: 1 max_lds: 240
megaraid_sas 0000:31:00.0: controller type : MR(4096MB)
megaraid_sas 0000:31:00.0: Online Controller Reset(OCR) : Enabled
megaraid_sas 0000:31:00.0: Secure JBOD support : Yes
megaraid_sas 0000:31:00.0: NVMe passthru support : Yes
megaraid_sas 0000:31:00.0: FW provided TM TaskAbort/Reset timeout : 6 secs/60 secs
megaraid_sas 0000:31:00.0: JBOD sequence map support : Yes
megaraid_sas 0000:31:00.0: PCI Lane Margining support : Yes
megaraid_sas 0000:31:00.0: NVME page size : (4096)
megaraid_sas 0000:31:00.0: megasas_enable_intr_fusion is called outbound_intr_mask:0x40000000
megaraid_sas 0000:31:00.0: INIT adapter done
megaraid_sas 0000:31:00.0: Snap dump wait time : 15
megaraid_sas 0000:31:00.0: pci id : (0x1000)/(0x10e2)/(0x1000)/(0x4010)
megaraid_sas 0000:31:00.0: unevenspan support : no
megaraid_sas 0000:31:00.0: firmware crash dump : no
megaraid_sas 0000:31:00.0: JBOD sequence map : enabled
scsi host0: Avago SAS based MegaRAID driver
scsi 0:1:122:0: Enclosure SMC SC846N8 1003 PQ: 0 ANSI: 5
scsi 0:1:123:0: Enclosure SMC SC826N4 100d PQ: 0 ANSI: 5
scsi 0:3:110:0: Direct-Access BROADCOM MR9560-8i 5.12 PQ: 0 ANSI: 5
scsi 0:3:111:0: Direct-Access BROADCOM MR9560-8i 5.12 PQ: 0 ANSI: 5
sd 0:3:110:0: [sda] 468760657920 512-byte logical blocks: (240 TB/218 TiB)
sd 0:3:110:0: [sda] 4096-byte physical blocks
sd 0:3:110:0: [sda] Write Protect is off
sd 0:3:110:0: [sda] Mode Sense: 1f 00 00 08
sd 0:3:110:0: [sda] Write cache: disabled, read cache: disabled, doesn't support DPO or FUA
sd 0:3:110:0: [sda] Optimal transfer size 983040 bytes
sd 0:3:110:0: [sda] Attached SCSI disk
scsi 0:1:122:0: Attached scsi generic sg0 type 13
scsi 0:1:123:0: Attached scsi generic sg1 type 13
sd 0:3:110:0: Attached scsi generic sg2 type 0
sd 0:3:111:0: Attached scsi generic sg3 type 0
ses 0:1:122:0: Attached Enclosure device
ses 0:1:123:0: Attached Enclosure device
/proc/scsi/scsi
Host: scsi0 Channel: 01 Id: 122 Lun: 00
Vendor: SMC Model: SC846N8 Rev: 1003
Type: Enclosure ANSI SCSI revision: 05
Host: scsi0 Channel: 01 Id: 123 Lun: 00
Vendor: SMC Model: SC826N4 Rev: 100d
Type: Enclosure ANSI SCSI revision: 05
Host: scsi0 Channel: 03 Id: 110 Lun: 00
Vendor: BROADCOM Model: MR9560-8i Rev: 5.12
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 03 Id: 111 Lun: 00
Vendor: BROADCOM Model: MR9560-8i Rev: 5.12
Type: Direct-Access ANSI SCSI revision: 05
Совместим с SES, включая загрузку прошивки. Информация о составе (9266-8i):
sg_ses --page=1 /dev/sg0
LSI CORP SAS2X36 0717
enclosure services device
Configuration diagnostic page:
number of secondary subenclosures: 0
generation code: 0x0
enclosure descriptor list
Subenclosure identifier: 0
relative ES process id: 1, number of ES processes: 1
number of type descriptor headers: 11
logical identifier (hex): 50030480015a967f
vendor: LSI CORP product: SAS2X36 rev: 0717
vendor-specific data:
00 11 22 33 44 55 00 00 00 ."3DU...
type descriptor header/text list
Element type: Array device, subenclosure id: 0
number of possible elements: 24
text: Drive Slots
Element type: Temperature sense, subenclosure id: 0
number of possible elements: 1
text: Temperature Sensors
Element type: Cooling, subenclosure id: 0
number of possible elements: 3
text: Fans
Element type: Audible alarm, subenclosure id: 0
number of possible elements: 1
text: Buzzers
Element type: Voltage sensor, subenclosure id: 0
number of possible elements: 2
text: Voltage Sensors
Element type: Current sensor, subenclosure id: 0
number of possible elements: 2
text: Current Sensors
Element type: Power supply, subenclosure id: 0
number of possible elements: 2
text: Power Supplies
Element type: Enclosure, subenclosure id: 0
number of possible elements: 1
text: Enclosure
Element type: SAS expander, subenclosure id: 0
number of possible elements: 2
text: SAS Expanders
Element type: SAS connector, subenclosure id: 0
number of possible elements: 30
text: SAS Connectors
Element type: Communication port, subenclosure id: 0
number of possible elements: 2
text: Ethernet ports
Совместим с SES, включая загрузку прошивки. Информация о составе (9266-8i):
sg_ses --page=1 /dev/sg0
SMC SC846N8 1003
Configuration diagnostic page:
number of secondary subenclosures: 0
generation code: 0x0
enclosure descriptor list
Subenclosure identifier: 0 (primary)
relative ES process id: 1, number of ES processes: 1
number of type descriptor headers: 6
enclosure logical identifier (hex): 50030480215340bf
enclosure vendor: SMC product: SC846N8 rev: 1003
vendor-specific data:
11 22 33 44 55 00 00 00
type descriptor header/text list
Element type: Array device slot, subenclosure id: 0
number of possible elements: 24
text: ArrayDevicesInSubEnclsr0
Element type: SAS expander, subenclosure id: 0
number of possible elements: 1
text: SAS Expander
Element type: SAS connector, subenclosure id: 0
number of possible elements: 28
text: SAS Connectors
Element type: Enclosure, subenclosure id: 0
number of possible elements: 1
text: EnclosureElementInSubEnclsr0
Element type: Temperature sensor, subenclosure id: 0
number of possible elements: 2
text: TempSensorsInSubEnclsr0
Element type: Voltage sensor, subenclosure id: 0
number of possible elements: 2
text: VoltageSensorsInSubEnclsr0
SMC SC826N4 100d
Configuration diagnostic page:
number of secondary subenclosures: 0
generation code: 0x0
enclosure descriptor list
Subenclosure identifier: 0 (primary)
relative ES process id: 1, number of ES processes: 1
number of type descriptor headers: 6
enclosure logical identifier (hex): 500304802157223f
enclosure vendor: SMC product: SC826N4 rev: 100d
vendor-specific data:
00 00 00 00 00 00 00 00
type descriptor header/text list
Element type: Array device slot, subenclosure id: 0
number of possible elements: 12
text: Array Devices
Element type: SAS connector, subenclosure id: 0
number of possible elements: 16
text: SAS Connectors
Element type: Enclosure, subenclosure id: 0
number of possible elements: 1
text: Enclosure Devices
Element type: SAS expander, subenclosure id: 0
number of possible elements: 1
text: SAS Expander
Element type: Temperature sensor, subenclosure id: 0
number of possible elements: 2
text: Temperature Sensors
Element type: Voltage sensor, subenclosure id: 0
number of possible elements: 2
text: Voltage Sensors
Состояние (9266-8i):
sg_ses --page=2 /dev/sg0
LSI CORP SAS2X36 0717
enclosure services device
Enclosure status diagnostic page:
INVOP=0, INFO=1, NON-CRIT=0, CRIT=0, UNRECOV=0
generation code: 0x0
status descriptor list
Element type: Array device, subenclosure id: 0
Overall status:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
...
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
OK=0, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Don't remove=0, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
... все 24 диска ...
Element type: Temperature sense, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature=29 C
Element type: Cooling, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: Unknown
Ident=0, Hot swap=0, Fail=0, Requested on=0, Off=0
Actual speed=0 rpm, Fan stopped
... и якобы все выключены ...
Element type: Audible alarm, subenclosure id: 0
Element type: Voltage sensor, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 4.93 volts
Individual element 2 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 11.83 volts
Element type: Current sensor, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Crit Over=0
Current: 22.54 amps
Individual element 2 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Crit Over=0
Current: 1.45 amps
Element type: Power supply, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: Not installed
Ident=0, DC overvoltage=0, DC undervoltage=0, DC overcurrent=0
Hot swap=0, Fail=0, Requested on=0, Off=0, Overtmp fail=0
Temperature warn=0, AC fail=0, DC fail=0
...
Element type: Enclosure, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Time until power cycle=0, Failure indication=0
Warning indication=0, Requested power off duration=0
Failure requested=0, Warning requested=0
Element type: SAS expander, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0
...
Element type: SAS connector, subenclosure id: 0
Individual element 1 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS 4i receptacle (SFF-8087) [max 4 phys], Connector physical link=0xff
Fail=0
... 6 штук
Individual element 7 status:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, SAS Drive backplane receptacle (SFF-8482) [max 2 phys], Connector physical link=0x0
Fail=0
... 24 штуки
Состояние (9560-8i):
sg_ses --page=2 /dev/sg0
SMC SC846N8 1003
Primary enclosure logical identifier (hex): 50030480215340bf
Enclosure Status diagnostic page:
INVOP=0, INFO=0, NON-CRIT=0, CRIT=0, UNRECOV=0
generation code: 0x0
status descriptor list
Element type: Array device slot, subenclosure id: 0 [ti=0]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
OK=0, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=0, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
OK=1, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=1, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
...
Element 23 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
OK=1, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=1, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
Element type: SAS expander, subenclosure id: 0 [ti=1]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0
Element type: SAS connector, subenclosure id: 0 [ti=2]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, No information
Connector physical link=0x0, Fail=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 2 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 3 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 4 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, SAS Drive backplane receptacle (SFF-8482) [max 2 phys]
Connector physical link=0x0, Fail=0
...
Element 27 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, SAS Drive backplane receptacle (SFF-8482) [max 2 phys]
Connector physical link=0x0, Fail=0
Element type: Enclosure, subenclosure id: 0 [ti=3]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Time until power cycle=0, Failure indication=0
Warning indication=0, Requested power off duration=0
Failure requested=0, Warning requested=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Time until power cycle=0, Failure indication=0
Warning indication=0, Requested power off duration=0
Failure requested=0, Warning requested=0
Element type: Temperature sensor, subenclosure id: 0 [ti=4]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature:
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature=25 C
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature=50 C
Element type: Voltage sensor, subenclosure id: 0 [ti=5]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 0.00 volts
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 5.07 volts
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 12.05 volts
sg_ses --page=2 /dev/sg1
SMC SC826N4 100d
Primary enclosure logical identifier (hex): 500304802157223f
Enclosure Status diagnostic page:
INVOP=0, INFO=0, NON-CRIT=0, CRIT=0, UNRECOV=0
generation code: 0x0
status descriptor list
Element type: Array device slot, subenclosure id: 0 [ti=0]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
OK=0, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=0, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
OK=1, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=1, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
...
Element 11 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
OK=1, Reserved device=0, Hot spare=0, Cons check=0
In crit array=0, In failed array=0, Rebuild/remap=0, R/R abort=0
App client bypass A=0, Do not remove=1, Enc bypass A=0, Enc bypass B=0
Ready to insert=0, RMV=0, Ident=0, Report=0
App client bypass B=0, Fault sensed=0, Fault reqstd=0, Device off=0
Bypassed A=0, Bypassed B=0, Dev bypassed A=0, Dev bypassed B=0
Element type: SAS connector, subenclosure id: 0 [ti=1]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, No information
Connector physical link=0x0, Fail=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 2 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 3 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Mini SAS HD 4i receptacle (SFF-8643) [max 4 phys]
Connector physical link=0x0, Fail=0
Element 4 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, SAS Drive backplane receptacle (SFF-8482) [max 2 phys]
Connector physical link=0x0, Fail=0
...
Element 15 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, SAS Drive backplane receptacle (SFF-8482) [max 2 phys]
Connector physical link=0x0, Fail=0
Element type: Enclosure, subenclosure id: 0 [ti=2]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Time until power cycle=0, Failure indication=0
Warning indication=0, Requested power off duration=0
Failure requested=0, Warning requested=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Time until power cycle=0, Failure indication=0
Warning indication=0, Requested power off duration=0
Failure requested=0, Warning requested=0
Element type: SAS expander, subenclosure id: 0 [ti=3]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0
Element type: Temperature sensor, subenclosure id: 0 [ti=4]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature:
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature=47 C
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, OT failure=0, OT warning=0, UT failure=0
UT warning=0
Temperature=21 C
Element type: Voltage sensor, subenclosure id: 0 [ti=5]
Overall descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: Unsupported
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 0.00 volts
Element 0 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 11.94 volts
Element 1 descriptor:
Predicted failure=0, Disabled=0, Swap=0, status: OK
Ident=0, Fail=0, Warn Over=0, Warn Under=0, Crit Over=0
Crit Under=0
Voltage: 5.06 volts
Дополнительная информация (слоты и адреса):
sg_ses --page=0xa /dev/sg0
Additional element status diagnostic page:
generation code: 0x0
additional element status descriptor list
Element type: Array device, subenclosure id: 0
element index: 0 [0x0]
Transport protocol: SAS
number of phys: 1, not all phys: 0, bay number: 0
phy index: 0
device type: end device
initiator port for:
target port for: SSP
attached SAS address: 0x500304800163d4ff
SAS address: 0x5000cca016212fe2
phy identifier: 0x1
...
smartctl умеет получать информацию об отдельных дисках с помощью ключа "-d megaraid,номер"
(диски нумеруются не с нуля! при замене диска номер изменяется!)
smartctl -a -d megaraid,8 /dev/sda
Vendor: WD
Product: WD9001BKHG-02D22
Revision: SR03
User Capacity: 900,185,481,216 bytes [900 GB]
Logical block size: 512 bytes
Logical Unit id: 0x50014ee7aaadd8f0
Serial number: WXL1E32HSEPM
Device type: disk
Transport protocol: SAS
Local Time is: Wed Sep 4 21:31:39 2013 MSK
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK
Current Drive Temperature: 26 C
Drive Trip Temperature: 69 C
Manufactured in week 01 of year 2010
Specified cycle count over device lifetime: 1048576
Accumulated start-stop cycles: 47
Specified load-unload count over device lifetime: 1114112
Accumulated load-unload cycles: 0
Elements in grown defect list: 0
Error counter log:
Errors Corrected by Total Correction Gigabytes Total
ECC rereads/ errors algorithm processed uncorrected
fast | delayed rewrites corrected invocations [10^9 bytes] errors
read: 122820 428 466 123248 428 106471.048 0
write: 620 4753 0 5373 4753 48017.563 0
verify: 62 2 2 64 2 19.126 0
Non-medium error count: 297
No self-tests have been logged
Long (extended) Self Test duration: 6362 seconds [106.0 minutes]
Часть информации доступна через /sys, например:
cat /sys/class/enclosure/0\:0\:8\:0/Slot\ 24/status # active, fault, power_status, slot
OK
cat /sys/class/enclosure/0\:1\:122\:0/Slot23/locate
0
Тестирование скорости записи (на примере параллельного восстановления
домашних каталогов, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead включены,
перед началом записи очищаются буфера - 3 в /proc/sys/vm/drop_caches,
создание файловой системы xfs с параметрами "-d su=64k,sw=22 -i attr=2,maxpct=5 -l su=64k,lazy-count=1",
монтирование с параметрами "-o nodiratime,attr2,logbufs=8,logbsize=65536";
команда восстановления -
"lzop -F -cd /другой-массив/$home.tar.lzo | dd bs=102400k |tar -C /first --warning=no-timestamp -xf -"
- 1 поток - 569 МБ/сек
- 2 потока - 671 МБ/сек
- 3 потока - 678 МБ/сек
- 4 потока - 703 МБ/сек
- 5 потоков - 660 МБ/сек
- 6 потоков - 649 МБ/сек
- 7 потоков - 646 МБ/сек
- 8 потоков - 653 МБ/сек
- 9 потоков - 654 МБ/сек
- 10 потоков - 654 МБ/сек
- 11 потоков - 647 МБ/сек
- 12 потоков - 644 МБ/сек
- 13 потоков - 636 МБ/сек
- 14 потоков - 631 МБ/сек
- 15 потоков - 635 МБ/сек
- 16 потоков - 626 МБ/сек
- 17 потоков - 629 МБ/сек
- 18 потоков - 625 МБ/сек
- 19 потоков - 627 МБ/сек
- более 100 потоков - 581 МБ/сек (фрагментация файлов - 0.52%)
Тестирование скорости чтения (на примере параллельного чтения
домашних каталогов после параллельной записи в 100 потоков, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead включены,
перед началом чтения файловая система размонтируется и очищаются буфера - 3 в /proc/sys/vm/drop_caches,
создание файловой системы xfs с параметрами "-d su=64k,sw=22 -i attr=2,maxpct=5 -l su=64k,lazy-count=1",
монтирование с параметрами "-o nodiratime,attr2,logbufs=8,logbsize=65536";
команда чтения отдельного домашнего каталога - "tar -C $1 -H posix -b2048 -cf - .";
результат направляется в "dd bs=10240k" и далее в /dev/null:
- 2 потока - 179 МБ/сек
- 3 потока - 227 МБ/сек
- 4 потока - 264 МБ/сек
- 5 потоков - 289 МБ/сек
- 6 потоков - 312 МБ/сек
- 7 потоков - 338 МБ/сек
- 8 потоков - 363 МБ/сек
- 9 потоков - 408 МБ/сек
- 10 потоков - 426 МБ/сек
- 11 потоков - 439 МБ/сек
- 12 потоков - 453 МБ/сек (без размонтирования и очистки буферов - те же самые 453 МБ/сек)
- 13 потоков - 454 МБ/сек
- 14 потоков - 460 МБ/сек
- много потоков - 343 МБ/сек (скорость возвращается, когда остаётся около 20 потоков - agcount? количество шпинделей?)
Выключаем для массива кеширование чтения и readahead (ReadAheadNone и Direct),
записываем 1408 в /sys/block/sda/bdi/read_ahead_kb записать:
- 12 потоков - 472 МБ/сек
- много потоков - 450 МБ/сек (провала скорости при большом количестве потоков не наблюдается)
Записываем deadline в /sys/block/sda/queue/scheduler вместо cfq,
монтирование с параметрами "-o nodiratime,attr2,logbufs=8,logbsize=65536,nobarrier":
- 12 потоков - 482 МБ/сек
- много потоков - 534 МБ/сек с почти линейным графиком
Записываем noop в /sys/block/sda/queue/scheduler,
монтирование с параметрами "-o nodiratime,attr2,logbufs=8,logbsize=65536,nobarrier":
- 2 потока - 286 МБ/сек
- 4 потока - 381 МБ/сек
Записываем noop в /sys/block/sda/queue/scheduler вместо cfq,
монтирование с параметрами "-o relatime,nodiratime,attr2,logbufs=8,logbsize=65536,nobarrier",
0 в /proc/sys/vm/vfs_cache_pressure вместо 100 (33779024 файлов - это в теории 34GB памяти, а на практике 52GB),
с предварительным прогревом (find /first -ls) и без размонтирования и очистки буферов:
- 4 потока - 392 МБ/сек
- 12 потоков - 521 МБ/сек
- много потоков - 554 МБ/сек с почти линейным графиком
Уменьшил фрагментацию до 0.27% (8 часов, 250 МБ/сек), в результате свободное место
фрагментировалось в пыль и дальнейшая дефрагментация невозможна.
Записываем noop в /sys/block/sda/queue/scheduler,
монтирование с параметрами "-o nodiratime,attr2,logbufs=8,logbsize=65536,nobarrier"
(без relatime и vfs_cache_pressure):
- 2 потока - 285 МБ/сек
- 4 потока - 386 МБ/сек
- 12 потоков - 521 МБ/сек
- много потоков - 554 МБ/сек
Тестирование скорости записи (на примере параллельного восстановления
домашних каталогов, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead выключены,
перед началом записи очищаются буфера - 3 в /proc/sys/vm/drop_caches,
планировщик noop,
создание файловой системы xfs с параметрами "-d su=64k,sw=22 -i attr=2,maxpct=5 -l su=64k,lazy-count=1",
монтирование с параметрами "nodiratime,attr2,logbufs=8,logbsize=262144,nobarrier,inode64,filestreams";
команда восстановления -
"lzop -F -cd /другой-массив/$home.tar.lzo | dd bs=102400k |tar -C /first --warning=no-timestamp -xf -"
- много потоков - 726 МБ/сек (фрагментация - 0.83%)
Чтение обратно (noop, "nodiratime,attr2,logbufs=8,logbsize=262144,nobarrier,inode64,filestreams"):
- 1 поток - 419 МБ/сек
- 2 потока - 458 МБ/сек
- 4 потока - 511 МБ/сек
- 12 потоков - 610 МБ/сек
- 20 потоков - 610 МБ/сек
- много потоков - 577 МБ/сек
Дефрагментация мелких файлов (до 14080KB) и чтение обратно (noop, "nodiratime,attr2,logbufs=8,logbsize=262144,nobarrier,inode64,filestreams"):
- 1 поток - 413 МБ/сек
- 2 потока - 451 МБ/сек
- 4 потока - 509 МБ/сек
- 12 потоков - 612 МБ/сек
- 20 потоков - 628 МБ/сек
- много потоков - 606 МБ/сек
Тестирование скорости записи (на примере параллельного восстановления
домашних каталогов, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead выключены,
перед началом записи очищаются буфера - 3 в /proc/sys/vm/drop_caches,
планировщик noop,
создание файловой системы ext4 (e2fsprogs-1.42) с параметрами "-E stride=16,stripe_width=352 -G 64 -J size=512",
монтирование с параметрами "nobarrier,nodiratime,journal_checksum,journal_async_commit,stripe=352,delalloc";
команда восстановления -
"lzop -F -cd /другой-массив/$home.tar.lzo | dd bs=102400k |tar -C /first --warning=no-timestamp -xf -"
- 1 поток - 625 МБ/сек
- 2 потока - 876 МБ/сек
- 4 потока - 1002 МБ/сек
- 12 потоков - 1108 МБ/сек
- 20 потоков - 1071 МБ/сек
- много потоков - 897 МБ/сек (скорость была вначале зажата на 550 МБ/сек и начала увеличиваться,
когда осталось менее 40 потоков; фрагментация - 3.5%)
Чтение обратно (noop, 0 в /proc/sys/vm/vfs_cache_pressure, без сброса кеша и перемонтирования,
"nobarrier,nodiratime,relatime,journal_checksum,journal_async_commit,delalloc",
с предварительным прогревом:
Чтение обратно после дефрагментации (довёл фрагментацию до 2.5%):
- 1 поток - 259 МБ/сек
- 2 потока - 303 МБ/сек
- 4 потока - 397 МБ/сек
- 12 потоков - 472 МБ/сек
- 20 потоков - 490 МБ/сек
Сообразил, что исходную файловую систему тоже можно дефрагментировать и
сделал это (по большей части командой mv - на порядок быстрее).
Тестирование скорости записи (на примере параллельного восстановления
домашних каталогов, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead выключены,
перед началом записи очищаются буфера - 3 в /proc/sys/vm/drop_caches,
планировщик noop для обеих файловых систем,
создание файловой системы ext4 (e2fsprogs-1.42.6) с параметрами "-E stride=16,stripe_width=352 -G 128 -J size=512",
монтирование с параметрами "nobarrier,nodiratime,journal_checksum,journal_async_commit,stripe=352,delalloc,commit=60,max_batch_time=30000,min_batch_time=1000";
команда восстановления -
"lzop -F -cd /другой-массив/$home.tar.lzo | dd bs=102400k |tar -C /first --warning=no-timestamp -xf -"
- 1 поток - 484 МБ/сек
- 2 потока - 961 МБ/сек
- 4 потока - 1234 МБ/сек (ограничивается скоростью чтения)
- 12 потоков - 1250 МБ/сек
- 20 потоков - 1185 МБ/сек
- много потоков - 948 МБ/сек (при более 40 потоков зажимается на 600 МБ/сек)
Настройка параметров: 256 в /sys/block/sdX/queue/nr_requests,
4096 в /sys/block/sdX/queue/read_ahead_kb, 50 в /proc/sys/vm/vfs_cache_pressure,
262144 в /proc/sys/vm/min_free_kbytes, 100000000 в /proc/sys/vm/dirty_background_bytes,
700000000 в /proc/sys/vm/dirty_bytes:
Чтение записанного в 1 поток, 100 в /proc/sys/vm/vfs_cache_pressure,
3 в /proc/sys/vm/drop_caches, монтирование с параметрами
"nobarrier,nodiratime,relatime,journal_checksum,journal_async_commit,delalloc,commit=60,max_batch_time=30000,min_batch_time=1000":
- 2 потока - 310 МБ/сек
- 4 потока - 351 МБ/сек
- 12 потоков - 467 МБ/сек
Чтение записанного в 1 поток, 50 в /proc/sys/vm/vfs_cache_pressure,
1000 в /sys/block/sda/queue/nr_requests (это слишком много - большие задержки),
4096 в /sys/block/sda/queue/read_ahead_kb,
262144 в /proc/sys/vm/min_free_kbytes:
- 20 потоков - 637 МБ/сек
- много потоков - 627 МБ/сек
Тестирование скорости записи (на примере параллельного восстановления
домашних каталогов, 18546GB, 33779024 файлов),
CentOS 6.3, прошивка 3.220.35.1998, полоска 64КБ,
RAID-6, 24 диска SATA 900GB 10000rpm, кеширование записи на дисках выключено,
writeback, кеширование чтения и readahead выключены,
перед началом записи очищаются буфера - 3 в /proc/sys/vm/drop_caches,
планировщик noop для обеих файловых систем,
создание файловой системы с параметрами "-d su=64k,sw=22 -i attr=2,maxpct=5 -l su=64k,lazy-count=1,size=256m",
монтирование с параметрами "nodiratime,relatime,attr2,nodelaylog,logbufs=8,logbsize=256k,nobarrier,inode64,filestreams,osyncisdsync",
256 в /sys/block/sdX/queue/nr_requests (4096 даёт средний await в 2 секунды),
4096 в /sys/block/sdX/queue/read_ahead_kb,
50 в /proc/sys/vm/vfs_cache_pressure,
262144 в /proc/sys/vm/min_free_kbytes,
100000000 в /proc/sys/vm/dirty_background_bytes,
700000000 в /proc/sys/vm/dirty_bytes:
- 4 потока - 1012 МБ/сек
- 8 потоков - 1019 МБ/сек
Поменяем nodelaylog на delaylog:
- 2 потока - 958 МБ/сек
- 8 потоков - 1046 МБ/сек
- 12 потоков - 1051 МБ/сек
- 20 потоков - 1024 МБ/сек
- много потоков - 919 МБ/сек (скорость постепенно нарастает с 550 МБ/сек до полной при падении числа потоков до 20)
Ещё "урежем" кеширование записи /proc/sys/vm/dirty_background_bytes до 10000000,
proc/sys/vm/dirty_bytes до 40000000:
- 1 поток - 627 МБ/сек (фрагментация - 0.54 %)
- 4 потока - 1078 МБ/сек
- 8 потоков - 1094 МБ/сек
Чтение, записанного в 1 поток (с размонтированием и сбросом буферов):
- 1 поток - 423 МБ/сек
- 2 потока - 500 МБ/сек
- 4 потока - 609 МБ/сек
- 8 потоков - 716 МБ/сек
- 12 потоков - 732 МБ/сек (без одного диска - 442 МБ/сек, без 2 дисков - 415 МБ/сек,
при восстановлении второго диска - 388 МБ/сек, при восстановлении первого диска - 411 МБ/сек)
- 20 потоков - 765 МБ/сек (дефрагментация до 0.18% ускорения не дала)
- много потоков - 769 МБ/сек
Сборка 3 массивов RAID1 из 24 дисков и объединение их в LVM с чередованием ("lvcreate --stripes 3 --stripesize 64K"),
исходные архивы на другом сервере (соединение 10 Гбит по NFS),
планировщик noop для всех блочных устройств,
256 в /sys/block/sdX/queue/nr_requests,
4096 в /sys/block/sdX/queue/read_ahead_kb,
50 в /proc/sys/vm/vfs_cache_pressure,
262144 в /proc/sys/vm/min_free_kbytes,
100000000 в /proc/sys/vm/dirty_background_bytes,
400000000 в /proc/sys/vm/dirty_bytes,
создание файловой системы с параметрами "-d su=64k,sw=66 -i attr=2,maxpct=5 -l su=64k,lazy-count=1,size=256m",
монтирование с параметрами "nodiratime,relatime,attr2,nodelaylog,logbufs=8,logbsize=256k,nobarrier,inode64,filestreams":
- 2 потока - 891 МБ/сек
- 4 потока - 1386 МБ/сек
- 8 потоков - 1729 МБ/сек
- 12 потоков - 1674 МБ/сек
- 20 потоков - 1713 МБ/сек
- 40 потоков - 1608 МБ/сек
- 60 потоков - 1532 МБ/сек
- много потоков - 1590 МБ/сек
Чтение, записанного в 2 потока (с размонтированием и сбросом буферов):
- 2 потока - 355 МБ/сек
- 4 потока - 515 МБ/сек
- 8 потоков - 758 МБ/сек
- 12 потоков - 895 МБ/сек
- 20 потоков - 925 МБ/сек
- 40 потоков - 897 МБ/сек
- 60 потоков - 870 МБ/сек
Переключение в режим оптимизации времени доступа вместо IOPS ускоряет чтение на 10% и
замедляет запись на 10% (XFS, 12 потоков).
При размонтировании с накопленным кешем записи достигается скорость записи 2 ГБ/сек,
т.е. успех возможен.
Сборка 2 массивов RAID1 из 24 дисков и последовательное соединение их в логический том LVM:
запись в 8 потоков - 1614 МБ/сек, чтение в много потоков - 881 МБ/сек.
Тестирование чтения tarnull с LVM (stripe по 64КБ), собранного из 2 * RAID6 из 18 дисков SAS 4TB 7200
на одном контроллере, perfmode=1, NORA, Direct, XFS (сборка - "mkfs.xfs -d su=64k,sw=32 -i attr=2 -l su=64k,lazy-count=1",
монтирование - "nodiratime,relatime,attr2,logbufs=8,logbsize=256k,inode64,filestreams,nobarrier"),
запись bacula в 5 потоков - 643 МБ/сек, копирование на себя в очень много потоков - 165 МБ/сек:
потоков | после bacula, МБ/сек | после копирования, МБ/сек |
1 | 170 | 77 |
2 | 191 | 111 |
3 | 236 | 148 |
4 | 279 | 178 |
5 | 314 | 204 |
6 | 344 | 227 |
7 | 372 | 248 |
8 | 397 | 268 |
9 | 421 | 285 |
10 | 441 | 301 |
11 | 461 | 315 |
12 | 478 | 328 |
13 | 499 | 340 |
14 | 501 | 351 |
15 | 499 | 359 |
16 | 490 | 368 |
17 | 470 | 374 |
18 | 473 | 377 |
19 | 455 | 378 |
20 | 443 | 379 (389, 382) |
21 | 440 | 378 (381) |
22 | 439 | 378 (372) |
23 | 439 | 376 (371) |
24 | 439 | 369 |
25 | 438 | 370 |
26 | 441 | 371 |
27 | 439 | 372 |
28 | 436 | 373 |
29 | 439 (454) | 374 |
30 | 439 (454) | 374 |
31 | 430 (455) | 375 |
32 | 436 (449, 458) | 375 |
33 | 439 (452) | 376 |
34 | 436 (459) | 376 |
35 | 435 (453) | 377 |
36 | 436 (458) | 375 |
37 | 436 (460) | 377 |
38 | 435 (453) | 376 |
39 | 429 (453) | 377 |
40 | 436 (467, 489) | 376 |
41 | 436 (472) | 376 |
42 | 435 (464) | 380 |
43 | 434 (467 | 375 |
44 | 434 (463) | 373 |
45 | 434 (461) | 374 |
46 | 435 (451) | 374 |
47 | 433 (442) | 373 |
48 | 434 (444) | |
49 | 446 (446) | |
50 | 442 (457) | |
51 | 430 (451) | |
52 | 428 (447) | |
53 | 431 (447) | |
54 | 427 (474) | |
55 | 429 (458) | |
56 | 428 (459) | |
57 | 430 (457) | |
58 | 426 (448) | |
59 | 427 (445) | |
60 | 427 (440) | |
61 | 430 (437) | |
62 | 427 (442) | |
63 | 425 (439) | |
64 | 426 (440) | |
65 | 422 (436) | |
66 | 426 (438) | |
67 | 424 (436) | |
68 | 424 (436) | |
69 | 421 (437) | |
70 | 420 (435) | |
71 | 420 (437) | |
72 | 419 (435) | |
76 | (432) | |
80 | (430) | |
84 | (432) | |
88 | (427) | |
92 | (427) | |
96 | (426) | |
100 | (425) | |
104 | (426) | |
108 | (426) | |
112 | (424) | |
116 | (424) | |
120 | (424) | |
124 | (421) | |
128 | (422) | |
132 | (419) | |
136 | (420) | |
140 | (416) | |
Настройка для 9266:
/opt/MegaRAID/storcli/storcli64 /c0 set coercion=0 # всё-равно неправильно округляет
/opt/MegaRAID/storcli/storcli64 /c0 set loadbalancemode=on
/opt/MegaRAID/MegaCli/MegaCli64 -AdpSetProp -LoadBalanceMode -0 -a0 # storcli не умеет (не умел?) устанавливать баланс
/opt/MegaRAID/storcli/storcli64 /c0 set perfmode=1 # минимизация задержек
/opt/MegaRAID/storcli/storcli64 /c0 set patrolread=off # cc достаточно и он "правильней"
# для сервера резервного копирования bacula "ra cached" вместо "nora direct"
/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid6 size=all name=first drives=9:0-17 pdcache=off wb nora direct Strip=64
/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid6 size=all name=second drives=9:18-23,8:0-11 pdcache=off wb nora direct Strip=64
pvcreate /dev/sda /dev/sdb
vgcreate x42fronttop /dev/sda /dev/sdb
lvcreate -n share --stripes 2 --stripesize 64K -l +100%FREE x136all36 /dev/sda /dev/sdb
mkfs.ext4 -E stride=16,stripe_width=512,lazy_itable_init=1 -G 128 -J size=512 -L share -v \
-O 64bit,dir_index,dir_nlink,extent,ext_attr,filetype,flex_bg,has_journal,huge_file,large_file,meta_bg,sparse_super,uninit_bg \
/dev/x136all36/share
в /etc/fstab:
/dev/x136all36/share /share ext4 data=ordered,stripe=512,nobarrier,nodiratime,norelatime,journal_checksum,journal_async_commit,delalloc 1 2
Настройка для 9560:
/opt/MegaRAID/storcli/storcli64 /c0 set bios Mode=SOE # стоять, если что не так
/opt/MegaRAID/storcli/storcli64 /c0 set coercion=0 # были проблемы с вычислениями
/opt/MegaRAID/storcli/storcli64 /c0 set copyback=off type=all # без неожиданностей
/opt/MegaRAID/storcli/storcli64 /c0 set dimmerswitch=off type=4 # не спать!
/opt/MegaRAID/storcli/storcli64 /c0 start dpm # сбор статистики
/opt/MegaRAID/storcli/storcli64 /c0 set foreignautoimport=off # без неожиданностей
/opt/MegaRAID/storcli/storcli64 /c0 set loadbalancemode=on # хотя тут 1 порт
/opt/MegaRAID/storcli/storcli64 /c0 set patrolread=off # везде CC
/opt/MegaRAID/storcli/storcli64 /c0 set perfmode=1 # не поддерживается, но Support Perf Tuning = Yes
# для сервера резервного копирования bacula "ra cached" вместо "nora direct"
/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid6 size=all name=first drives=250:0-11,251:0-4 pdcache=off wb nora direct Strip=64
/opt/MegaRAID/storcli/storcli64 /c0 add vd type=raid6 size=all name=second drives=251:5-15,18-23 pdcache=off wb nora direct Strip=64
# и сразу же (bgi обещает закончиться через 17 дней)
/opt/MegaRAID/storcli/storcli64 /c0/vall set autobgi=off
/opt/MegaRAID/storcli/storcli64 /c0/vall start init full
pvcreate /dev/sda /dev/sdb
vgcreate data /dev/sda /dev/sdb
lvcreate -n tm --stripes 2 --stripesize 64K -l +100%FREE data /dev/sda /dev/sdb
Глюк
04/18/15 22:37:07: cmdBlockPrep: Command block started (host IOs blocked)
04/18/15 22:40:41: adapterResetRequestIsr CCRMiscCfg c003ff0e timeUs: b6274d7e
04/18/15 22:40:41: adapterResetRequestIsr CCRMiscCfg c003ff0e timeUs: b6274e01
04/18/15 22:40:41: Adptr Res Rqst task timeUs: b6274e41
04/18/15 22:40:43: EVT#44951-04/18/15 22:40:43: 345=Controller encountered a fatal error and was reset
04/18/15 22:40:55: fusionMUErrorIsr: FMU Error Status 00000400
04/18/15 22:40:55: MU: Disabled FIFO Write error
04/18/15 22:40:55: Fusion register dump:
в следующий раз подождал подольше (5 минут?)
Apr 20 19:18:01 x136 kernel: megasas: [175]waiting for 234 commands to complete for scsi0
Apr 20 19:18:06 x136 kernel: megaraid_sas: pending commands remain after waiting, will reset adapter scsi0.
Apr 20 19:18:06 x136 kernel: megaraid_sas: resetting fusion adapter scsi0.
Apr 20 19:18:17 x136 kernel: megasas: Waiting for FW to come to ready state
Apr 20 19:18:42 x136 kernel: megasas: FW now in Ready state
Apr 20 19:18:43 x136 kernel: megasas:IOC Init cmd success
Apr 20 19:18:43 x136 kernel: megaraid_sas 0000:02:00.0: Firmware supports 256 VD 256 PD
Apr 20 19:18:43 x136 kernel: megaraid_sas 0000:02:00.0: Driver supports 256 VD 256 PD
Apr 20 19:18:43 x136 kernel: megaraid_sas: Reset successful for scsi0.
04/20/15 19:18:07: adapterResetRequestIsr CCRMiscCfg c003ff0e timeUs: e94fdd3d
04/20/15 19:18:07: adapterResetRequestIsr CCRMiscCfg c003ff0e timeUs: e94fddc6
04/20/15 19:18:07: Pmu Msg Fault!!! faultcode 00000d05
04/20/15 19:18:07: In MonTask; Seconds from powerup = 0x00013d42
04/20/15 19:18:07: Max Temperature = 57 on Channel 1
Firmware crash dump feature disabled
---Feature is disabled in MFC or
Online Ctrl Reset is enabled in MFC or
Security is enabled in Controller
montask 1
_MonTask: Online Controller Reset
[0]: fp=c130b840, lr=c1875698 - _MonTask+1b8
[1]: fp=c130b970, lr=c19f5f44 - PmuMsgProcessFault+30
[2]: fp=c130b978, lr=c134054c - PmuProcessCommonHdr+28
[3]: fp=c130b980, lr=c1340208 - PmuProcessQueue+16c
[4]: fp=c130ba10, lr=c13403dc - PmuPoll+c0
[5]: fp=c130ba48, lr=c1330e44 - TaskStartNext+90
[6]: fp=c130ba88, lr=c13188d8 - set_state+7c
[7]: fp=c130baf8, lr=c131939c - raid_task_idle_loop+20
[8]: fp=c130bb08, lr=c18a04e8 - raid_task+60c
[9]: fp=c130bf88, lr=c197fb40 - _main+b64
[10]: fp=c130bff8, lr=fc801e60 - __start+e08
MonTask: line 482 in file ../../gemini/pmuInterface.c
UIC_ER=15e80:8070b07, UIC_MSR=0:0, MSR=21000, sp=c130b840
online reset - no input needed
04/20/15 19:18:07: online reset - wait for Reset to occur
Стабильное зависание при тестировании LVM cache под нагрузкой (прошивка 23.33.0-0018, xfs) с использованием SSD:
systemd-udevd: worker [24958] /devices/pci0000:00/0000:00:02.0/0000:02:00.0/host0/target0:2:0/0:2:0:0/block/sda timeout; kill it
systemd-udevd: seq 32557 '/devices/pci0000:00/0000:00:02.0/0000:02:00.0/host0/target0:2:0/0:2:0:0/block/sda' killed
systemd-udevd: worker [24958] terminated by signal 9 (Killed)
kernel: INFO: task smartd:1068 blocked for more than 120 seconds.
kernel: INFO: task scsi_id:24959 blocked for more than 120 seconds.
kernel: megasas: [ 0]waiting for 1 commands to complete for scsi0
...
kernel: megasas: [175]waiting for 1 commands to complete for scsi0
kernel: megaraid_sas: pending commands remain after waiting, will reset adapter scsi0.
kernel: megaraid_sas: resetting fusion adapter scsi0.
kernel: megasas: Waiting for FW to come to ready state
kernel: megasas: FW now in Ready state
kernel: megasas:IOC Init cmd success
Аналогичное зависание на ровном месте (нулевая нагрузка, SSD перенесены на другой контроллер, ext4) привело
к формированию метаданных на дисках, выводящих из строя (зависание при обращении, индикаторы дисков дёргаются) любой аналогичный контроллер.
Вылечил выниманием дисков, сменой контроллера, отключением автоматического импорта чужих дисков, вставкой дисков, удалением конфигурации,
созданием виртуальных дисков с теми же параметрами - данные остались на месте, ошибок не обнаружено.
Была пара случаев зависания одного из 3 контроллеров (оба раза пустого без дисков), storcli
ждёт вечно и не снимается. Массивы на оставшихся контроллерах работают совершенно нормально (storcli также зависает),
smartctl отрабатывает, жалоб в журнале нет. После попыток обратиться к полке зависшего контроллера по smartctl и sg_ses
отвис storcli на оставшихся контроллерах с сообщением в журнале:
Jan 10 16:24:42 x145 kernel: megasas: Found FW in FAULT state, will reset adapter scsi9.
Jan 10 16:24:42 x145 kernel: megaraid_sas: resetting fusion adapter scsi9.
Jan 10 16:26:26 x145 kernel: megaraid_sas 0000:06:00.0: Diag reset adapter never cleared megasas_adp_reset_fusion 2431
Jan 10 16:28:10 x145 kernel: megaraid_sas 0000:06:00.0: Diag reset adapter never cleared megasas_adp_reset_fusion 2431
Jan 10 16:29:54 x145 kernel: megaraid_sas 0000:06:00.0: Diag reset adapter never cleared megasas_adp_reset_fusion 2431
Jan 10 16:29:54 x145 kernel: megaraid_sas: Reset failed, killing adapter scsi9.
Jan 10 16:29:55 x145 kernel: ses 9:0:8:0: Device offlined - not ready after error recovery
Jan 10 16:29:55 x145 kernel: ses 9:0:8:0: Device offlined - not ready after error recovery
Jan 10 16:31:22 x145 kernel: ses 9:0:8:0: rejecting I/O to offline device
Jan 10 16:31:22 x145 kernel: ses 9:0:8:0: rejecting I/O to offline device
Jan 10 16:31:22 x145 kernel: ses 9:0:8:0: rejecting I/O to offline device
...
Jan 10 16:36:55 x145 kernel: Controller in crit error
storcli видит только 2 контроллера из 3 (в /proc/scsi/scsi host9 остался, остались и sg6/sg7):
/opt/MegaRAID/storcli/storcli64 show ctrlcount
Controller Count = 2
на тестовом сервере (аналогичный боевому) проблему удалось решить удалив устройство и просканировав шину
(scsi host поменялся), на боевом не рискнул пока:
echo 1 > /sys/bus/pci/devices/0000:06:00.0/remove
ls -lL /sys/bus/pci/devices/0000:06:00.0
ls: cannot access /sys/bus/pci/devices/0000:06:00.0: No such file or directory
echo 1 > /sys/bus/pci/rescan
Jan 13 06:08:21 x142 kernel: pci 0000:06:00.0: BAR 3: assigned [mem 0xdfa00000-0xdfa3ffff 64bit]
Jan 13 06:08:21 x142 kernel: pci 0000:06:00.0: BAR 6: assigned [mem 0xdfa40000-0xdfa5ffff pref]
Jan 13 06:08:21 x142 kernel: pci 0000:06:00.0: BAR 1: assigned [mem 0xdfa60000-0xdfa63fff 64bit]
Jan 13 06:08:21 x142 kernel: pci 0000:06:00.0: BAR 0: assigned [io 0x5000-0x50ff]
Jan 13 06:08:21 x142 kernel: mgag200 0000:08:03.0: BAR 6: [??? 0x00000000 flags 0x2] has bogus alignment
Jan 13 06:08:21 x142 kernel: megasas: Waiting for FW to come to ready state
Jan 13 06:08:21 x142 kernel: megasas: FW now in Ready state
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: firmware supports msix#011: (16)
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: current msix/online cpus#011: (12/12)
Jan 13 06:08:21 x142 kernel: megasas:IOC Init cmd success
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: firmware type#011: Extended VD(240 VD)firmware
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: controller type#011: MR(1024MB)
Jan 13 06:08:21 x142 kernel: megasas: INIT adapter done
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: pci id#011#011: (0x1000)/(0x005b)/(0x1000)/(0x9266)
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: unevenspan support#011: no
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: disable ocr#011#011: no
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: firmware crash dump#011: no
Jan 13 06:08:21 x142 kernel: megaraid_sas 0000:06:00.0: secure jbod#011#011: no
Jan 13 06:08:21 x142 kernel: scsi host10: Avago SAS based MegaRAID driver
Jan 13 06:08:21 x142 kernel: scsi 10:0:8:0: Enclosure LSI SAS3x40 0601 PQ: 0 ANSI: 5
Jan 13 06:08:21 x142 kernel: scsi 10:0:9:0: Enclosure LSI SAS3x40 0601 PQ: 0 ANSI: 5
Jan 13 06:08:21 x142 kernel: ses 10:0:8:0: Attached Enclosure device
Jan 13 06:08:21 x142 kernel: ses 10:0:8:0: Attached scsi generic sg5 type 13
Jan 13 06:08:21 x142 kernel: ses 10:0:9:0: Attached Enclosure device
Jan 13 06:08:21 x142 kernel: ses 10:0:9:0: Attached scsi generic sg6 type 13
/opt/MegaRAID/storcli/storcli64 show
Ctl Model Ports PDs DGs DNOpt VDs VNOpt BBU sPR DS EHS ASOs Hlth
----------------------------------------------------------------------------------
0 LSIMegaRAIDSAS9266-8i 8 15 1 0 1 0 Opt Off 1&2 Y 4 Opt
1 LSIMegaRAIDSAS9266-8i 8 0 0 0 0 0 Opt Off 1&2 Y 4 Opt
2 LSIMegaRAIDSAS9266-8i 8 0 0 0 0 0 Opt Off 1&2 Y 4 Opt
/opt/MegaRAID/storcli/storcli64 /c2 set time=systemtime
Утилита storcli (/opt/MegaRAID/storcli/storcli64) предназначена для
управления RAID контроллерами фирмы Broadcom (LSI Logic, Avago) линеек 924x и выше (до 9600?), IT (HBA) контроллерами и программным RAID ((SWR),
например, MegaRAID SAS 9266-8i. Имеет одинаковый командный интерфейс
для RHEL 5.8 и выше, UEFI Shell, Solaris (уже нет), FreeBSD 12.3-13.1,
VMware ESXi 4.0 - 6.5, MS Windows 7-11, MS Windows Server 2008 R2 - 2022.
Не поддерживает работу со снимками.
Не рекомендуется параллельное выполнение нескольких storcli.
Установка для Linux выполнена в виде пакета storcli-*.noarch.rpm (фактически надо извлечь 1 файл - /opt/MegaRAID/storcli/storcli64).
Командный интерфейс имеет следующий формат: [указатель-объекта] команда [параметр] [ключ=значение] [J].
Указание "J" в конце строки приводит в форматированию ответа в формате JSON. Булевы параметры задаются в виде "on" и "off".
По умолчанию, журнал пишется (полный debug) в файл storcli.log в текущем каталоге.
При превышении размера файла 3 МБ производится ротация на 4 поколения (storcli.log.3).
Отключить можно в любой команде параметром "nolog".
Настройки в storcliconf.ini в каталоге /opt/MegaRAID/storcli/.
Указатель объекта:
- /c<номер контроллера>
- /call
- /c<номер контроллера>/d<номер группы дисков>
- /c<номер контроллера>/dall
- /c<номер контроллера>/v<номер виртуального диска>
- /c<номер контроллера>/vall
- /c<номер контроллера>/f<номер конфигурации> # информация о "чужих" дисках
- /c<номер контроллера>/fall # реализован только "all"
- /c<номер контроллера>/e<номер корзины>
- /c<номер контроллера>/eall
- /c<номер контроллера>/e<номер корзины>/s<номер диска>
- /c<номер контроллера>/e<номер корзины>/sall
- /c<номер контроллера>/s<номер диска> # для дисков, подключённых непосредственно к контроллеру
- /c<номер контроллера>/p<PHY>
- /c<номер контроллера>/pall
- /c<номер контроллера>/cv # информация о Cache Vault
- /c<номер контроллера>/ln<номер линии PCIe>
- /c<номер контроллера>/bbu # у нас нет батареек! только cv
Команды:
- общесистемные
- help
- v # выводит номер версии
- show # выводит количество контроллеров, имя хоста, версию ядра;
для каждого контроллера выводится его номер, модель, количество портов, подключённых дисков, групп дисков, проблемных групп дисков,
виртуальных дисков, проблемных виртуальных дисков, состояние BBU или CV, включено ли патрульное чтение и экономия энергии,
EHS (любой свободный диск может быть использован как запасной), ASO (количество лицензий), состояние контроллера
- show ctrlcount
- show all # дополнительно показываются проблемные устройства хранения, установленные лицензии (их больше чем ожидалось)
- для контроллера (параметры для команды set те же самые, что и для команды show, с указанными дополнениями)
- show # выводит
-
название продукта, серийный номер, SAS адрес, PCI адресацию,
системное время, дату изготовления, внутреннее время контроллера,
версии прошивки (пакет, BIOS, прошивка), название драйвера, версию драйвера,
режим (Personality - RAID-Mode), идентификатор производителя PCI и субидентификатор, идентификатор устройства PCI и субидентификатор,
интерфейс хоста, интерфейс устройств (а как же Tri-Mode?), номер шины и устройства и функции PCI,
количество групп дисков;
-
для каждой группы дисков - номер, тип RAID, состояние, наличие фоновых задач, размер, использование кеша дисков, PI, SED, наличие свободного места,
готовность к перемещению;
- количество устройств хранения;
для каждого устройства хранения (в 2 таблицах) - номер группы дисков, номер в группе (Row), номер корзины и слота в корзине, идентификатор устройства в контроллере,
состояние, наличие фоновых задач, размер, использование кеша дисков, PI, SED, режим экономии электричества, готовность к перемещению,
интерфейс, носитель (HDD или SSD), размер сектора, модель, раскручен ли, фоновая задача (перестроение, копирование и т.д.);
- количество виртуальных дисков;
для каждого виртуального диска - номер группы дисков, номер виртуального диска, тип RAID, состояние, тип доступа (RW, RO),
консистентность, тип кеширования, прямой доступ или через кеш, тип упреждающего чтения, запланированность CC, размер, имя;
- количество корзин; для каждой корзины - номер, состояние, количество слотов, количество устройств хранения,
количество БП, количество вентиляторов, количество датчиков температоры, количество сирен, SIM (?), описание портов подключения,
модель, подробности от изготовителя (версия прошивки)
- для BBU - модель, состояние, температура, режим работы, дата изготовления, дата следующего тестирования
- для Cache Vault - модель, состояние, температура, режим, дата изготовления
- show all [logfile[=имя-файла]] # storsas.log; более подробно (более 500 строк) выводит версии компонет прошивки (PSOC, NVDATA, CBB, HII),
дополнительно выводит - дату ремонта, неактивные прошивки и прошивки в полёте, состояние компонент (ошибки памяти и пр.),
поддерживаемые операции над контроллером и возможность настроек, над дисками, над виртуальными дисками;
настройки кластерной работы;
установленные лицензии (RAID5, RAID6, FastPath, SafeStore) и дата окончания (Unlimited); идентификатор для получения новых лицензий (Safe ID);
аппаратные особенности (ревизия, размер NVRAM и прошивки, количество внешних и внутренних портов, наличие BBU/CV,
наличие сирены, размер памяти и флеша CV, использование памяти, датчики температуры и их значение);
параметры по умолчанию и текущие; настройки поведения при загрузке; ограничения на поддерживаемые устройства, типы массивов и т.п.;
список запланированных фоновых задач; настройки безопасной загрузки
- show abortcconerror # прерывать ли проверку консистентности при нахождении первой ошибки (по умолчанию - выключено)
- show activityforlocate # использовать индикатор активности для локализации
- show alarm
- set alarm={on|off|silent}
- show alilog [logfile[=имя-файла]] # оборудование, его состояние и настройки;
включает журнал (EVT?), сохраняемый между перезагрузками;
- show aso # показать установленные лицензии
- set advancedsoftwareoptions(aso) key=ключ [preview] # установка лицензии (40 символов)
- aso [transfertovault][rehostcomplete][deactivatetrialkey] # работа с лицензиями
- show assemblynumber # нет в документации, не работает
- show autobgi # отсутствует
- show autoconfig
- set autoconfig={off|none|R0 [immediate]|JBOD} [sesmgmt={on|off}] [multipath={on|off}]
- show autorebuild
- show backplane # способ опознания корзины при отсутствии SES и показывать корзину и пр.
- set backplane mode=режим # 0 - автораспознавание SGPIO и I2C SEP, 1 запретить SGPIO, 2 - запретить I2C SEP, 3 - всё запретить
- set backplane expose={on|off} # разрешить драйверу показывать корзины, SES, экспандеры
- show badblocks # проблемы с CacheVault; не для 92xx
- show batterywarning # а кого он предупреждает?
- show bgi # реализация отсутствует
- show bgirate # приоритет фоновой инициализации (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный;
нет в документации
- show bios # инициализировать ли контроллер в BIOS, останавливать ли загрузку при ошибках, выбирать ли загрузочное устройство
- set bios state={on|off} # инициализировать ли BIOS контроллера при загрузке
- set bios Mode={SOE|PE|IE|SME} # обработка ошибок при загрузке: SOE - остановка, PE - пауза, IE - игнорировать, SME - безопасный режим (?)
- set BIOSMode={SOE|BE|HCOE|HSM} # было; SOE - остановить загрузку при ошибках; BE, HCOE, HSM - ?
- set bios abs={on|off} # автоматический выбор загрузчика; ручной выбор:
storcli /cx/ex/sx set bootdrive=on
или
storcli /cx/vx set bootdrive=on
- set bios DeviceExposure={0|1|число} # показывать BIOS указанное количество устройств (0 или 1 -все)
- show boardname # не поддерживается
- show bootdrive
- show bootwithpinnedcache # что это?; по умолчанию - выключено; для R0 и игнорировании ошибок при загрузке
- show cachebypass # уменьшение нагрузки на контроллер и задержек обработки за счёт пропуска "неподходящих" данных мимо кеша;
параметры настраиваются индивидуально для логического диска;
по умолчанию - было выключено, теперь включено
- show cacheflushint # интервал сброса кеша, по умолчанию - 4 секунды
- set cacheflushinterval # вместо cacheflushint
- show cc # режим проверки консистентности: параллелизм, интервал, время следующей проверки, текущее состояние, количество проверок
- set cc={off|seq|conc} [delay=часов] [starttime=YYYY/MM/DD HH] [excludevd=номер,... | None] #
умиляет пробел перед часами, разный формат даты при установке и показе и сдвиг реального времени
контроллера относительно показываемого, (надо устанавливать на 1 час больше);
если интервал не указать, то он устанавливается в 0; на одном из контроллеров пропускает автоматическую проверку (ручной запуск срабатывает)
- show ccrate # приоритет проверки консистентности (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный
- show coercion # округление размера диска: 0 - нет, 1 - 128MB, 2 - 1GB
- set coercion # округление размеров дисков вниз: 0 - нет, 1 - до 128МБ, 2 - до 1GB
(надо определиться, 900185481216 байт как-то странно округляет до 857353 MiB, отключить?;
при отключённом округлении размер всё равно округлился до 32МБ)
- show configautobalance # не поддерживается
- show copyback # переносить ли данные на резервное устройство по состоянию SMART
- set copyback={on|off} type={ctrl|smartssd|smarthdd|all} # ctrl - удалили?
- show dequeuelog file=имя-файла # нет в документации; см. start diag и set debug
- show deviceorderbyfirmware # off - сначала JBOD, затем VD; on - как прошивка пожелает
- show {dimmerswitch|ds} # режим экономии энергии; отчитались и забросили тему - не советую использовать
- set {dimmerswitch|ds}={on|off} type={1|2|3|4} [параметры] # 1 - несконфигурированные устройства, 2 - диски горячей замены,
3 - используемые диски (не поддерживается), 4 - несконфигурированные и горячей замены; по умолчанию 1 и 2, диски засыпают через 30 минут
- show directpdmapping # не делайте этого
- show dpm # включён ли мониторинг производительности
- start dpm
- stop dpm
- delete dpmstat type = {Hist | LCT | RA | EXT | All}
- show driveactivityled
- show eccbucketleakrate и eccbucketsize # управление мониторингом ошибок ECC (1440 минут, 15)
- show eghs # включены ли режимы: Smarter (считать предсказанные отказы экстренными случаями),
использовать неподходящие глобальные диски горячей замены в экстренных случаях (EHSP),
использовать несконфигурированные хорошие диски в экстренных случаях
- set eghs state={on|off} # использовать неподходящие глобальные диски горячей замены в экстренных случаях (EHSP)
- set eghs smarter={on|off} # считать предсказанные отказы экстренными случаями
- set eghs eug={on|off} # использовать несконфигурированные хорошие диски в экстренных случаях
- show erase # не поддерживается
- show eventcounters [type={sas|pcie}] # каждый EVT отдельным пакетом, нет в документации
- show eventloginfo # общая информация о EVT; нельзя в JSON
- show events [logfile[=имя-файла]] [type={sincereboot|sinceshutdown|includedeleted|latest=число|ccincon vd=номер] [filter={info|warning|critical|fatal}]
# каждый EVT отдельным пакетом, нет в документации
- delete events
- clear events
- show failedNvmeDevices # нет в документации
- show failpdonsmarterror # объявлять устройство плохим по показаниям SMART
- show flushwriteverify # проверка записи?!
- show foreignautoimport # автоматически импортировать чужие конфигурации при загрузке, включено по умолчанию
- show freespace # подробности о свободном пространстве, нет в документации
- show HDDThermalPollInterval # не поддерживается
- show htbparams # не поддерживается
- show immediateio # Immediate I/O transactions?, нет в документации
- show init # не поддерживается
- show jbod # режим JBOD, диски без метаданных предъявлять ОС (по умолчанию - выключено)
- set jbod={off|on} # проявляются сразу
- show jbodwritecache # не поддерживается
- show largeiosupport # по умолчанию была выключена, теперь включена;
после изменения необходима повторная инициализация драйвера, что это?
- show largeQD # не поддерживается
- show ldlimit # устарело, нет в документации
- set ldlimit=default|max
- show limitMaxRateSATA # ограничить скорость SATA 3G; не поддерживается
- show linkconfig # текущее и возможные варианты распределения линий по портам PCIe (9560-8i: 1 - 2 x4; 4 - 4 x2; 17 - 8 x1))
- set linkconfig [connname=имя1,...] linkconfig=номер-варианта
- show loadbalancemode # балансировка загрузки между SAS портами дисков (по умолчанию - было выключено, теперь включено),
всё равно упирается в 4*6Gb ("show loadbalancemode" показывает, что включена, "show all" показывает Auto,
"/opt/MegaRAID/MegaCli/MegaCli64 -AdpGetProp -loadbalancemode -a0" - Auto; даже после использования MegaCLI
скорость "badblocks -b 1048576 -c 128 -v /dev/sdc" не поднялась выше 24Gbps)
- show maintainpdfailhistory # отслеживать историю аппаратных сбоев на дисках, по умолчанию включено;
заметив, что устройство хранения использовалось ранее, контроллер пометит его как чужое (foreign)
- show maintenance # нет в документации, не поддерживается
- show migrate # не поддерживается
- show migraterate # приоритет миграции (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный;
нет в help; показывает ReconRate
- show ncq
- show ocr # Online Controller Reset
- show oob # параметры управления корзиной по побочным путям (OOB)
- set oob mode={I2C|PCIe} maxpacketsize=размер [spdm=on|off] [pldm=on|off]
- show overrideSlowArrayThresholds # вычисление границы скорости, которая считается медленной
- set overrideSlowArrayThresholds={on|off} [force]
- show parityreadcachebypass
- show patrolread | pr # режим патрульного чтения: режим, интервал, текущее состояние, количество проверок сделанных, читать ли SSD, дата следующего запуска,
количество параллельных потоков, исключённые логические диски;
нет в help
- set patrolread={on|off} mode={auto|manual} [starttime=YYYY/MM/DD HH] [delay=часов] [maxconcurrentpd=число] [includessds={on|off}]
[uncfgareas={on|off}] # выключить, если все диски задействованы в массивах с проверкой консистентности
- show pci # номер шины PCI, устройства, функции
- show pdfaileventoptions # не поддерживается; нет в документации
- set pdfaileventoptions detectiontype=тип ... correctiveaction=тип errorrthreshold=тип # 0 - запретить, 1 - задержки чтения не проблема, 2 - задержки считаются проблемой,
3 - учитывать recoveryTimeLimit и writeRetryCount; фильтр correctiveaction: 0 - только записи журнала, 1 - с учётом SMART;
границы ошибок : 0 - ошибка за 8 часов, 1 - ошибка за час, 2 - ошибка в 15 минут, 3 - ошибка в 5 минут
- show pdfailevents [lastoneday] [lastseqnum=число] [file=имя-файла] # информация о сбоях устройств хранения
(модель, серийный номер, слот, количество ошибок, распределение по зонам устройства хранения);
нет в документации
- show perfmode # 0 - больше IOPS
- set perfmode={0|1} [maxflushlines=какое-то-число numiostoorder=число-IO-операций-для-упорядочения] #
0 (по умолчанию) - максимальное количество IOPS, непредсказуемые задержки, 1 - минимальные задержки,
меньше IOPS (рекомендуется при реальной работе);
для 95xx для управления используется параметр модуля megaraid_sas, который только на чтение
- show perfmodevalues # Max Flush lines и Number Order IOs; нет в документации
- show personality # текущий режим работы RAID или JBOD, поддерживаемые режимы, модификация поведения, автоконфигурацияя, поддержка SES
- set personality={RAID|HBA|JBOD} # перепрограммируется название устройства, требуется перезагрузка
- set personality behavior={JBOD|None} что это?
- set personality behavior [sesmgmt=on|off] [securesed=on|off] [multipath=on|off] [multiinit=on|off] что это?
- show perst # обработка сигнала PCIe PERST; 0 - обрабатывается устройством, 1 - сбрасывается, 2 - устанавливается
- show pi # data protection / Protection Information что это? (по умолчанию - было включено, импорт выключен); 9560-8i не поддерживает PI
- set pi state={on|off} import={on|off} #
- show powermonitoringinfo # не поддерживается; нет в документации
- show prcorrectunconfiguredareas # заполнять нулями несконфигурированные области, которые не удалось прочитать патрулированию (по умолчанию - включено)
- show preservedcache # имеются ли данные, закешированные для исчезнувшего диска
- show profile # профили работы, например для 9560-8i (якобы без PCIe обеспечивается большая глубина очереди для SCSI):
Mode ProfID MaxPhyDrv MaxLD MaxPCIeDev MaxAHCIDev Dflt Curr Optm Pend WBSup Cmp
--------------------------------------------------------------------------------
RAID 30 240 240 32 0 Yes Yes No No Yes Yes
RAID 32 240 240 0 0 No No No No Yes Yes
--------------------------------------------------------------------------------
ProfID=Profile ID|MaxPhyDrv=Maximum Physical Drives|MaxLD=Maximum Logical Drives
MaxPCIeDev=Maximum PCIe Devices|MaxAHCIDev=Maximum AHCI Devices
Dflt=Default Profile|WBSup=Write Back Support|Curr=Current Profile
Optm=Optimal Profile|Pend=Pending Profile|Cmp=Compatible Profile
- set profile profileid=номер # требуется перезагрузка
- show prrate # приоритет патрульного чтения (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный
- show rebuildrate # приоритет перестроения избыточности массива (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный
- show reconrate # приоритет реконструкции (30): 0 - минимальный (отсутствие полезной нагрузки), 100 - максимальный
- show refClk # 0 | 1 | 2
- show rehostinfo # требуется перелицензирование
- show restorehotspare # восстанавливать ли потраченный диск горячей замены при вставке нового (по умолчанию - выключено)
- show safeid # данные для получения лицензии
- show sasadd # не поддерживается
- show securitykey keyid
- show security spdm ...
- show sesmonitoring #
- show sesmultipathcfg # метод подбора SES при многопутёвости, 0 - по LUN, 1 - по порту цели; нет в документации
- show sgpioforce # использовать SGPIO только для 4 устройств (?)
- show smartpollinterval # секунд (300)
- show snapdump # сведения о настройке snapdump - снимки отладочной информации для дальнейшего разбирательства;
создаётся по требованию или автоматически
- show spinupdelay # секунд между группами при раскрутке дисков (2)
- show spinupdrivecount # количество дисков в группе раскрутки (2)
- show SSDThermalPollInterval # не поддерживается
- show stoponerror # остановить при ошибке во время загрузки; перенесли
- show supportssdpatrolread # перенесли
- show temperature # температура ROC [и контроллера];
при достижении 115°C скорость работы контроллера уменьшается, может уменьшаться частота SAS;
возврат при 104°C
- show termlog [type=config|contents] [logfile[=имя-файла]] # storsas.log; вывести сообщения из журнала контроллера, включая сообщения загрузки и отладки;
config - настройки журнала
- set termlog={on|off|offthisboot} # записывать журнал во флеш (ONFI)
- delete termlog
- show time
- set time={yyyymmdd hh:mm:ss | systemtime}
- show usefdeonlyencrypt # использовать шифрование на уровне дисков
- show wbsupport # включён ли Write Back (на уровне контроллера?)
- start patrolread
- stop patrolread
- pause patrolread
- resume patrolread
- set autobootselect={on|off} # позволить ли BIOS выбирать загрузочный диск
- set securitykey keyid=индекс-ключа # управление ключами самошифрующихся дисков, идентификатор ключа уникален среди контроллеров
- set securitykey=ключ [passphrase=пароль] [keyid=индекс-ключа] # если не указать пароль, то генерируется автоматически
- set securitykey=ключ oldsecuritykey=пароль [passphrase=пароль] [keyid=индекс-ключа]
- show securitykey индекс-ключа
- set security=on # требуется указать корзину и диск
- delete securitykey
- compare securitykey=ключ
- download file=имя-файла [nosigchk] [noverchk] [resetnow] [fwtype=0|1|2] [force]
# загрузить новую прошивку, тип 0 - для самого контроллера, 1 - для батареи TMMC, 2 - для CacheVault (GG)
- download completeflash fileone=файл-с-загрузчиком filetwo=файл-с-прошивкой # если попортили загрузчик
- transform [iMR] # вернуться к старой прошивке?
- download {efibios|cpld|bios|fcode} file=имя-файла #
- flush | flushcache # немедленно записать содершимое кеша записи на устройство хранения
- flasherase # очистить флеш память контроллера (которую из них?)
- erase {nvsram|fwbackup|bootservices|all [excludemfg]|perconfpage|mpd} [file=имя-файла] # зачистить всё/почти всё (excludemfg - фабричные данные)
- restart # перезапустить контроллер без перезагрузки системы
- shutdown
- apply # активировать код доступа
- delete config [force] # удалить настройки устройств
- set factory defaults # параметры сбрасываются по умолчанию, а настройки устройств - нет
- get config file=имя-файла # сохранить настройки в файле, двоичный формат
- set config file=имя-файла # восстановить настройки из файла, необходимо предварительно очистить настройки контроллера
- get {bios|firmware|mpb|fwbackup|nvdata|flash} file=имя-файла
- set debug type=номер-переменной option=действие # действие: 1 - установить, 2 - очистить, 3 - очистить всё, 4 - вывалить
- set debug reset all
- start diag duration=секунд # запустить самотестирование
- show dequeuelog file=имя-файла # журнал отладки
- set snapdump state={on|off}
- set snapdump savecount=число delayocr=секунд preboottrace={on|off}
- show snapdump # настройки, количество, размер и время каждого
- get snapdump id={номер|all} [file=имя.zip] # отладочная информация на момент краха
- delete snapdump [force]
- для диска
- show # вывести: номер корзины и слота, номер диска, состояние, номер группы дисков, размер, интерфейс, тип носителя, самошифруемый ли,
защищён ли (PI), размер сектора, модель, раскручен ли
- show all # вывести дополнительно: счётчик блокировки (shield), счётчик ошибок носителя, счётчик прочих ошибок, температура,
счётчик предсказуемых отказов, флаг SMART, серийный номер, WWN, версия прошивки, полный размер,
размер до округления (- 512MB на метаданные), размер после округления, скорость порта устройства, скорость канала,
кеширование записи на устройстве, логический размер сектора устройства, физический размер сектора устройства,
номер группы дисков, номер упряжки, номер строки в массиве, место в корзине, задействованные порты диска, резервный ли для группы,
резервный ли для аварийных случаев, номер последнего события предсказания отказа, способность к шифрованию, включено ли шифрование,
защищён (PI?), блокирован (?), PI Eligible (?), широкий порт, умеет UNMAP, multipath,
информация о портах устройства: номер, активен ли, скорость, SAS адрес
- show rebuild
- show initialization
- show copyback
- show patrolread
- show securitykey индекс-ключа
- set security=on # заметьте, что off - нет
- show health # только Nytro
- show smart # только SATA, если не умеете воспринимать SMART в двоичном виде
- show diag smartlog # не работает
- show diag errorlog # не работает
- show poh [ignoreselftest] # рабочих часов; запускает самотестирование
- show phyerrorcounters
- show errorcounters
- reset phyerrorcounters
- reset errorcounters type={1|2} # 1 - ошибки устройства, 2 - ошибки слота
- set offline # может вызвать ввод диска горячей замены, в этом случае устройства переходит в состояние Unconfigured Good
- set missing # объявить диск пропавшим (предварительно необходимо перевести в offline)
- set good [force] # объявить диск хорошим несконфигурированным
- set online # в самом крайнем случае
- show jbod [all]
- set jbod [all]
- del jbod [force]
- set bootdrive={on|off}
- add hotsparedrive [dgs=номер-группы-дисков[,...]] [enclaffinity] [nonrevertible] # dgs - привязать к группе;
enclaffinity - привязать к корзине, удалить привязку к корзине невозможно
- delete hotsparedrive
- insert dg=номер-группы-дисков array=номер-упряжки row=номер-строки # заменить диск, помеченный как пропавший (missing), и начать восстановление
- start {initialization | patrolread | locate | rebuild | copyback target=корзина:слот} # copyback позволяет заменить устройство без деградации массива
- stop {initialization | patrolread | locate | rebuild | copyback} # остановленное продолжить нельзя!
- pause {rebuild | copyback} # можно продолжить по resume
- resume {patrolread | rebuild | copyback}
- suspend patrolread # (продолжить нельзя!)
- spindown
- spinup
- secureerase [force] # для самошифруемого диска (SED)
- start erase [simple|normal|thorough|crypto|standard] [erasepatternA=двоичный-шаблон-байта] [erasepatternB=двоичный-шаблон-байта}
# очистка не SED устройств; simple - 1 проход, normal - 3 прохода, thorough - 9 проходов
- show erase # не работает ("Not in progress "); следить можно только по журналу (termlog)
- stop erase # (продолжить нельзя!);
"stop erase" не работает ("/c0/e12/s0 Failure 1001 Operation not allowed."),
при этом стирание продолжается и никакие другие команды над диском не выполняются
- download src=имя-файла [satabridge] [parallel [force]] [mode=5|7|E|F] [offline] # замена прошивки устройства хранения;
satabridge - прошивка переходника; 5 - залить целиком, 7 - заливать кусками по 32КБ, E - параллельная загрузка, F - отложенная активация;
E и F - только в Offline
- download status
- show failedNvmeDevices
- start repair [force] # только SSD; что чинит? force - данные теряются
- show repair
- stop repair # контроллер переходит в состояние Need Attention
- start sanitize {cryptoerase | blockErase } [ause] # cryptoerase - стирает ключи, blockerase - данные
- start sanitize overwrite [ause] [invert] # записывает нули
- show sanitize # а stop нет!
- show dpmstat type={HIST | LCT | RA | EXT} [logfile[=имя-файла]] # выдача собранной статистики: HIST - гистограмма задержек, задержки,
IOP и глубина очереди и скорость передачи и время ответа, количеств операций чтения и записи; LCT - долгие команды; RA - средние значения; EXT - прочее)
- для виртуального диска:
- add vd [type=]raid{0|1|5|6|00|10|50|60} [size=размер[,...] | all | remaining] [name=имя[,...]] drives=корзина:слот|корзина:от_слот-до_слот2{,...}
[PDperArray=количество] [SED] [pdcache=on|off|default] [pi] [DimmerSwitch=default|automatic|none|maximum|MaximumWithoutCaching] [wt|wb|awb]
[nora|ra] [direct|cached] [cachevd] [unmap] [Strip={8|16|32|64|128|256|1024}] [AfterVd=номер-логического-диска]
[Spares=корзина:слот|корзина:слот-слот{,...}] [force] [EmulationType=0|1|2] [ExclusiveAccess] [Cbsize=число] [Cbmode=число]
# команда на уровне контроллера; создание нескольких массивов виртуальных дисков
- при указании размера (по умолчанию - всё место) можно использовать множители kb, mb, gb (двоичные или десятичные?)
- имена (до 15 символов) настолько незначимы, что могут совпадать
- устройства записи должны иметь одинаковый размер сектора
- якобы pdcache (кеш записи устройства) по умолчанию наследуется от настроек контроллера
(но нет средств для настройки этого параметра контроллера)
- экономия энергии по умолчанию из настроек контроллера (в реальности не реализована?)
- по умолчанию режим прямого доступа (direct)
- по умолчанию кеширование записи включено при наличии батарейки (wb); awb - кеширование включено всегда
- по умолчанию предварительное чтение включено (ra)
- pi (что это?)
- cachevd - разрешить кеширование этого виртуального устройства на SSD (CacheCade)
- размер полоски по умолчанию - 64 KiB
- AfterVd - якобы номер VD будет браться больше указанного, в реальности VD нумеруются от 239 вниз
- EmulationType : см. ниже
- ExclusiveAccess - только 1 сервер получит доступ
- Cbsize - см. ниже
- Cbmode - см. ниже
- add vd {cachecade|nytrocache} [type=]raid{0|1|10|R1EC} drives=корзина:слот|корзина:слот-слот{,...} [wt|wb] [assignvds={0|1|2}] [BOOTVOLSIZE=размер]
# создание виртуального устройства CacheCade и использование его для кеширования указанных виртуальных устройств
- del [cachecade] [discardcache] [force] # force не дожидается завершения записи из кеша, discardcache - даже не начинает запись
- delete preservedcache [force] # данные, закешированные для исчезнувшего диска
- set accesspolicy={rw|ro|blocked|rmvblkd} # rmvblkd - удалённое или блокированное?!
- set iopolicy={cached|direct}
- set name=имя # до 15 символов, к сожалению, это имя не представляется для ОС
- set pdcache={on|off|default} # разрешить кеш записи на устройстве хранения
- set rdcache={ra|nora} # режим предварительного чтения
- set ssdcaching={on|off} # использовать CacheCade для этого виртуального устройства
- set wrcache={wt|wb|awb} # режим кеширования записи (awb - всегда кешировать запись)
- set HostAccess={ExclusiveAccess|SharedAccess} # для кластерного контроллера
- set emulationType={0|1|2} # 0 (по умолчанию) - виртуальные диски показываются как 512e при наличии физических 512e и как 512n в отсутствии,
1 - виртуальные диски показываются как 512n, 2 - виртуальные диски показываются как 512e
- set hidden={on|off} # скрыть от ОС
- set cbsize={0|1|2} cbmode={0|1|2|3|4|7} # управление алгоритмом пропуска данных мимо кеша;
cbsize=0 - 64KB, 1 - 128KB, 2 - 256KB;
cbmode=0 - интеллектуальный, 1 - стандартный, 2 - Custom1, 3 - Custom2, 4 - Custom3, 7 - отключить;
речь про свой кеш или CacheCade?
- set ds={Default|Auto|None|Max|MaxNoCache} # режим энергосбережения (не реализовано)
- set autobgi={on|off} # если виртуальный диск уже создан, то какой смысл менять режим автоматической инициализации?
- set pi=off # (что это?)
- set bootdrive={on|off}
- set unmap={on|off} # SCSI UNMAP и SATA TRIM?
- show # выводит номер группы дисков, номер виртуального диска, тип RAID, состояние, тип доступа (RO, RW), консистентность,
режим предварительного чтения, режим кеширования записи, доступ прямой или через кеш, [фоновые задачи], размер, имя
- show all [logfile[=имя-файла]] # storsas.log;
дополнительно выводит информацию о дисках, размер полоски, количество блоков, ширину упряжки, число дисков в упряжке,
режим кеширования на диске, зашифрованность, наличие операций, видимость для ОС, дата и время создания, тип пропуска кеширования и параметр,
готовность для ОС, SCSI Id
- show unmap # 9266: SCSI Unmap not supported
- start init [full] [force] # быстрая инициализация не обеспечивает консистентность;
в любом случае данные не трогаются, только пересчитываются контрольные суммы
- show init
- stop init # продолжить нельзя
- start erase [simple|normal|thorough|standard][patternA=шаблон]
- show erase
- stop erase
- start migrate type=RAID{0|1|5|6} [option={add|remove} drives=корзина:слот{,...}] [force] #
преобразование массива [с добавлением или изъятием устройства хранения] [в другой тип];
RAID5 и 6 нельзя преобразовать в RAID1;
массив должен быть в отличном состоянии
- show migrate # техпис путается в показаниях - называет то миграцией, то реконструкцией
- start cc [force] # проверка цельности (Consistency) массива; force требуется для неициализированного массива
- show cc # проверка консистентности
- stop cc # без возможности продолжить
- pause cc # с возможностью продолжить
- resume cc
- show bgi # ход фоновой инициализации
- show autobgi # параметры фоновой инициализации
- set autobgi={on|off}
- stop bgi # возобновить нельзя; команды start нет, запускается автоматически через 5-7 минут после создания группы дисков и виртуальных устройств
- pause bgi
- resume bgi
- expand size=МБ [expandarray] # увеличить виртуальный диск за счёт свободного места группы дисков,
expandarray - увеличить размер группы дисков после замены дисков на бОльшие диски;
размер округляется дважды в процессе передачи параметра (к целым процентам!), так что попасть нелегко;
остановка не предусмотрена, устойчивость в процессе сомнительна
- show expansion
- show BBMT # показать количество плохих блоков на логическом уровне с возможностью коррекции и без оной
- delete BBMT # удалить таблицу плохих блоков на логическом уровне
для работы в режиме JBOD
- set jbod # команда устройства хранения - превращает несконфигурированный диск в JBOD (без метаданных)
- delete jbod # команда устройства хранения
- add jbod [корзина:слот{,...}] # команда контроллера, по умолчанию превращает все хорошие несконфигурированные диски в JBOD
- set jbod # команда контроллера - превращает все хорошие несконфигурированные диски в JBOD
- show jbod [all] # команда устройства хранения: корзина, слон, номер в контроллере, состояние, интерфейс, тип хранения,
размер, размер блока, модель, изготовитель, порт; опять здесь нет серийного номера
- start init [full] [force] # команда устройства хранения
- show init # команда устройства хранения
- stop init # команда устройства хранения
- start erase [simple|normal|thorough] # команда устройства хранения, стирание обычных (не SED) дисков
- show erase # команда устройства хранения
- stop erase # команда устройства хранения
- set bootfrive={on|off} # команда устройства хранения
для внешней конфигурации (на дисках конфигурация есть, а в контроллере - нет; всегда указывается "/fall")
- show [all] [securitykey=ключ]
- import [preview] [securitykey=ключ] # preview - кому?
- delete [securitykey=ключ]
для группы устройств хранения
- show # выводит:
тип RAID, состояние, наличие фоновых задач, размер, использование кеша дисков, PI, SED, экономия энергии, наличие свободного места;
для каждого устройства хранения - номер группы, номер в группе (Row), номер корзины и слота в корзине, идентификатор устройства в контроллере,
состояние, наличие фоновых задач, размер, использование кеша дисков, PI, SED, режим экономии энергии, готовность к переносу
- show all # дополнительно выводит информацию о логических и физических дисках, свободное пространство;
при указании "/dall" раньше выводился список свободных слотов, а теперь нет
- show cachecade
- show mirror # ныне не поддерживается, также как split и add
- split mirror # разбиение зеркала на 2 виртуальных устройства (какого типа?); только из UEFI
- add mirror src={0|1|2} [force] # ?
- set hidden={on|off}
- set security=on
для Cache Vault
- show [status | learn | all] # модель, состояние, температура, дата изготовления;
learn - тип самотестирования, следующая дата, интервал, дата последнего успеха;
status дополнительно - состояние кеша, потребность замены, недостаток места, необходимость обновления, накопленная энергия, процент;
all дополнительно к status - серийный номер и версия модуля, изготовитель, накопленная энергия по конструкции, размер кеша,
версия и серийный номер конденсатора, дата изготовления конденсатора, версия платы и конденсатора
- start learn
для корзины
- show # выводит номер, состояние, количество слотов, устройств хранения, БП, вентиляторов, термометров, звучков, SIM (?), портов, название модели и прошивка
- show all # дополнительно выводит позицию (?), порты, тип (SES), состояние, серийные номера (отсутствуют), изготовитель и модель, UUID (?), адрес (SAS)
- show status [extended] # выводит состояние каждого обнаруженного слота, БП, вентилятора, термометра, звучка, напряжения питания и датчика взлома (?)
- show phyerrorcounters
- download src=имя-файла [mode=5 | [forceActivate] mode=7 | mode={e|f} offline] # замена прошивки, без проверки
для канала PHY
- show # топология - для каждого Phy: номер, SAS адрес (один на всех), идентификатор Phy, скорость, тип устройства (Edge Expander), порт, ограничения скорости
- show all # топология и ошибки
- show phyerrorcounters # не поддерживается, есть для корзины и устройства
- set linkspeed={0|1.5|3|6|12} # 0 - автоматический выбор
- compare linkspeed={0|1|2|3} # только для IT
для интерфейса PCIe к устройствам хранения
- show # топология - для каждой линии: номер линии (Lane), идентификатор линии, разрешено, соединение (0 и 1), скорость, WWID, поддерживаемые скорости,
тип синхронизации (Common Clocking), тип устройства
- set lanespeed={2.5|5|8|16}
для батарейки BBU
- show # выводит модель, состояние, температуру, дату изготовления, дату следующего тестирования, способность удержания и потраченная часть
способности
- show status # вывод модель, напряжение, ток, температуру, состояние общее и состояние компонент,
- show properties # параметры периодической проверки
- show all # status + properties + ёмкость, серийный номер, версию, тип химии, FRU
- set bbuMode=режим # режим 0 - 48 часов удержания при 60 градусах и ежегодной замене
- set learndelayinterval=часов
- set powermode=sleep # выход через 5 секунд (?)
- set writeaceess=sealed # для изготовителя
- start learn
- start retentiontest
Пример замены дисков (после вставки UNCONFIGURED_GOOD, Foreign Configuration Detected):
/opt/MegaRAID/storcli/storcli64 /c0/e8/s7 insert dg=0 array=0 row=7 # from UNCONFIGURED_GOOD to OFFLINE
/opt/MegaRAID/storcli/storcli64 /c0/e8/s14 insert dg=0 array=0 row=14
/opt/MegaRAID/storcli/storcli64 /c0/e8/s7 start rebuild # from OFFLINE to REBUILD
/opt/MegaRAID/storcli/storcli64 /c0/e8/s14 start rebuild
/opt/MegaRAID/storcli/storcli64 /c0/e8/s7,14 show rebuild
Изменения от 1.02.08 до 1.13.06: AdpRestart, FastPath для отдельного устройства, NCQ для отдельного устройства,
сброс настроек на фабричные, adpsetsata, adpdiag, adpshutdown, подписанные прошивки, удалено обновление прошивок дисков,
управление списком плохих блоков (даже не показывает), show health, можно посмотреть и сбросить количество ошибок
(show phyerrorcounters) для ящика и диска, проверка памяти контроллера (и где?),
поддержка 128 устройств на полке, разбивка и сборка зеркала, обновление прошивки батарейки (GG - GasGauge).
Изменения от 1.13.06 до 1.18.05: можно посмотреть и сбросить количество ошибок для SATA устройств (show phyerrorcounters),
поддержка кеширования записи (write-back) для не-RAID режимов, включение и выключение кеша диска для не-RAID режимов,
включение и выключение SED (самошифрование) для не-RAID режимов, включение и выключение эмуляции 512-байтных блоков,
создание RAID00, поддержка HA (Synchro), объединение групп дисков нечётного размера в RAID0 (span),
вывод данных SMART для SATA устройств (шестнадцатеричный дамп ;), установка интервалов опроса температуры SSD и НЖМД,
возможность обновления прошивки без перезагрузки (resetnow), возможность автоматического объявления диска неисправным при ошибках SMART,
CacheCade 2.5 (максимальный размер увеличен до 2TiB), сохранение конфигурации в двоичный файл (get) и восстановление (set),
поддержка Large IO (1МБ), поддержка очереди большой глубины.
Изменения от 1.18.05 до 1.23.02: новые команды (?) для новых свойств (?) контроллера, HDDThermalPollInterval, SSDThermalPollInterval,
параллельная загрузка прошивки НЖМД, установка параметров multipath.
При передаче дел от LSI к Avago, а затем Broadcom была проведена перенумерация (Unified StorCLI) от 1.23.02 до 007.0166:
прощай официальная поддержка старых (до 93xx) устройств. Неофициально работает.
Изменения от 007.0166 до 007.0504: прошивка CPLD для HBA, всегда выводится версия.
Далее пропал информативный список изменений.
Изменения от 007.2408 до 007.2508: исправление ошибок.
Изменения от 007.2508 до 007.2612: исправление ошибок, ещё больше JSON, новые профили, "storcli /cx/px show phyevents".
Изменения от 007.2612 до 007.2705: исправление ошибок.
Изменения от 007.2705 до 007.2707: исправление ошибок.
Для контроллеров SAS4 произошла смена на storcli2 (StorCLI Avenger 008.0007.0000.0012).
storcli2 не видит контроллеры 92xx.
Утилита MegaCLI (/opt/MegaRAID/MegaCli/MegaCli64) предназначена для
управления RAID контроллерами фирмы LSI Logic, например, MegaRAID SAS 9266-8i
Установка выполнена в виде 2 пакетов Lib_Utils-1.00-09.noarch.rpm
(/opt/lsi/3rdpartylibs/) и MegaCli-8.07.10-1.noarch.rpm (/opt/MegaRAID/MegaCli/).
Чудовищно неудобный интерфейс, к счастью, они доделали storcli.
Примеры:
/opt/MegaRAID/MegaCli/MegaCli64 -CfgDsply -a0 # общее состояние
/opt/MegaRAID/MegaCli/MegaCli64 -EncInfo -a0 # состояние дисковой полки
/opt/MegaRAID/MegaCli/MegaCli64 -pdInfo -PhysDrv[25:0] -a0 # информация о диске в слоте 0 корзины 25
/opt/MegaRAID/MegaCli/MegaCli64 -ldinfo -l0 -a1 # узнать состояние
/opt/MegaRAID/MegaCli/MegaCli64 -PDMakeGood -PhysDrv[25:0] -a0 # объявить плохой (BAD) диск хорошим, на диск в состоянии Failed не действует
/opt/MegaRAID/MegaCli/MegaCli64 -AdpSetProp ReconRate -100 -a1 # увеличить приоритет реконструкции до максимума
/opt/MegaRAID/MegaCli/MegaCli64 -ldrecon -start -r6 -add -physdrv[16:16] -l0 -a1 # добавление 17-го диска в RAID6
/opt/MegaRAID/MegaCli/MegaCli64 -ldrecon -showprog -l0 -a1 # следить
/opt/MegaRAID/MegaCli/MegaCli64 -AdpEventLog -GetEvents -f имя-файла.log -aALL # сохранить журнал
Фирма 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);
можно настроить, чтобы устройство спрашивало пароль при каждом изменении конфигурации
- поддерживаемые типы RAID: Non-RAID, RAID-0, RAID-1, RAID-1+0 (RAID-10, RAID-1 объединённые в RAID-0),
RAID-3, RAID-5,
RAID-50 (RAID-5 объединённые в RAID-0), RAID-3+0, RAID-5+0
- имеется журнал событий (до 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
- обновить драйвер (qus, PCI Dual Ultra3 SCSI Host Adapter, x6758A,
isp10160 HBA Driver 1.5, patchadd 112697-05)
- обновить Sun StorEdge Configuration Service
- обновить версию 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):
- развернуть архив
- cd /opt/SUNWsscs/sbin
- ./s3kdlres файл.xml --device=ip-адрес --password=пароль
- указать адрес файла SUN421E-3310.bin
- замечена команда: "sccli -y -w '***' адрес download controller-firmware --reset --dont-reset-nvram"
- вернуться к скрипту и ответить "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 (одностороннюю и двухстороннюю,
имя можно задать только в командной строке - "create chap-record name имя secret пароль" и "set iscsi-parameters chap enabled"),
согласование скорости, Jumbo кадры, iSNS;
- каждый контроллер имеет ECC модуль памяти 1024MB
для кеширования данных (512MB на чтение, 512MB на запись, из которых 256MB под локальный кеш,
а оставшиеся 256MB на зеркало кеша второго контроллера (SimulCache) - отключаемо
(режим independent cache performance mode) с перезагрузкой контроллеров);
модуль из конденсатора и флеш-памяти для обеспечения сохранности кеша при отключении питания
- Ethernet канал для управления на каждом контроллере
(10/100BASE-T, индикаторы подключения и активности, адрес можно получить по DHCP или задать вручную;
при смене настроек может потребоваться перезагрузка контроллера управления ("restart mc a") с консоли
по умолчанию - 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 каналов
- имеется возможность получения статистики о количество запросов на
чтение/запись с разбиением по количеству секторов в запросе, но суммы не совпадают
(где-то он путается, но потыркав в логические диски можно получить правдоподобный результат)
- поддержка RHEL 4 (32/64), RHEL 5 (32/64), SLES 9, SLES 10, VMware ESX 3.5 (32/64)
- дополнительно закупаемое ПО 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 - основные ошибки одноконтроллерной версии остались
- максимальная достигнутая мной скорость - 5.125 Gbps (625MB/s): по 3 диска (150 MB/s каждый) в режиме NRAID
через 2 порта одновременно
Тестирование скорости с помощью bonnie++
RAID-0 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
Chunk Size : 64KB, оптимизация упреждающего чтения автоматическая, по умолчанию
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
2 70000M 102553 12 55371 5 184087 6 430.3 0
3 70000M 131077 15 75538 7 292132 13 532.7 0
4 70000M 149183 17 79300 8 258126 14 574.8 0
5 70000M 194501 23 98743 10 346520 17 634.5 0
6 70000M 214002 25 107817 12 379969 19 649.4 0
8 70000M 242218 29 116467 13 373382 21 699.8 1
12 70000M 265360 31 125728 15 341852 19 731.8 1
RAID-10 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
4 70000M 100837 12 56266 6 184465 10 602.6 0
8 70000M 178517 21 92754 10 349848 20 735.3 1
12 70000M 212653 25 106621 12 366181 21 747.9 1
RAID-50 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
2 группы по 6 70000M 174710 21 96354 11 373342 22 728.7 0
3 группы по 4 70000M 186787 22 100600 11 384155 21 735.0 1 stride=48
4 группы по 3 70000M 167989 20 91020 11 377848 22 723.0 1
программный RAID-0 из аппаратных RAID-5 на 12 дисках
pvcreate --metadatasize 250k /dev/sdX
vgcreate test /dev/sdX ...
lvcreate --name test --size 1000G --stripes N --stripesize 256 test
mke2fs -j -v -m 0 -L raid5lvm -F -E stride=64,resize=4026531840 /dev/test/test
2 RAID-5 по 6 70000M 206390 25 111458 10 374298 13 736.2 1
3 RAID-5 по 4 70000M 227099 28 117402 11 383920 15 731.2 1 --stripesize 256, stride=64
3 RAID-5 по 4 70000M 227976 28 114904 11 337288 13 688.2 1 --stripesize 128, stride=32
3 RAID-5 по 4 70000M 229970 28 123886 13 390505 19 713.7 1 --stripesize 512, stride=128
RAID-6 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
4 70000M 36873 4 17997 1 53444 2 349.5 0 в процессе инициализации
4 70000M 63670 7 38334 4 174501 9 403.4 0
5 70000M 39123 4 21356 2 70664 3 315.9 0 в процессе инициализации
5 70000M 79752 9 50187 5 272188 14 469.0 0
6 70000M 41005 4 31172 3 119483 6 348.9 0 в процессе инициализации
6 70000M 96113 11 69414 7 309956 17 419.9 0 в процессе инициализации других массивов
7 70000M 94743 11 60511 6 319309 17 464.7 0
8 70000M 102035 12 64456 7 358320 21 560.5 1
10 70000M 108381 13 68288 8 358073 21 639.1 0
11 70000M 111613 13 75990 9 358021 20 678.0 0
12 70000M 105093 12 65210 7 358328 21 667.4 0
12 70000M 32013 3 18330 2 108484 6 257.2 0 stride=192, в процессе инициализации
12 70000M 104753 12 66509 7 353305 19 623.6 0 stride=192
12 70000M 60431 7 42133 5 348516 19 548.5 0 write-through
12 70000M 105530 12 66456 7 345446 17 587.3 0 Super Seq
12 70000M 105564 12 59943 7 252558 14 742.5 0 disable read ahead
12 70000M 103455 12 54955 6 147436 8 490.4 0 verify vdisk
12 70000M 102950 12 55329 6 165259 9 476.8 0 Media Scrub
12 70000M 92934 11 60056 6 324321 18 631.1 1 без одного диска
12 70000M 69466 8 29889 3 66511 3 434.5 0 без двух дисков
12 70000M 30106 3 8400 0 15417 0 319.0 0 во время восстановления 2 дисков
RAID-5 из N дисков 1TB Seagate ST31000340NS SATA-2 7200rpm
3 70000M 42334 5 21988 2 74152 3 297.3 0 в процессе инициализации
3 70000M 74033 8 44589 4 184143 10 423.4 0 в процессе инициализации других массивов
3 70000M 74337 8 44193 4 185166 10 429.6 0
4 70000M 84052 10 52809 5 252145 14 432.7 0 в процессе инициализации других массивов
5 70000M 106571 12 64520 7 315761 16 513.9 0
6 70000M 37603 4 29330 3 112317 6 500.6 0 в процессе инициализации
6 70000M 113185 13 66457 7 335388 18 479.1 0 в процессе инициализации других массивов
10 70000M 133464 21 79293 12 355243 25 600.8 3
11 70000M 140085 16 81787 9 379964 22 711.3 1
12 70000M 141929 18 83381 10 376638 22 716.9 1
RAID-6 из 12 дисков 2TB Seagate ST200NM0011 SATA-2 7200rpm
QLE2562 через FC коммутатор в 2 порта MSA
2xXeon X5570 с HT, CentOS 6.2
multipath policy=queue-length
mkfs.xfs -L raid6of12 -d su=64k,sw=10 -l su=64k /dev/mapper/raid6of12_v001
mount -o nodiratime,attr2,logbufs=8,logbsize=65536 /dev/mapper/raid6of12_v001 /mnt
bonnie++ 1.96 100000M 410861 25 170206 17 550223 30 576.5 42
Latency 62767us 130ms 75183us 43089us
восстановление данных с 2 серверов хранения в 2 потока - 185 MB/s (4.4 TB, 5.2 млн файлов)
- 160 MB/s (15 TB, 22 млн файлов)
чтение восстановленного (1.2TB)
find share3h|cpio -oa|dd bs=1024k of=/dev/null - 184 MB/s
tar -cf - share3h|dd ibs=1024k of=/dev/null - 218 MB/s
в 2 потока одновременно (разные куски) - 173 MB/s
копирование (1.2TB)
tar -C copy1 -cf - share3h|dd bs=1024k|tar -C copy2 -xf - - 92.3 MB/s
в 2 потока одновременно - 77.7 MB/s
mkfs.ext4 -L raid6of12 -E stride=16,stripe_width=160,lazy_itable_init=1,lazy_journal_init=1 \
-m 0 -N 100000000 -v -G 64 -J size=512 /dev/mapper/raid6of12_v001
mount -o nodiratime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=160,\
delalloc,commit=60,max_batch_time=30000,min_batch_time=1000,init_itable=0
подождать завершения инициализации перед тестированием
восстановление данных с 2 серверов хранения по 2 потока - 315 MB/s (1.6 TB, 2.2 млн файлов)
восстановление данных с 2 серверов хранения по 2 потока - 280 MB/s (3.6 TB, 4 млн файлов)
восстановление данных с 2 серверов хранения по 2 потока - 240 MB/s (15 TB, 22 млн файлов)
чтение восстановленного: "tar -cf - share3h|dd ibs=1024k of=/dev/null" - 227 MB/s (1.2TB)
чтение восстановленного в 2 потока одновременно (разные куски) - 160 MB/s (300GB)
копирование: "tar -C copy1 -cf - share3h|dd bs=1024k|tar -C copy2 -xf -" - 123 MB/s (1.2TB)
fsck.ext4 потребовала 10 минут и 1GB ОЗУ (15 TB, 22 млн файлов)
mkfs.btrfs --data single --metadata single
mount -o nobarrier,compress=lzo-force,space_cache
восстановление данных с 2 серверов хранения по 2 потока - 311 MB/s (1.1 TB)
отключил HT
mkfs.btrfs --data single --metadata single
mount -o nobarrier,compress=lzo,space_cache
восстановление данных с 2 серверов хранения, 3 потока - 311 MB/s (1.1 TB)
Низкоуровневые тесты (multipath по FC - 2 порта сервера и 2 порта полки)
показывают ограничение в 640000 КБ/сек, что не удивительно т.к. в качестве SAS контроллера стоит LSI 1068 (плюс экспандер),
а это PCI-X 64bit @ 133 MHz (возможно - по крайней мере при старте - @ 100 MHz),
а это 8.5 Gbps (6.4 Gbps); кстати, это объясняет медленную инициализацию RAID6 (12 чтений и 2 записи для каждого
блока): 640000/14 = 45 KB/s):
перезапись: badblocks -svw -p 999 -b $[1024*1024] /dev/sda 100
367948.80 KB/s туда и столько же обратно (6028473139.20 bps)
sda 0.00 0.00 181.80 177.60 93081.60 90931.20 1024.00 47.83 134.34 2.37 85.02
sdb 0.00 0.00 178.10 181.80 91187.20 93081.60 1024.00 46.61 130.60 2.37 85.12
sdg 0.00 0.00 180.40 179.65 92364.80 91980.80 1024.00 51.00 142.23 2.36 85.14
sdh 0.00 0.00 178.35 181.80 91315.20 93081.60 1024.00 47.76 132.47 2.37 85.36
чтение из буфера: badblocks -sv -p 9999 -b $[1024*1024] /dev/sdc 100
sda 0.00 0.00 628.50 0.00 321792.00 0.00 1024.00 52.39 82.94 1.58 99.41
sdh 0.00 0.00 628.75 0.00 321920.00 0.00 1024.00 51.87 82.21 1.58 99.37
или
sda 0.00 0.00 314.65 0.00 161100.80 0.00 1024.00 53.47 170.87 3.17 99.69
sdb 0.00 0.00 315.35 0.00 161459.20 0.00 1024.00 60.49 193.51 3.16 99.67
sdh 0.00 0.00 314.65 0.00 161100.80 0.00 1024.00 55.37 176.96 3.17 99.64
sdi 0.00 0.00 315.40 0.00 161484.80 0.00 1024.00 58.72 186.41 3.16 99.68
Попытка обхода аппаратного RAID-контроллера - все 12 дисков подключаются как отдельные диски,
6 штук к HBA port 0 и MSA port 1, вторая шестёрка к HBA port 1 и MSA port 2, никаких multipath
mdadm --create /dev/md/raid6of12 --verbose --raid-devices=12 --level=raid6 --name=raid6of12 --chunk=64 /dev/sd{a,b,c,d,e,f,g,h,i,j,k,l}
mdadm: layout defaults to left-symmetric
mdadm: size set to 1951543424K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/raid6of12 started.
echo 2048 > /sys/block/md127/md/stripe_cache_size # измеряется в кол-ве страниц * на кол-во устройств
mkfs.ext4 -L raid6of12ext4 -E
stride=16,stripe_width=160,lazy_itable_init=1,lazy_journal_init=1 -m 0 -N 100000000 -v -G
64 -J size=512 /dev/md/raid6of12
mke2fs 1.42 (29-Nov-2011)
fs_types for mke2fs.conf resolution: 'ext4', 'huge'
Filesystem label=raid6of12ext4
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=16 blocks, Stripe width=160 blocks
100054752 inodes, 4878858560 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
148891 block groups
32768 blocks per group, 32768 fragments per group
672 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
2560000000, 3855122432
Allocating group tables: done
Writing inode tables: done
Creating journal (131072 blocks): done
Writing superblocks and filesystem accounting information: done
mount -o nodiratime,relatime,data=writeback,nobh,nobarrier,journal_checksum,journal_async_commit,stripe=160,delalloc,commit=60,max_batch_time=30000,min_batch_time=1000,init_itable=0 /dev/md/raid6of12 /mnt
перед тестами подождать завершения инициализации (lazy_itable_init)
очень медленно
for disk in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl ; do echo deadline > /sys/block/$disk/queue/scheduler; done
не помогло
for disk in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl ; do echo 1 > /sys/block/$disk/queue/iosched/fifo_batch; done
не помогло
set cache-parameters read-ahead-size disable vd12_v001
стало хуже
or disk in sda sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl ; do echo 0 > /sys/block/$disk
# 128/bdi/read_ahead_kb; done
без изменений
echo 640 > /sys/block/md127/bdi/read_ahead_kb # 1280
без изменений
bonnie++ -d /mnt/temp -s 100000 -n 10:1200000:2000:1000 -u ... -f
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s87.cs.niis 100000M 233291 18 217217 18 676717 24 514.7 49
Latency 1126ms 372ms 73757us 51673us
Version 1.96 ------Sequential Create------ --------Random Create--------
s87.cs.niisi.ras.ru -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
10:1200000:2000/1000 477 17 10953 100 8742 81 441 15 10883 99 8298 79
Latency 1868us 324us 214us 2465us 216us 261us
bonnie++ -d /mnt/temp -s 200000 -n 100:1200000:2000:1000 -u ... -f
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s87.cs.niis 200000M 254317 20 224694 19 604162 24 362.4 48
Latency 1494ms 479ms 104ms 50660us
Version 1.96 ------Sequential Create------ --------Random Create--------
s87.cs.niisi.ras.ru -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
100:1200000:2000/1000 593 21 222 7 14449 87 598 22 69 2 12838 94
Latency 527ms 390ms 29019us 328ms 270ms 559us
2 * bonnie++ -d /mnt/temp -s 200000 -n 100:1200000:2000:1000 -u ... -f
каждый по
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s87.cs.niis 200000M 142320 12 100272 8 206452 8 304.3 31
Latency 1626ms 407ms 189ms 98392us
Version 1.96 ------Sequential Create------ --------Random Create--------
s87.cs.niisi.ras.ru -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
100:1200000:2000/1000 290 11 79 3 15541 73 277 11 31 1 11283 64
Latency 827ms 206ms 255ms 527ms 884ms 1344ms
3 * bonnie++ -y s -d /mnt/temp -s 200000 -n 100:1200000:2000:1000 -u ... -f
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s87.cs.niis 200000M 91630 8 67441 5 133159 5 242.0 20
Latency 3426ms 497ms 452ms 543ms
Version 1.96 ------Sequential Create------ --------Random Create--------
s87.cs.niisi.ras.ru -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
100:1200000:2000/1000 179 7 56 2 14904 67 188 8 26 1 14470 69
Latency 2646ms 232ms 793ms 1428ms 1954ms 5871us
для сравнения
bonnie++ -d /dev/shm -s 40000 -n 50:1200000:2000:1000 -u ... -f -r 20000
Version 1.96 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s87.cs.niisi 40000M 2458481 99 2894431 99 6046942 99 +++++ +++
Latency 70us 59us 61us 56us
Version 1.96 ------Sequential Create------ --------Random Create--------
s87.cs.niisi.ras.ru -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
50:1200000:2000/1000 4281 99 7910 99 19562 98 4326 99 8665 99 20529 99
Latency 595us 880us 437us 597us 369us 572us
cat /sys/block/sd?/bdi/read_ahead_kb
128
echo 16384 > /sys/block/md127/md/stripe_cache_size
echo 0 > /proc/sys/vm/vfs_cache_pressure
cat /sys/block/md127/bdi/read_ahead_kb
1280
восстановление в 1 поток (share3h_s192 от 2012-02-19, 2356043 файлов, 1.301 TB разжимается в 3,859,036,704,975 ) - 175826.3 KB/s
восстановление в 2 потока (share3h_s192 и share3h_s196 от 2012-02-19) - 7.3TB, 9.5 млн файлов
nodiratime,relatime,data=ordered,journal_checksum,stripe=160 - 166 MB/s
nodiratime,relatime,data=writeback,journal_checksum,stripe=160 - 170 MB/s, фрагментация - 1.009
nodiratime,relatime,data=ordered,commit=60,journal_checksum,stripe=160,init_itable=0 - 181MB/s
nodiratime,relatime,data=writeback,commit=60,journal_checksum,stripe=160,init_itable=0,nobh,nobarrier,max_batch_time=30000,min_batch_time=1000 - 185MB/s
без журнала
mkfs.ext4 -L raid6of12ext4 -E stride=16,stripe_width=160,lazy_itable_init=1 -m 0 -N 100000000 -v -G 64 -O '^has_journal' /dev/md/raid6of12
mount -o nodiratime,relatime,data=ordered,commit=60,stripe=160,init_itable=0, nobh,nobarrier,max_batch_time=30000,min_batch_time=1000
179 MB/s
mkfs.ext4 -L raid6of12ext4 -E stride=16,stripe_width=160,lazy_itable_init=1 -m 0 -N 100000000 -v -G 64 -J size=512 /dev/md/raid6of12
mount -o nodiratime,relatime,data=writeback,commit=60, journal_checksum,journal_async_commit, \
stripe=160,init_itable=0,nobh,nobarrier,max_batch_time=30000,min_batch_time=1000
echo 32768 > /sys/block/md127/md/stripe_cache_size
tar -C /mnt -cf - share3h|dd ibs=1024k of=/dev/null
3861358141440 bytes (3.9 TB) copied, 16860 s, 229 MB/s, скорость падает до нуля на длительные (более часа) периоды
после дефрагментации - 226 MB/s
set cache-parameters read-ahead-size disable vd??_v001 и прочее - 224 MB/s
tar -C /mnt -cf - share3h|dd bs=1024k|tar -C /mnt/copy2 -xf -
3861358141440 bytes (3.9 TB) copied, 35323.3 s, 109 MB/s, скорость копирования падает до нуля на длительные (более часа) периоды
чтение этой копии после дефрагментации - 295 MB/s
mdadm --create /dev/md/raid6of12 --verbose --raid-devices=12 --level=raid6 --name=raid6of12 --chunk=512 /dev/sd{a,b,c,d,e,f,g,h,i,j,k,l}
mkfs.ext4 -L raid6of12ext4 -E stride=128,stripe_width=1280,lazy_itable_init=1 -m 0 -N 100000000 -v -G 64 -J size=512 /dev/md/raid6of12
mount -o nodiratime,relatime,data=ordered,journal_checksum,stripe=1280,commit=60,init_itable=0 /dev/md/raid6of12 /mnt
echo 16384 > /sys/block/md127/md/stripe_cache_size
echo 0 > /proc/sys/vm/vfs_cache_pressure
echo 1024 > /sys/block/md127/bdi/read_ahead_kb
восстановление в 2 потока (share3h_s192 и share3h_s196 от 2012-02-19) - 7.3TB, 9.5 млн файлов
система перезагружается
mount -o nodiratime,relatime,data=ordered,journal_checksum,stripe=1280,init_itable=0 /dev/md/raid6of12 /mnt
echo 4096 > /sys/block/md127/md/stripe_cache_size
echo 100 > /proc/sys/vm/vfs_cache_pressure
echo 10240 > /sys/block/md127/bdi/read_ahead_kb
восстановление в 2 потока (share3h_s192 и share3h_s196 от 2012-02-19) - 7.3TB, 9.5 млн файлов - 182 MB/s
восстановление в 4 потока - 188 MB/s
чтение в 1 поток
tar -C /mnt/share3h --numeric-owner --delay-directory-restore -cf - eboris swa kochnov | dd bs=65536k of=/dev/null
218 MB/s, скорость падает до нуля на длительные (более часа) периоды
копирование восстановленного
tar -C /mnt/share3h --numeric-owner --delay-directory-restore -cf - eboris swa kochnov | dd bs=65536k|tar -C /mnt/copy2 -xf -
107 MB/s, скорость падает до нуля на длительные (более часа) периоды
чтение скопированного - 309 MB/s, скорость до нуля не падает
чтение скопированного в 2 потока - 134 MB/s и 176 MB/s
Кто-то тут захлёбывается при записи. Как позднее выяснилось (при исследовании XFS)
достаточно было достаточно было не накапливать для записи более половины кеша RAID контроллера, а начинать
запись на ранних стадиях.
Single Point of Connectivity Knowledge (SPOCK)
Фирма 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");
эксперимент по замене диска на Seagate ST4000DM000 (4TB) удался (требуется обновление прошивки)
- один или два 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: mini-USB - Type B, VT-100/ANSI, 115200, 8N1, без синхронизации
(Spare 592266-001 SPS-CABLE CLI USB - regular USB to mini USB cable, USB A to USB mini B);
загрузить модуль с параметрами: "modprobe usbserial vendor=0x210c product=0xa4a7 use_acm=1"
("modprobe usbserial vendor=0x210c product=0xa4a7; modprobe cdc-acm"?);
/dev/ttyACM0;
нажать 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;
неописанный пользователь admin с паролем "!admin" (не показывается по "show users"! права diagnostic и engineeringAdvanced);
посмотреть "show users admin"; поменять - "set password admin"
авторизация в 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 - в этой модели бесплатно
- добавлена возможность сбора статистики (не описана в документации):
по контроллеру (нагрузка ЦП, количество чтений, количество записей, прочитанных байт, записанных байт,
скорость ввода/вывода после предыдущего запроса в байтах),
порту (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт, глубина очереди),
группе дисков (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт),
тому (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт),
дискам (скорость ввода/вывода после предыдущего запроса в байтах и операциях,
количество чтений, количество записей, прочитанных байт, записанных байт);
имеется возможность обнулить счётчики (не работает для конфигурации с одним контроллером)
Различия версий (TS100 требуется обновлять до TS240/TS250 через TS230;
прошивки дополнительных полок обновляются по ходу дела; с первого раза обновились только SC и FPGA;
на второй раз обновился MC со сбросом паролей и чего-то ещё; CPLD не обновился совсем)
- TS250P003
- TS250P002: управление скоростью и дуплексностью управляющего порта, после реконструкции показывается количество ошибок,
расширены возможности команды trust, при очистке метаданных требуется подтверждение
- TS240P004-002: исправлено получение информации о пристяжной полке в одноконтроллерной конфигурации,
улучшен сбор (полгода хранения, время ожидания) и показ статистики (графики, CSV, статистика в CLI)
- TS240P003: SMI-S 1.5, управление журналами, ускорение расширения группы дисков (не измерял), в сообщения об ошибках включены рекомендации,
размер полоски можно (не нужно) увеличить до 512KB, переделано меню
- TS240P001
- TS230P008: поддержка дисков 4ТБ (SAS), закрыт доступ к файлу паролей (facepalm), добавлена проверка совместимости оборудования
- TS201P007
- TS201R015: сброс статистики, ускорено последовательное чтение с RAID1/RAID10
Тестирование скорости с помощью 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
Тестирование скорости с помощью bonnie++ (сервер - 2 Opteron 2356 (4 ядра, 2300 MHz), 32GB,
HBA QLogic ISP2532 8Gb, подключён 1 канал, нагрузка отсутствует, CentOS 7.2)
пристяжная полка (пустая), ext4, defaults
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s204.cs.nii 200000M 657797 91 257580 36 468557 37 692.5 7
Latency 232ms 3895ms 162ms 144ms
badblocks -sv -b 8192 -c 1024 /dev/sdc
435MB/s
пристяжная полка (пустая), read ahead maximum, ext4, defaults
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s204.cs.nii 200000M 657812 91 257869 36 456816 36 710.3 8
Latency 198ms 4252ms 134ms 49226us
badblocks -sv -b 8192 -c 1024 /dev/sdc
650MB/s
основная полка (заполнена на 2/3), ext4, defaults
Version 1.97 ------Sequential Output------ --Sequential Input- --Random-
Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
s204.cs.nii 200000M 516451 70 257074 36 470066 37 718.9 7
Latency 2152ms 3505ms 227ms 174ms
Удаление 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). Методы борьбы:
- предотвращение - самоограничение скорости записи
(cd /mnt/copy1; tar --files-from /tmp/listnull --null --sparse -cf -) | \
bfr -T 95 -b 512M -C 150000000 | \
tar -p --sparse --keep-old-files -xf -
- при первых признаках "перенасыщения" приостановка самого надоедливого процесса на пару секунд,
а в тяжёлых случаях сброс файлового кеша
#!/bin/bash
DEVICE=$1
PROCESS=$2
while true
do
QL=`iostat -d -k -x 1 $DEVICE 2|head -7|tail -1|awk '{printf "%d", $9}'`
if [ $QL -gt 100 ]
then
echo `date`: $QL
kill -STOP $PROCESS;
COUNTER=0
QL=`iostat -d -k -x 1 $DEVICE 2|head -7|tail -1|awk '{printf "%d", $9}'`
while [ $QL -gt 50 ]
do
echo ' ' $QL
sleep 1
QL=`iostat -d -k -x 1 $DEVICE 2|head -7|tail -1|awk '{printf "%d", $9}'`
COUNTER=$[$COUNTER+1]
if [ $COUNTER -gt 2 ]
then
echo ' ' reset
echo 1 > /proc/sys/vm/drop_caches
COUNTER=0
sleep 2
fi
done
kill -CONT $PROCESS;
fi;
done
Ощущения:
- безусловный приоритет записи над чтением, что как всякая несправедливость влечёт множество неприятных последствий
- 4 потока на vdisk уже много
Single Point of Connectivity Knowledge (SPOCK)
Фирма Xyratex является OEM изготовителем автономных дисковых массивов для крупных фирм
(например, DotHill кое-что покупал у них и перепродавал Sun Microsystems), но и под своим именем
продаёт кое-что (продавала, куплена фирмой Seagate в 2014 году).
В частности, массив 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, 150 метров по 50/125 или 70 метров по 62.5/125; 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)
- заявлена поддержка RHEL AS4 32 bit, RHEL5 32 bit, собственная реализация dm-multipath (svpm-dm)
- обновление прошивки подробно описано здесь
(всё остановить, прошить подключённые полки, прошить 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 -D -g -z name -l индекс-диска # вывести WWN диска
- LXCR -D -g -z status -u WWN-диска # состояние диска (0 - всё хорошо)
- LXCR -D -n # общее число дисков
- LXCR -F -n -z devicesinarray -l индекс-массива # число дисков в массиве
- LXCR -F -g -z encevents # вывести все сообщения журнала
- LXCR -F -g -z hostconfigstruct # вывести настройки логических томов (имя, размер, LUN, порт)
- LXCR -F -g -z allinfo # все настройки
- LXCR -C -g -z allinfo # вся информация о контроллере и его состоянии (восстановление, инициализация,
проверка, версии, напряжения, температуры (воздуха, ЦП, RAID), состояние батарейки
- LXCR -E -g -z sesinfo -l 1 # информация о дисковой полке и её состоянии (БП, вентиляторы, температуры, звучок)
Выдаёт хосту очень странные параметры логического устройства, например (sdb и sde - multipath к одному
логическому диску):
Nov 16 15:55:42 s87 kernel: device-mapper: table: 253:0: adding target device sdd caused an alignment inconsistency: physical_block_size=2097152, logical_block_size=512, alignment_offset=15872, start=0
Nov 16 15:55:42 s87 kernel: device-mapper: table: 253:0: adding target device sdd caused an alignment inconsistency: physical_block_size=2097152, logical_block_size=512, alignment_offset=15872, start=0
Nov 16 16:16:12 s87 kernel: sd 0:0:1:0: [sdb] physical block alignment offset: 3162112
Nov 16 16:16:12 s87 kernel: sd 1:0:1:0: [sde] physical block alignment offset: 6832128
Nov 16 16:16:12 s87 kernel: sd 0:0:1:0: [sdb] 16384-byte physical blocks
Nov 16 16:16:12 s87 kernel: sd 1:0:1:0: [sde] 2097152-byte physical blocks
s12_archive2_tm2 (360050cc000205ed4000000000000002b) dm-1 XYRATEX,F5412E
size=18T features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=0 status=active
|- 0:0:1:0 sdb 8:16 active undef running
`- 1:0:1:0 sde 8:64 active undef running
Тестирование производительности с помощью bonnie++
RAID-0 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, пленных не брать
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
2 70000M 154034 18 52089 5 105465 5 339.8 0
3 70000M 199079 23 66847 8 134836 7 412.3 0
4 70000M 198228 23 72659 9 152535 8 453.1 0
8 70000M 355126 43 97116 12 173164 9 555.8 0
12 70000M 366382 45 97940 12 171738 9 588.7 0
RAID-10 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64
4 70000M 130748 15 45017 4 92608 5 379.6 0
8 70000M 189578 23 65095 7 139989 8 500.4 0
10 70000M 194612 22 70603 8 145007 8 552.0 0
10 70000M 194612 22 70603 8 145007 8 552.0 0 stride=32
10 70000M 194612 22 70311 8 146595 8 508.6 0 stride=64
10 70000M 202690 24 69621 8 144356 7 511.4 0 stride=64, отключение sync
10 70000M 194545 23 67260 8 138141 7 454.8 0 stride=64, оптимизация записи High
10 70000M 172109 20 44177 4 105450 4 540.8 1 read ahead - 256KB, write cache - 16MB
blockdev --setra 512
RAID-50 из 12 дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64
2 по 6 97000M 187672 22 68720 6 135397 5 608.6 0
3 по 4 97000M 194267 23 71579 7 135391 5 607.7 0
4 по 3 97000M 145088 17 65661 6 127827 4 618.8 0
программный RAID-0 из аппаратных RAID-5 на 12 дисках
pvcreate --metadatasize 250k /dev/sdX
vgcreate test /dev/sda ...
lvcreate --name test --size 1000G --stripes N --stripesize 256 test
mke2fs -j -v -m 0 -L raid5lvm -F -E stride=64,resize=4026531840 /dev/test/test
2 RAID-5 по 6 97000M 199205 25 88243 7 225708 7 638.3 0
3 RAID-5 по 4 97000M 208597 25 97573 8 240688 8 641.6 0
4 RAID-5 по 3 97000M 187081 23 89140 7 236289 7 626.5 0
RAID-6 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
4 70000M 48907 5 27848 3 114471 6 345.0 0
4 70000M 25808 3 12185 1 30171 1 211.2 0 в процессе расширения массива
5 70000M 78305 9 39589 4 112156 6 396.4 0
6 70000M 86364 10 42772 4 126988 6 430.0 0
8 70000M 113673 13 51845 6 156686 8 474.7 0
9 70000M 128714 15 57132 7 147807 8 514.5 0
10 70000M 128102 15 57878 7 140892 7 556.0 0
11 70000M 143667 16 62470 7 152459 8 551.7 0
12 70000M 147563 17 64106 7 154492 8 565.8 0
12 70000M 143845 17 64253 8 153855 8 547.4 0 write cache - 256MB
12 70000M 147071 17 44473 4 133638 5 568.7 0 read ahead - 256KB, blockdev --setra 512
write cache - 256MB
12 70000M 122178 14 56704 6 195442 11 564.4 0 Chunk Size : 64KB, stride=16
12 70000M 141995 16 59529 7 177273 9 566.3 0 Chunk Size : 128KB, stride=32
12 70000M 56035 6 37342 4 138382 7 467.0 0 Chunk Size : 128KB, stride=32, вынул диск
12 70000M 32879 4 17748 1 52531 2 198.6 0 Chunk Size : 128KB, stride=32, rebuild 90%
12 70000M 29835 3 16093 1 36037 2 217.2 0 Chunk Size : 128KB, stride=32, 2 rebuild 90%
RAID-5 из N дисков 1TB Hitachi Ultrastar SATA-2 7200rpm
Chunk Size : 256KB, оптимизация упреждающего чтения автоматическая, кеш записи на максимум, stride=64
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
число дисков Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3 70000M 56985 6 31489 3 108444 6 340.9 0
4 70000M 82293 9 41021 4 141218 7 399.7 0
5 70000M 90372 10 44551 5 152603 8 441.8 0
6 70000M 106993 12 52880 6 156807 8 462.7 0
8 70000M 127602 14 57122 6 162605 8 507.1 0
9 70000M 128950 15 59892 7 145479 8 495.7 0
10 70000M 145503 18 62516 7 154679 8 565.7 0
11 70000M 151682 17 66264 8 158711 8 444.5 0
11 70000M 122347 14 57301 7 191635 10 578.2 0 Chunk Size : 64KB, stride=16
11 70000M 123191 14 59004 5 238416 8 582.3 0 Chunk Size : 64KB, stride=16
blockdev --setra 1024
Фирма Axus выпускает семейство автономных дисковых массивов,
монтируемых в стойку и подключаемых к серверу с помощью интерфейса 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, имя и адрес отправителя,
имена и адреса получателей, какие сообщения посылать, посылать ли раз в сутки
"контрольное" сообщение
- поддерживаемые типы RAID: JBOD, RAID-0, RAID-1, RAID-1+0 (RAID-1E), RAID-3, RAID-5, RAID-6
- управление системой:
- общие настройки:
- разрешить звуковой сигнал
- приоритет фоновых заданий (5%, 20%, 50%, 80%)
- параметры последовательного порта консоли
- режим SATA: 150 или 300, поддержка NCQ
- кеш предваряющего чтения
- задержки последовательного запуска дисков
- остановка дисков при отсутствии запросов
- кеширование записи на дисках (да, нет, в зависимости от наличия батарейки -
выключен при наличии)
- округление вниз объёма дисков до 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-0 of N ST3750330NS
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3 6000M 173555 50 89097 20 259319 20 363.5 0
4 6000M 220602 64 101328 22 293002 23 393.9 0
5 6000M 270277 76 105348 23 306952 24 416.6 0
6 6000M 278196 79 117769 26 313490 24 430.3 0
7 6000M 275877 79 126692 28 316171 25 437.1 1
8 6000M 277159 78 119052 27 317854 26 450.3 0
RAID-1 of N ST3750330NS
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
2 6000M 39321 70 68552 20 34338 7 58647 93 103914 8 348.6 0
3 6000M 92042 27 55674 12 142539 11 359.9 0
4 6000M 138135 40 67912 15 190412 15 404.6 0
RAID-10 of 4 ST3750330NS
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
4 6000M 106097 29 70521 16 183222 14 405.5 0
RAID-5 of N ST3750330NS
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3 6000M 42525 76 72995 21 45319 10 58902 91 206924 16 344.9 0
4 6000M 82129 23 57135 13 237482 19 389.6 0
5 6000M 89913 26 62805 14 258380 20 412.7 0
6 6000M 102240 30 70719 16 277214 22 429.8 0
7 6000M 110708 32 71952 16 280487 21 437.5 1
8 6000M 107539 32 73482 16 280100 22 439.5 1
9 6000M 132069 39 80662 18 283864 22 459.0 1
15 6000M 172463 46 105782 21 248563 19 585.0 1
RAID-6 of N ST3750330NS
Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
N Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
4 6000M 70336 20 49095 11 154773 12 390.2 0
5 6000M 84675 25 57985 13 235946 18 403.7 0
6 6000M 88725 26 64081 14 256832 20 418.6 0
7 6000M 105024 30 70119 16 276273 21 438.2 1
8 6000M 109307 31 69979 16 259965 20 471.4 0
9 6000M 110556 32 75198 17 283948 22 480.5 0
10 6000M 130276 37 82174 18 284371 22 478.2 1
11 6000M 140261 40 80693 18 276098 21 494.2 0
12 6000M 135555 39 82743 19 308627 24 508.5 1
13 6000M 168146 49 93225 21 277336 21 513.9 1
14 6000M 170925 49 91337 21 283634 22 520.8 1
15 6000M 53128 94 170712 46 99981 20 59003 91 353813 29 537.1 1
16 6000M 144650 42 87374 20 296136 23 532.1 1
16 60000M 127740 37 89675 21 372879 30 231.9 0
RAID массив создаётся из разделов, а не из дисков.
При создании разделов необходимо указывать тип "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 новая-конфигурация (после удачного преобразования её необходимо поместить на место старой)
- --mddev имя-RAID-устройства (ограничиться преобразованием указанного устройства)
- --import имя-блочного-устройства (преобразовать обычное устройство в массив)
- --export имя-блочного-устройства (преобразовать массив в обычное устройство)
Для манипуляции дисками в массиве имеются утилиты raidhotadd,
raidhotremove, raidsetfaulty.
Ещё более старый комплект mdtools делал RAID массив без сигнатур,
для совместимости с этими старымим массивами имеется утилита raid0run.
Пакет device-mapper создаёт и обеспечивает работу нового логического блочного устройства
на основе списка интервалов секторов блочных устройств (каждый сектор логического устройства
отображается с помощью одного из методов - target - на существующие блочные устройства).
Поддерживает методы отображения интервала (target, методы могут смешиваться при описании одного
нового блочного устройства):
- linear (отображение списка интервалов блоков на подлежащие блочные устройства)
- striped (отображение списка интервалов блоков на подлежащие блочные устройства с чередованием, задаётся размер куска (chunk))
- error (для описания "дырок")
- snapshot и snapshot-origin и snapshot-merge (снимки)
- mirror (для pvmove из пакета lvm2)
- zero (всегда читает нули и игнорирует запись)
- multipath (слияние нескольких путей к устройству)
- crypt (прозрачное шифрование на блочном уровне)
- cache (кеширование одного блочного устройства на другом)
- flakey (linear с генерацией случайных ошибок и потерь записи, для тестирования)
- delay (отображение запросов на другое устройство с задержкой, возможно разделение операций чтения и записи, для тестирования)
- era (linear с сохранением списка перезаписанных блоков на устройство с метаданными)
- raid (доступ к MD через DM: raid1, raid4, raid5_la, raid5_ra, raid5_ls, raid5_rs, raid6_zr, raid6_nr, raid6_nc, raid10)
- switch (динамический выбор пути)
- thin provisioning (отложенное выделение пространства)
- verity (для проверки сквозной целостности данных)
Используется в
Состоит из модулей ядра (CONFIG_BLK_DEV_DM),
библиотеки libdevmapper (libdevmapper-event-lvm2mirror, libdevmapper-event-lvm2raid, libdevmapper-event-lvm2snapshot, libdevmapper-event-lvm2thin),
устройства для управления модулем ядра из библиотеки /dev/mapper/control
(c:10,63; создаётся с помощью "dmsetup mknodes"), утилиты dmsetup(8), демона dmeventd.
В каталоге /dev/mapper также хранятся логические устройства.
Наличие определяется по содержимому /proc/misc,
/sys/class/misc/device-mapper (/sys/devices/virtual/misc/device-mapper).
Модули ядра
- dm-mod (основной модуль, можно задать место под статистику и резервирование IOPS)
- dm-mirror (метод mirror, можно задать процент времени на ресинхронизацию)
- dm-zero (метод zero, выдаёт нули)
- dm-snapshot (метод snapshot, можно задать процент времени на CoW), aka dm-snapshot-origin и dm-snapshot-merge
- dm-crypt (метод crypt)
- dm-multipath (метод multipath), dm-queue-length (выбор пути по размеру очереди),
dm-service-time (выбор пути по задержкам) и dm-round-robin (поочередный выбор пути)
- dm-cache (метод cache, можно задать процент времени на копирование в кеш)
- dm-cache-mq (политика кешироввания mq)
- dm-cache-cleaner (политика кешироввания cleaner)
- dm-persistent-data (работа с метаданными)
- dm-bio-prison
- dm-bufio (можно задать размер метаданных кеша, максимальное время удержания в буфере,
выделяемое под буфер место методами kmem_cache_alloc, get_free_pages, vmalloc)
- dm-delay (метод delay)
- dm-log (журнал несинхронизированных интервалов) и dm-log-userspace
- dm-region-hash (отображение хешированием)
- dm-era (метод era)
- dm-flakey (метод flakey)
- dm-raid (метод raid; dm-raid1, dm-raid10, dm-raid4, dm-raid5, dm-raid6)
- dm-switch (метод switch)
- dm-thin-pool (метод thin provisioning; можно задать процент времени на CoW)
- dm-verity (метод verity)
-
Первый параметр утилиты 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 (любое обращение к сектору из этого интервала возвращает сообщение об ошибке ввода-вывода)
Текст перенесён в статью о LUKS.
Физический доступ к дискам на псевдо-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-multipath-libs -
создаёт новое блочное устройство с помощью device-mapper
поверх 2 или более блочных устройств, представляющих собой разные пути к одному блочному устройству.
Умеет работать с различными аппаратными хранилищами (EMC, Compaq/HP, GNBD, HITACHI, SUN;
см. multipath.conf.defaults).
Устройства, отсутствующие в списке, необходимо описать в /etc/multipath.conf
(в RHEL6 выключен по умолчанию).
В нормальных условиях 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 (HP) 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
- mpathconf?
- /lib64/multipath/ - каталог динамических библиотек
Конфигурационный файл /etc/multipath.conf имеет вложенную блочную
структуру (блоки выделяются фигурными скобками за именем блока;
комментарии начинаются с '#';
значения по умолчанию можно посмотреть в файле multipath.conf.defaults):
- блок defaults определяет значения параметров по умолчанию
- udev_dir каталог-с-устройствами (/dev)
- polling_interval секунд (5)
- selector алгоритм ("round-robin 0"; алгоритм выбора пути,
предлагаемый по умолчанию; других и не бывает; в RHEL6 переименован в path_selector)
- path_selector алгоритм (в RHEL6)
- round-robin 0 (каждый путь в группе использовать по очереди, одинаковое количество IO (?))
- queue-length 0 (выбирать путь исходя из длины очереди)
- service-time 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" или "/lib/udev/scsi_id --whitelisted --device=/dev/%n";
скрипт и аргументы для получения уникального идентификатора пути (тома? WWID?))
- prio_callout скрипт (; скрипт и аргументы для получения приоритета пути;
если указать шаблон "%n", то вместо него будет подставлено имя устройства вида "sda"; нет в RHEL6)
- prio метод (const; в RHEL6; метод получения приоритетов для путей:
- const (приоритет 1 для всех)
- emc (приоритеты для массивов EMC)
- alua (приоритеты на основе SCSI-3 ALUA)
- tpg_pref (приоритеты на основе SCSI-3 ALUA и предпочтительного порта)
- ontap (приоритеты для массивов NetApp)
- rdac (приоритеты для массивов LSI Engenio RDAC)
- hp_sw (приоритеты для массивов Compaq/HP в режиме активный/запасной)
- hds (приоритеты для массивов Hitachi HDS)
- features дополнительные-опции-multipath (; реализована только "1 queue_if_no_path" -
эквивалент "no_path_retry queue")
- path_checker метод-определения-состояния-пути (readsector0:
- readsector0 (чтение нулевого сектора)
- tur (TEST UNIT READY)
- emc_clariion (для EMC Clariion)
- hp_sw (для HP с функциями Active/Standby)
- directio (чтение нулевого сектора direct I/O?)
- checker_timeout секунд (в RHEL6)
- dev_loss_tmo секунд | off (в RHEL6; подождать при возникновения ошибки на удалённом порту FC
перед удалением порта из системы в надежде, что всё нормализуется)
- fast_io_fail_tmo секунд (в RHEL6; подождать при возникновения ошибки на удалённом порту FC
перед извещением в надежде, что всё нормализуется)
)
- failback секунд (immediate в RHEL5 и manual в RHEL6;
задержка при возвращении группы путей в состояние активности;
immediate - немедленно, manual - ждать ручного вмешательства,
followover - автоматически переводить группу в состояние активности только если
активен первй путь в группе)
- log_checker_err always|once
- rr_min_io число (1000; количество операций ввода/вывода перед переключением
к следующему пути в группе при распределении нагрузки; только для ядра до 2.6.31)
- rr_min_io_rq (1; количество операций ввода/вывода перед переключением
к следующему пути в группе при распределении нагрузки; для ядра 2.6.31 и новее)
- rr_weight {priorities|uniform} (uniform - поровну; priorities - путь с большим приоритетом
будет получать большую нагрузку)
- max_fds число (; максимальное число открытых дескрипторов файлов для multipathd;
можно указать unlimited)
- no_path_retry {queue|fail|число} (0; количество неудачных
попыток до остановки постановки в очередь; fail - перестать сразу;
queue - ставить невзирая на)
- flush_on_last_del {no|yes} (no; прекратить постановку в очередь при удалении последнего пути)
- user_friendly_names {no|yes} (no; использовать /var/lib/multipath/bindings (в RHEL5)
или /etc/multipath/bindings (в RHEL6) для
назначения уникального имени (каждая строка содержит имя вида mpathN и WWID);
заполняется автоматически
- queue_without_daemon no|yes (в RHEL6; блокировать очереди при завершении работы демона)
- bindings_file /var/lib/multipath/bindings (не в RHEL6)
- mode 0644 (права доступа к файлам многопутёвых устройств)
- uid 0
- gid 0
- find_multipaths no|yes (в RHEL6; вместо создания multipath устройства для всех путей,
не попавших в чёрный список, делать проверку на пары по WWID
- verbosity 2 (от 0 до 6)
- multipath_dir каталог-библиотек (/lib64/multipath/ в RHEL6 содержит libcheckcciss_tur.so,
libcheckdirectio.so, libcheckemc_clariion.so, libcheckhp_sw.so, libcheckhp_tur.so,
libcheckrdac.so, libcheckreadsector0.so, libchecktur.so, libprioalua.so,
libprioconst.so, libprioemc.so, libpriohds.so, libpriohp_sw.so, libprioontap.so,
libpriorandom.so, libpriordac.so, libpriotpg_pref.so, libprioweighted.so)
блок devnode_blacklist (в RHEL6 блоки blacklist и blacklist_exceptions) задаёт шаблоны имён и/или WWID блочных устройств,
которые система multipath обслуживать не будет (по умолчанию - не обслуживается никто)
- wwid уникальный-идентификатор
- devnode регулярное-выражение
- device блок (по vendor и product)
devices - настройки по типам устройств (по vendor и product и revision);
- содержит вложенные блоки device
- vendor строка (определяет изготовителя, для которого определяются
дальнейшие специфические настройки)
- product строка (определяет тип устройства)
- revision строка
- bl_product регулярное-выражение (исключения; в RHEL5)
- product_blacklist регулярное-выражение (исключения; в RHEL6)
- опции path_grouping_policy, getuid_callout, path_selector, path_checker, features,
hardware_handler ("0", "1 emc", "1 rdac", "1 alua", "1 hp_sw"), prio_callout (prio в RHEL6),
failback, rr_weight, no_path_retry, rr_min_io, rr_min_io_rq, fast_io_fail_tmo, dev_loss_tmo,
flush_on_last_del
multipaths - специфические настройки для отдельных устройств (по WWID, определяемым с помощью getuid_callout)
- содержит вложенные блоки multipath
- wwid уникальный-идентификатор (определяет конкретное устройство)
- alias синоним (задаёт синоним)
- опции path_grouping_policy, path_selector, failback, prio, rr_weight, rr_min_io, rr_min_io_rq, no_path_retry,
flush_on_last_del
Ключи утилиты multipath (в качестве параметра указывается устройство major:minor):
- -b имя-файла-соответствия-имён-и-WWID (/var/lib/multipath/bindings или /etc/multipath/binding)
- -B (не изменять файл привязок)
- -d (тестовый прогон)
- -f mpath-устройство (выбросить неиспользуемое устройство)
- -F (выбросить все неиспользуемые устройства)
- -l (показать текущую топологию по данным sysfs и dm)
- -ll (показать текущую топологию по данным sysfs, dm, ...;
добавлен вывод приоритета группы и состояния dm, зависает при недоступности устройства)
- -p {failover|multibus|group_by_serial|group_by_prio|group_by_node_name} (явное задание политики)
- -v уровень-болтливости (0 - молча, 1 - выводить имена создаваемых или изменяемых устройств,
2 - всё, что знает)
Утилита mpathconf позволяет создать или изменить /etc/multipath.conf.
Демон multipathd имеет ключи:
- -d (отладочный режим - не уходить в фоновый режим, сообщения на stdout/stderr)
- -v уровень-болтливости (0 - только ошибки, 3 - отладочная печать)
- -k (переход в интерактивный режим; help - список команд, ^D - выход)
- list paths (выдаёт HBTL-адрес, имя диска, major:minor,
состояние (мнение dm), состояние (мнение multipath), "уровень сигнала"
- list maps (выдаёт имя устройства в /dev/mpath вида mpathX, ссылка на соответствующий /dev/dm-X, UUID)
- list status (количество отслеживаемых путей)
- list maps status
- list maps stats
- list maps topology
- show blacklist
- list devices
- add path имя (добавить путь - имя из /sys/block - к списку отслеживаемых путей)
- del path имя (удалить путь из списка отслеживаемых)
- add map имя (добавить многопутёвое устройство - имя из /sys/block - к списку отслеживаемых )
- del map имя
- resize map имя
- switchgroup map имя-устройства group индекс-группы
- suspend map имя
- resume map имя
- fail path имя
- reinstate path имя (вернуть из сбойного состояния)
- dump pathvec (?)
- reconfigure (требуется после некоторых изменений в /etc/multipath.conf)
- disablequeueing map [имя] (закрыть очередь устройства)
- restorequeueing map [имя] (открыть очередь устройства)
- show config
- paths count
Сервис multipathd (/etc/sysconfig/multipathd - ключи отсюда не берутся):
start, stop, restart, reload (SIGHUP), status.
Рассмотрим решение следующей проблемы - имеются два двухпортовых 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
- конфигурация /etc/multipath.conf
defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy failover
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
prio_callout "/usr/local/sbin/mpath_prio_ip %n"
path_checker tur
rr_min_io 100
rr_weight uniform
failback immediate
no_path_retry 12
user_friendly_names yes
}
devnode_blacklist {
...
}
multipaths {
multipath {
wwid WWID
alias mpathtest
path_grouping_policy failover
}
}
devices {
device {
vendor "HP"
product "MSA2[02]12fc|MSA2012i"
path_grouping_policy multibus
getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
hardware_handler "0"
no_path_retry 18
}
}
При использовании LVM рекомендуется
включить подлежащие блочные устройства в фильтр в /etc/lvm/lvm.conf.
Позволяет создавать массив из блочных устройств, как физических (в т.ч. разделов
и NBD - Network Block Device),
так и созданных с помощью device-mapper логических.
В том числе, поддерживаются логические блочные устройства созданные подсистемой поддержки
псевдоаппаратных RAID контроллеров dmraid.
Массив представляется в виде виртуального устройства /dev/mdN или /dev/md/N (N - номер массива).
Поддерживаются RAID уровней: LINEAR (JBOD, позволяет позднее добавить диск),
0 (исходные блочные устройства могут быть разных размеров), 1, 4, 5, 6, 10 (RAID1+0, только ядро 2.6,
вариации "near" и "far" (более быстрое чтение и более медленная запись);
число требуемых устройств должно быть не менее числа копий - это не просто RAID0 над RAID1!),
MULTIPATH (несколько путей доступа к одному устройству), FAULTY (для тестирования;
на основе ровно одного блочного устройства без метаданных; возвращает временные или постоянные
ошибки при чтении или записи с определённой регулярностью;
ошибки чтения могут "исправляться" запись в тот же блок).
Реализовано параллельное чтение с нескольких дисков для RAID-1.
Каждый тип требует своего модуля ядра (personality): raid0, raid10, raid1, raid4, raid5, raid6, xor.
При самостоятельной сборке ядра требуется указать:
Multiple devices driver support (RAID and LVM) (CONFIG_MD) [Y/n/?] y
RAID support (CONFIG_BLK_DEV_MD) [M/n/y/?] y
Linear (append) mode (CONFIG_MD_LINEAR) [M/n/y/?] y
RAID-0 (striping) mode (CONFIG_MD_RAID0) [M/n/y/?] y
RAID-1 (mirroring) mode (CONFIG_MD_RAID1) [M/n/y/?] y
RAID-4/RAID-5 mode (CONFIG_MD_RAID5) [M/n/y/?] y
...
Наличие поддержки RAID в ядре можно проверить командой "dmesg | grep ^md":
md: md driver 0.90.2 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: bitmap version 3.38
md: raid1 personality registered as nr 3
md: Autodetecting RAID arrays.
md: autorun ...
md: considering sdb1 ...
md: adding sdb1 ...
md: adding sda1 ...
md: created md0
md: bind
md: bind
md: running:
md: ... autorun DONE.
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
Для работы в режиме multipath требуется работа демона mdmpd, отслеживающего
восстановление работы интерфейса (сбой интерфейса отслеживается ядром).
Разработка спонсируется SUSE, со всеми вытекающими последствиями для пользователей RedHat.
Поддерживает 2 формата метаданных (ещё есть более старый вариант без хранения метаданных
на диске для linear и raid0 - mdtools):
версия 0.90.0 (совместима с raidtools; 4KB где-то в конце раздела - в последних 128 КБ)
и версия 1 (начиная с mdadm 1.8.1 и ядра 2.6.10; 1KB в последних 12 KB для версии 1.0,
в начале устройства для версии 1.1, со смещением 4KB от начала устройства для версии 1.2).
Начиная с версии mdadm 1.7/1.11 (есть в FC4, нет в CentOS 4.3) позволяет добавлять диск в линейный массив,
поддержка raid0 и линейных массивов размером более 2 ТБ.
Версия метаданных 1 позволяет иметь более 28 дисков на массив, RAID1 более 2 ТБ (до 7 ТБ в версии 2.3).
Автоопределение наличия массива по метаданным бывает довольно навязчивым - иногда приходится
затирать их после разборки массива.
Среди метаданных хранятся: тип массива, UUID (Universally Unique Identifier, 128 бит) массива.
Создание массива есть запись метаданных (superblock) на все элементы массива утилитой mdadm.
Сборка (assemble) есть привязка всех элементов к виртуальному устройству, в начале массив
инициализируется (SET_ARRAY_INFO, указывается версия и подверсия метаданных),
затем к нему добавляются все устройства (ADD_NEW_DISK),
после этого массив запускается (RUN_ARRAY) и его можно использовать.
Новые устройства можно добавлять к массиву (HOT_ADD_DISK),
а старые удалять из массива (HOT_REMOVE_DISK) и после запуска.
Возможные состояния массива:
- clear (отсутствие массива)
- inactive (настройки есть, но массив не работает - все запросы ввода-вывода завершаются
аварийно)
- suspended (все запросы ввода-вывода откладываются; не реализовано)
- readonly (запросы записи завершаются аварийно)
- read-auto (модификация readonly?)
- clean (массив в работе; нет незавершённых запросов записи)
- clean, checking
- clean, resyncing (DELAYED)
- active (массив в работе)
- active, checking
- active, resyncing
- active-idle (массив в работе; не было запросов записи в течении определённого времени)
- write-pending
Описание устройства в /sys/block/mdN.
В версии ядра 2.6.18 имеется подкаталог md с описанием
параметров массива:
- level (уровень RAID - текст или число: raid0 (striped, 0), raid1, raid4, raid5, raid6, raid10, linear (-1), multipath, faulty)
- raid_disks (число устройств в полном наборе; при преобразовании в формате: новое (старое))
- chunk (размер "куска" в байтах, от 4KiB; при преобразовании в формате: новое (старое))
- layout (число, вариант реализации уровня, интерпретация в зависимости от уровня; при преобразовании в формате: новое (старое))
- array_size (размер в КиБ или default)
- reshape_position (none или номер сектора при преобразовании)
- component_size (логический размер устройства)
- metadata_version (версия метаданных)
- resync_start (?)
- new_dev (сюда надо записывать major:minor добавляемого диска)
- safe_mode_delay (0.201; период бездействия при записи отметок
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 (число нессответствий при проведении проверки или восстановления контрольных сумм)
- group_thread_cnt (количество потоков синхронизации)
- stripe_cache_size (только RAID-5 и 6; от 16 до 32768; по умолчанию - 128)
- stripe_cache_active (только RAID-5 и 6)
Для каждого компонента массива имеется подкаталог /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 (номер в скобках после имени диска - номер в массиве;
первое число в скобках после числа блоков - общее число дисков, второе - чмсло активных дисков):
Personalities : [raid1]
md1 : active raid1 sdb2[1] sda2[0]
4739072 blocks [2/2] [UU]
md0 : active raid1 sdb1[1] sda1[0]
151549056 blocks [2/2] [UU]
unused devices:
Все действия с массивами производятся утилитой mdadm, имеющей следующий
синтаксис:
mdadm [режим] устройство-массива [опции] компонент-массива ...
Общие опции:
- --help
- --config=имя-файла (/etc/mdadm.conf)
- --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=уникальный-идентификатор (устройства, не умеющие указанного идентификатора
в метаданных, исключаются из списка кандидатов в компоненты массива
- --super-minor=minor-использованный-при-создании-массива
- --name=имя-массива (имя, использованное при создании массива)
- --run (запустить массив, несмотря на неполноту собранного массива)
- --auto[=no|yes|md|mdp[число-разделов]][номер] (создать при необходимости файл устройства,
используя неиспользуемый minor; mdp - устройство с разделами)
- --update=опция (преобразовать метаданные при сборке:
- super-minor - согласовать номер minor в метаданных с minor собираемого массива
- uuid - поменять uuid (задаётся ключом --uuid или выбирается случайным образом)
- resync - пометить массив как несогласованный ("dirty"), что вызовет его ресинхронизацию
- byteorder - поменять порядок байт в 0.90 (например, при переходе от Sparc к x86)
- summaries - подправить счётчики устройств
- sparc2.2 - исправление ошибки, сделанной в Linux 2.2 на Sparc
- --build (создание и сборка массива без метаданных)
- --manage (манипуляции с компонентами активного массива)
- --add (добавить диск в массив)
- --re-add (предполагается, что добавляемый диск недавно был элементом этого массива;
ресинхронизация производится в пределах битовой карты)
- --remove (только неактивное - сбойное или запасное - устройство)
- --fail (пометить устройство как сбойное)
- --query [--detail] [--brief] (является ли устройство массивом или компонентом массива)
- --examine [--brief] (вывести метаданные)
- --examine-bitmap (вывести информацию о битовой карте)
- --run (запустить массив, несмотря на неполноту)
- --stop (остановить массив)
- --readonly
- --readwrite
- --zero-superblock (записать нули поверх метаданных)
- --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-devices=2") числа дисков в RAID-1; добавление битовой карты в RAID-1)
Простейшие задачи:
- проверка состояния массива: mdadm --query --detail /dev/md0
- удаление упавшего диска: mdadm --manage /dev/md0 --remove /dev/sdb1
- подстановка нового диска взамен упавшего (таблицу разделов необходимо сделать вручную):
mdadm --manage /dev/md0 --add /dev/sdb1
- при необходимости установка загрузчика: "/sbin/grub2-install /dev/sdb" или "/sbin/grub --no-floppy"
Имена событий мониторинга:
- 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.
Периодическая проверка задаётся скриптом /etc/cron.d/raid-check (/usr/sbin/raid-check, /etc/sysconfig/raid-check).
Чтобы создать программное RAID устройство при установке RHEL (Fedora Core, CentOS)
необходимо предварительно создать требуемое число разделов типа "software RAID" (Linux RAID auto),
затем объединить их в RAID. При этом необходимо задать уровень RAID, имя устройства, тип файловой
системы и точку монтирования.
При использовании kickstart создание RAID устройства записывается так:
part raid.01 --size=113000 --ondisk=sda
part raid.02 --size=113000 --ondisk=sdb
raid / --fstype=ext3 --level=RAID1 --device=md0 raid.01 raid.02
Каталог /boot может находиться только на RAID-1 или обычном разделе.
Если корневая система находится на RAID, то при загрузке необходимо иметь initrd,
загружающий необходимые модули, и обеспечить возможность автоматической сборки массива.
При использовании grub необходимо вручную (CentOS 4) записать загрузчик на второй диск:
/sbin/grub --no-floppy --batch << EOF
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
quit
EOF
При первой загрузке необходимо обеспечить мониторинг массивов:
- в /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). Возможно чтение
команд из файла. Общие ключи:
- --help
- --version
- -v | --verbose (до 3 раз)
- -d | --debug (до 6 раз, на syslog)
- --quiet
- --test (не изменять метаданные)
- --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 размер (по умолчанию, соответствует размеру исходного блочного устройства)
- pvdisplay (вывести атрибуты указанного физического тома)
- --short
- --maps (таблица соответствия PE и LE, не работает?)
- pvscan (сканирование блочных устройств в поиске физических томов LVM)
- --exported (показывать только тома, принадлежащие группам томов)
- --novolumegroup (показывать только тома, не принадлежащие группам томов)
- --short
- --uuid
- lvmdiskscan (сканирование блочных устройств в поиске физических томов LVM)
- pvs (вывести атрибуты указанного физического тома)
- --separator строка (разделитель между колонками)
- --aligned (выравнивать колонки)
- --noheadings (не выводить заголовок таблицы)
- --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 список-колонок-через-запятую (для обратного порядка сортировки используйте знак '-'
перед именем колонки)
- pvchange (изменить атрибуты указанного физического тома)
- --all (обработать все обнаруженные физические тома)
- --allocatable { y | n } (разрешать ли использование PE с данного физического тома)
- pvmove (переместить выделенные PE с одного физического тома на другой; если тома не указаны,
то возобновляется прерванное ранее перемещение; на время перемещения создаётся временый
логический том "pvmove"):
- исходный-физический-том[:PE[-PE]...]
- физический-том-назначения[:PE[-PE]...] ... (если интервал не указан, то используется
свободное место; если том назначения совсем не указан, то используется алгоритм выделения,
приписанный группе томов)
- --name имя-логического-тома (ограничить перемещение экстентами, выделенными указанному
логическому тому)
- --abort (прервать перемещение на ближайшей контрольной точке)
- --interval секунд (интервал опроса состояния перемещения)
- --background (перевести мониторинг в фоновый режим)
- pvremove (удалить физический том и очистить метаданные)
- pvresize (изменить размер физического тома)
Работа с группами логических томов:
- vgcreate имя-группы-томов имя-физического-тома ... (создать группу логических томов
из ранее проинициализированных физических томов)
- --maxlogicalvolumes число (задать максимальное число логических томов в группе)
- --maxphysicalvolumes число (задать максимальное число физических томов в группе)
- --physicalextentsize число[kKmMgGtT] (размер PE; по умолчанию - 4M; д.б. степенью 2)
- 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/имя-группы)
- 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 постоянным)
- --regionsize число-КБ (детальность синхронизации зеркала)
- --zero { y | n } (обнулять ли первый килобайт логического тома)
- lvcreate --snapshot имя-исходного-логического-тома (создание снимка логического
тома для резервирования или экспериментов; неизменная часть исходного тома и его снимка
хранится только в одном экземпляре; если места под изменения не хватит, то снимок будет
переведён в нерабочее состояние; снимок является логическим томом в той же группе,
над которым допустимы все действия как над обычным логическим томом; его можно монтировать
и т.д.; после использования его необходимо удалить):
- --name имя-логического-тома-снимка
- --extents число-PE-в-LV (--extens и --size несовместимы; размер определяется числом предполагаемых
изменений, его можно увеличить утилитой lvextend)
- --size размер (можно использовать суффиксы: kKmMgGtT)
- --chunksize размер (степень двойки от 4k до 512k)
- lvchange (изменение атрибутов указанных логических томов)
- --available {y | n } (доступность логических томов для ввода/вывода)
- --available {ey | en } (доступность логических томов для ввода/вывода в кластере для одного узла)
- --available {ly | ln } (доступность логических томов для ввода/вывода в кластере для этого узла)
- --permission { r | w }
- --contiguous { y | n }
- --minor число (значение minor для блочного устройства)
- --persistent { y | n } (сделать ли значение minor постоянным)
- --refresh (перечитать метаданные)
- lvdisplay (вывести атрибуты указанного логического тома и ассоциированных с ним снимков)
- --maps (таблица соответствия PE и LE)
- lvscan (сканировать все группы томов и блочные устройства в поиске логических томов)
- --blockdevice (выводить номера блочных устройств)
- lvs (вывести атрибуты указанного логического тома)
- --separator строка (разделитель между колонками)
- --aligned (выравнивать колонки)
- --noheadings (не выводить заголовок таблицы)
- --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)
- --resizefs
- lvreduce (уменьшение размера указанного логического тома; предварительно необходимо
уменьшить размер файловой системы; запрошенный размер может быть округлён)
- --extents [-]число-PE-в-LV (--extens и --size несовместимы)
- --size [-]размер (можно использовать суффиксы: kKmMgGtT)
- lvresize логический-том [физический-том] ... (изменение размера логического тома;
увеличение за счёт указанного физического тома;
после увеличения размера логического тома необходимо увеличить размер файловой системы;
перед уменьшением размера логического тома уменьшить размер файловой системы)
- --extents [+ | -]число-PE-в-LV (--extens и --size несовместимы)
- --size [+ | -]размер (можно использовать суффиксы: kKmMgGtT)
- --stripes число (число полосок для добавляемого куска)
- --stripesize числоКБ (степень двойки, не более PE)
- lvrename имя-группы старое-имя-логического-тома новое-имя
- 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 (предварять каждое сообщение указанной строкой)
- backup - управление резервированием метаданных
- shell - настройка интерактивной оболочки lvm
- global - всякие разные настройки
- test (работать в тестовом режиме)
- activation (выдавать команды device-mapper)
- tags (?)
- activation (управление device-mapper)
- missing_stripe_filler (чем заменять недостающий физический том)
- volume_list (фильтр имён логических томов)
- metadata (тюнинг метаданных)
- pvmetadatacopies (число копий метаданных при инициализации физического тома)
clvmd - начало работ над кластерной версией LVM.
При добавлении нового диска в аппаратный RAID необходимо (вместо добавления
нового раздела можно изменить размер старого и использовать pvresize):
- чтение документации поможет избежать некоторых перезагрузок
- добавить диск и реконструировать RAID (перезагрузка!)
- создать новый раздел типа 0x8e (Linux LVM) на появившемся месте
- попробовать перечитать таблицу разделов ("blockdev --rereadpt устройство")
- если не получается ("BLKRRPART: Device or resource busy"), то попробовать
понять кем он занят и, например, если смонтирована файловая система на логическом томе, то
- размонтировать файловую систему (umount точка-монтирования)
- на всякий случай, выдать информацию о логических томах (lvdisplay)
- деактивировать логические тома ("vgchange --available n имя-группы")
- экспортировать группу томов ("vgexport имя-группы")
- перечитать таблицу разделов ("blockdev --rereadpt устройство")
- импортировать группу томов ("vgimport имя-группы")
- активировать логические тома ("vgchange --available y имя-группы")
- смонтировать файловую систему
- проверить, не держат ли раздел NFS (остановить сервер NFS, "umount /proc/fs/nfsd", "rmmod nfsd"),
прилинкованная файловая система (mount -bind),
multipathd, smartd или hp-health (hp-snmp-agents), почистить /etc/lvm/cache/.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)
Увеличение размеров файловой системы, собранной на LVM поверх
3 логических томов MSA P2000 (без multipath), без остановки работы:
- expand volume size 357913728KiB shares1 # и 2 и 3
- blockdev --rereadpt /dev/sde # и f и g
- pvresize -v /dev/sde # и f и g
- lvextend -v /dev/share3s/share3s -l +100%FREE -i 3 /dev/sde /dev/sdf /dev/sdg
- resize4fs -p /dev/mapper/share3s-share3s
Вывод физического тома из эксплуатации:
- umount точка-монтирования
- e2fsck -f -v -C 0 /dev/mapper/ГруппаТомов-ИмяТома # проверка обязательна
- resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома размерGB # уменьшаем файловую систему (очень медленно)
- lvresize --size размер-чуть-побольшеGB /dev/ГруппаТомов/ИмяТома # уменьшаем LV с запасом
- resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома # подгоняем размер файловой системы под размер LV
- pvmove -v --interval 10 освобождаемое-устройство # сдвиг экстентов на остающиеся физические тома;
для проверки состояния переноса можно использовать "dmsetup status ГруппаТомов-pvmove0";
как увеличить допустимую долю использования полосы пропускания ввода/вывода?
- vgreduce -v ГруппаТомов ИмяФизическогоТома # удаление физического тома из группы
- pvremove -v освобождаемое-устройство # очистка освободившегося физического тома
- mdadm --verbose --manage /dev/md? --stop # разбираем программный RAID-1
- fdisk физическое-устройство-1 # удаление RAID-раздела и создание на его месте обычного раздела
- fdisk физическое-устройство-2 # удаление RAID-раздела и создание на его месте обычного раздела
- утилизация дисков
Уменьшение размера аппаратного RAID массива:
- umount точка-монтирования
- e2fsck -f -v -C 0 /dev/mapper/ГруппаТомов-ИмяТома # проверка обязательна
- resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома размерGB # уменьшаем файловую систему (очень медленно)
- lvresize --size размер-чуть-побольшеGB /dev/ГруппаТомов/ИмяТома # уменьшаем LV с запасом
- pvresize -v --setphysicalvolumesize ещё-чуть-большеG имя-устройства # уменьшение размера физического тома
- уменьшить размер раздела (parted не хочет изменять раздел с неизвестной ей файловой системой
- PV для LVM - удалить и создать раздел типа swap)
- реконструировать массив (не все массивы умеют уменьшаться)
- на всякий случай, выдать информацию о логических томах (lvdisplay)
- деактивировать логические тома ("vgchange --available n имя-группы")
- экспортировать группу томов ("vgexport имя-группы")
- перечитать таблицу разделов ("blockdev --rereadpt устройство")
- импортировать группу томов ("vgimport имя-группы")
- активировать логические тома ("vgchange --available y имя-группы")
- подогнать размер раздела под размер массива
- подогнать размер физического тома под размер раздела
- подогнать размер логического тома под размер группы томов
- resize2fs -p /dev/mapper/ГруппаТомов-ИмяТома # подгоняем размер файловой системы под размер LV
Создание логического тома с параллельным доступом на 2 диска:
- создание раздела типа 0x8e (lvm) на весь диск sdc
- создание раздела типа 0x8e (lvm) на весь диск sdd
- pvcreate /dev/sdc1 и pvcreate /dev/sdd1
- vgcreate data /dev/sdc1 /dev/sdd1
- lvcreate --name squid --size 20G --stripes 2 data
- mke2fs -v -j -L squid -m 0 /dev/data/squid
Замена дефективного неиспользуемого физического тома:
- vgcfgbackup --partial --file имя-файла имя-группы
- vgdisplay --partial --verbose (записать размер и UUID)
- установить новое устройство
- pvcreate --restorefile имя-файла --uuid UUID ...
- vgcfgrestore --file имя-файла имя-группы
Увеличение файловой системы (HP StorageWorks MSA 2012i,
Linux-ISCSI, multipath):
- отключение сервисов, использующих файловую систему
- 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 ГБ нелегко, а прервать невозможно):
RAID-5 5x73G Write Back, Adaptive Read Ahead, Cached I/O, hd cache - off
до создания снимка:
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
3000M 40353 93 51799 22 22260 5 34104 69 43591 4 604.1 1
после в первый раз:
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
5000M 3989 9 57410 24 19673 5 31566 66 39586 5 591.0 1
после во второй раз:
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
5000M 39256 92 10802 4 19742 5 31542 66 37922 5 564.1 1
сам snapshot первый раз:
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
5000M 5634 12 56405 24 19562 5 31377 66 38057 5 619.5 1
сам snapshot второй раз:
bonnie++ 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
5000M 40869 95 60142 26 19196 5 31161 65 38130 5 634.4 1
flashcache (1.0-139) - прозрачное кеширование
медленных блочных устройств на быстрых блочных устройствах (не рекомендуется использовать loopback).
Разработчики - Facebook (основывается на dm-cache).
При разработке эффективность была принесена в жертву отсутствию ошибок и скорости реализации
(примитивное хеширование по адресу блока при большом количестве коллизий,
линейном поиске в списке коллизий и однопоточная реализация - низкая пропускная способность).
Образует из медленного и быстрого устройств виртуальное устройство
(управляется dmsetup).
Режимы кеширования:
- writethrough (запись делается сначала на основное устройство,
кешируется только чтение, абсолютно надёжен, после перезагрузки кеш необходимо заполнять с нуля)
- writearound (запись делается только на основное устройство,
кешируется только чтение, абсолютно надёжен, после перезагрузки кеш необходимо заполнять с нуля)
- writeback (запись делается сначала на быстрое устройство, затем в фоновом режиме на медленное,
кешируется и чтение и запись, при неожиданном отключении возможна потеря данных - изменения метаданных не атомизировано,
после перезагрузки кеш необходимо загружать, сброс кеша командой "dmsetup remove")
Политика вытеснения - FIFO или LRU (настраивается динамически).
Имеется защита от вымывания потоками последовательных запросов (настраивается динамически).
На каждый блок расходуется 24 байта ОП и 16 байт метаданных на быстром устройстве.
Для сборки потребуются исходные тексты ядра.
Имеется возможность использования dkms (в CentOS 6.2 не получилось).
Сборка модуля ядра: "make -f Makefile".
Установка модуля ядра (extra/flashcache/flashcache.ko) и утилит (в /sbin) и
/usr/lib/ocf/resource.d/flashcache/flashcache (что это?): "make install".
Статистику можно посмотреть в /proc/flashcache/имя/flashcache_stats и /proc/flashcache/имя/flashcache_errors.
Утилиты:
- flashcache_create [-v] [-f] -p режим-кеширования [-s размер-устройства] [-b размер-блока]
[-m размер-блока-метаданных] имя-кеш-устройства
имя-быстрого-устройства имя-медленного-устройства # создаёт виртуальное блочное устройство
имя-кеш-устройства, записывает метаданные на имя-быстрого-устройства;
блок данных - 4k, блок метаданных - 512b в версии 1 и 4k в версии 2;
запросы менее размера блока кеша не кешируются, так что только "-b 4k";
разборка командой "dmsetup remove имя-кеш-устройства"
- flashcache_load имя-быстрого-устройства [имя-кеш-устройства] # копирование
накопленных в быстром устройстве данных в медленное
- flashcache_destroy имя-быстрого-устройства # очистка накопленных в быстром устройстве данных и метаданных
Имеются ручки управления в /proc/sys/dev/flashcache/краткое-имя-быстрого-устройства+краткое-имя-медленного-устройства/:
- cache_all (1; кешировать всё или ничего)
- reclaim_policy (0; политика вытеснения, 0 - FIFO, 1 - LRU)
- skip_seq_thresh_kb КБ (0; запросы большего размера считаются последовательными и не кешируются)
- fallow_delay секунд (900; через какое время начать сбрасывать "грязные" блоки на медленное устройство)
- dirty_thresh_pct процентов (20; кеш стремится держать не более указанного процента "грязных" блоков
в каждой подобласти)
Ассоциативность только степень двойки;
при ассоциативности 256 загрузка ЦП достигает 100% при потоке 675 MB/s
при ассоциативности 1024 загрузка ЦП достигает 100% при потоке 500 MB/s
при ассоциативности 2048 загрузка ЦП достигает 100% при потоке 350 MB/s.
И эти 100% одного ядра на все процессы (общая блокировка).
На основе flashcache был сделан EnhanceIO.
Метод отображения device-mapper
cache
в сочетании с надстройкой LVM Cache позволяет
обеспечить прозрачное кеширование медленных блочных устройств (HDD) на быстрых блочных устройствах (SSD).
Red Hat считает LVM Cache зрелым с RHEL 7.1 (на ней и проверял).
В процессе сборки участвуют кешируемое (основное, медленное, большое) устройство, кеширующее (быстрое, маленькое) устройство,
устройство для метаданных (очень быстрое, очень маленькое), резервное устройство для метаданных.
Устройство для метаданных содержит информацию какие части (chunk) находятся в кеше, какие части необходимо синхронизовать,
подсказку (статистику) для политики выбора частей для помещения в кеш.
Сборку и разборку кеша можно производить не останавливая работы.
Размер части задаётся (в секторах, 512?) от 32KB (разбазариваем место в памяти и метаданных)
до 1GB (разбазариваем место на кеширующем устройстве), кратно 32KB, по умолчанию - 64КБ.
Исходное и результирующее устройства принадлежат одной группе томов.
Результирующее устройство нельзя использовать в качестве блоков для построения дальнейшей иерархии,
исходное устройство может быть только типа linear, sripe и raid.
При описании работы кеша используются термины:
- миграция (migration) - перемещение первичной копии блока с одного блочного устройства на другое
- продвижение (promotion) - перемещение на быстрое устройство, добавление в кеш
- задвижение (demotion) - перемещение на медленное устройство, удаление из кеша
Основное устройство всегда содержит копию блока данных, но возможно устаревшую (не первичную).
Кеш может работать в режимах:
- writethrough, запись сразу делается на оба устройства, расхождений быть не должно, после перезагрузки кеш уже заполнен
- writeback, запись делается только на быстрое устройство
- passthrough, чтение производится с кешируемого устройства, запись делается на оба устройства (полезно для прогрева кеша,
если его исходное состояние неизвестно)
Имеется возможность ограничить объём миграции с помощью сообщения "migration_threshold число-секторов",
по умолчанию заявлено 204800 (100 МиБ), в реальности 2048 (1 МиБ) и при установке 204800 миграция мешает работе.
Метаданные обновляются на устройстве ежесекундно или по команде FLUSH или FUA.
При аварийном завершении содержимое кеширующего устройства и подсказки политики предполагаются устаревшими.
До RHEL 7.2 реализована только одна
политика миграции
- mq (multiqueue).
В качестве подсказки хранится количество попаданий для каждого блока.
Используется 16 очередей на вхождение в кеш,
16 очередей для "чистых" (кеш и фоновое устройство содержат одинаковые данные) элементов в кеше,
16 очередей для "грязных" (данные в кеше новее данных в фоновом устройстве),
элементы в очереди "стареют" в логическом времени (?), выбор очереди при вставке производится на основе счётчика попаданий.
Смена политики и настройка параметров производится командой:
lvchange --cachepolicy mq --cachesettings 'migration_threshold=2048 random_threshold=4' имя-группы/имя-тома
или напрямую
dmsetup message имя_группы-имя_тома 0 sequential_threshold 1024
или при создании пула
lvconvert --type cache-pool --cachemode writeback --poolmetadataspare n --cachesettings migration_threshold=204800 --poolmetadata x145data/metacache x145data/datacache
В RHEL 7.2 добавлена политика smq (включена по умолчанию при создании новых устройств),
обеспечивающая меньшее потребление памяти и в большинстве случаев большую производительность.
Текущую политику, значение параметров и общую статистику можно узнать с помощью команды
"dmsetup -v status имя_группы-имя_тома" (все размеры в секторах (512?)):
0 250014056448 # смещение и количество секторов
cache # метод (target) device mapper
8 # размер блока метаданных
72462/264192 # использованных блоков метаданных / всего блоков метаданных
128 # размер блока данных кеша
24386048/24386048 # использованных блоков данных / всего блоков данных
3187063490 # попаданий чтения
376069303 # промахов чтения
433132943 # попаданий записи
2277521799 # промахов записи
0 # миграций на медленное устройство
0 # миграций на быстрое устройство
0 # "грязных" блоков в кеше
1 # количество опций
writethrough
2 # количество базовых параметров
migration_threshold 2048 # перемещение логического блока с одного устройства на другое, в секторах
mq 10 # политика и число аргументов
random_threshold 4 # при получении указанного количества непоследовательных запросов поток воспринимается как непоследовательный
sequential_threshold 512 # при достижении указанного количества посл.запросов поток воспринимается как последовательный (идёт в обход кеша)
discard_promote_adjustment 1 # перемещение с медленного устройства на быстрое
read_promote_adjustment 4 # если при чтении счётчик блока превышает порог, то блок заносится в кеш
write_promote_adjustment 8 # если при записи счётчик блока превышает порог, то блок заносится в кеш
Политика cleaner используется для синхронизации кешируемого и кеширующего устройств.
попытка использования завершилась аварийно - Segmentation fault (core dumped).
Объявление интервала блоков в кеше "неправильными" (только в режиме passthrough):
dmsetup message имя_группы-имя_тома 0 invalidate_cblocks начало-конец
Часть общей статистики в "культурном" виде можно посмотреть командой "lvs -o имя-колонки":
- cache_total_blocks
- cache_used_blocks
- cache_dirty_blocks
- cache_read_hits
- cache_read_misses
- cache_write_hits
- cache_write_misses
- cachemode
- cache_policy
- cache_settings
Утилиты:
- cache_dump том-метаданных # вывод содержимого кеша в XML (много! подсказки в base64)
- cache_restore -i файл -o том-метаданных # чтение из XML обратно
- cache_check [-q] [--super-block-only] [--clear-needs-check-flag] том-метаданных # устройство должно быть неактивно
- cache_repair -i файл-или-том-метаданных -o файл-или-том-метаданных # или том кеша? группа томов должна иметь запас места в 2 meta
Пример создания:
- регистрация физических томов
pvcreate /dev/sda # 24 диска SATA 2TB в RAID-6
pvcreate /dev/sdb # 4 SSD SATA 800GB в RAID-0 (762559 PE)
- создание группы томов
vgcreate x136all36 /dev/sda /dev/sdb
- создание кешируемого тома данных
lvcreate -n data -l +100%FREE x136all36 /dev/sda
- создание тома метаданных, при расчёте размера предлагают использовать формулу 4MB+16*число-блоков-данных-кеша,
однако получаем сообщение "WARNING: Minimum required pool metadata size is 2.00 GiB", хотя
уровень использования не превышает 18.29%
lvcreate -n metacache -l 513 x136all36 /dev/sdb # уровень использования не превышает 18.29%
#lvcreate -n metacache -l 258 --stripes 2 x136all36 /dev/sdb /dev/sde # 2 отдельных SSD
- создание кеширующего тома данных, размер кеша данных не должен превышать 100%-2*размер_metacache
lvcreate -n datacache -l 761533 x136all36 /dev/sdb
#lvcreate -n datacache -l 381032 --stripes 2 x136all36 /dev/sdb /dev/sde # 2x800GB
- создание пула из томов кеширующих данных и метаданных
# увеличить в /etc/lvm/lvm.conf в секции allocation переменную cache_pool_max_chunks до 25000000
lvconvert --type cache-pool [--cachemetadataformat 1] [--cachemode writeback] [-poolmetadataspare n] \
[--cachesettings migration_threshold=204800] [--chunksize размер-куска] \
--poolmetadata x136all36/metacache x136all36/datacache
- сборка кеша из исходного тома данных и пула (исходный том данных переименовывается,
до RHEL 7.3 можно было указать кешируемое устройство (интервал блоков), а учитывался ли параметр?))
lvconvert --type cache [--cachemetadataformat 1] --cachepool x136all36/datacache x136all36/data
device-mapper: cache: You have created a cache device with a lot of individual cache blocks (48706240)
All these mappings can consume a lot of kernel memory, and take some time to read/write.
Please consider increasing the cache block size to reduce the overall cache block count.
- проверяем
lvs -a
data x136all36 Cwi aoC 40.01t [datacache] [data_corig] 2.22 18.52 0.00
[data_corig] x136all36 owi aoC 40.01t
[datacache] x136all36 Cwi C 2.90t 2.22 18.52 0.00
[datacache_cdata] x136all36 Cwi ao 2.90t
[datacache_cmeta] x136all36 ewi ao 2.98g
[lvol0_pmspare] x136all36 ewi 2.98g
Разборка:
- отделение тома данных от пула кеширования (рекомендуется дождаться завершения синхронизации - это быстрее)
lvconvert --splitcache x136all36/data
lvs -a
data x136all36 wi a 40.01t
datacache x136all36 Cwi C 2.90t
[datacache_cdata] x136all36 Cwi 2.90t
[datacache_cmeta] x136all36 ewi 2.98g
[lvol0_pmspare] x136all36 ewi 2.98g
- разборка пула
lvremove x136all36/datacache
lvs -a
data x136all36 -wi-a 40.01t
Вынесение метаданных на SSD, кешировать том bigfast в группе test целиком и склеивать с остатком SSD
разбил /dev/nvme0n1 на разделы
Number Start (sector) End (sector) Size Code Name
1 2048 167774207 80.0 GiB 8E00 Linux LVM
2 167774208 732585134 269.3 GiB 8E00 Linux LVM
создал кешируемый том test/bigfast
pvcreate /dev/nvme0n1p2
vgextend test /dev/nvme0n1p2
lvcreate -n metacache4x -l 258 test /dev/nvme0n1p2
lvcreate -n datacache4x -l 68430 test /dev/nvme0n1p2
lvconvert --type cache-pool --cachemode writeback --poolmetadata test/metacache4x test/datacache4x
lvconvert --type cache --cachepool test/datacache4x test/bigfast
группа томов super поверх bigfast и остатка nvme
pvcreate /dev/nvme0n1p1
pvcreate /dev/test/bigfast
vgcreate super /dev/nvme0n1p1 /dev/test/bigfast
lvcreate --name super --type linear -l +100%FREE super /dev/nvme0n1p1
lvextend /dev/super/super /dev/test/bigfast
mkfs.ext4 -N 300000000 -E stride=16,stripe_width=240,nodiscard,packed_meta_blocks=1 \
-I 256 -J size=1024 -L test4x -v \
-O 64bit,dir_index,dir_nlink,extent,ext_attr,filetype,flex_bg,has_journal,huge_file,\
inline_data,large_file,meta_bg,sparse_super,uninit_bg,^resize_inode /dev/super/super
/dev/super/super /test ext4 noauto,data=ordered,stripe=240,nobarrier,nodiratime,relatime,journal_checksum,delalloc,nodiscard 1 2
Пример 1: ext4, 120 ТБ, 335 миллионов файлов, 2xRAID-6 из 18 дисков 4ТБ на LSI RAID,
кеш из 2 SATA SSD дисков Intel DC 3500 SSDSC2BB800G4, AHCI или mpt2sas:
- при многократных параллельных обходах (find) кеш насосал более 480GB
- время параллельного обхода (40 find) уменьшилось до 17 минут
- время параллельного du (40) уменьшилось с часов на быстрых (SAS, 10000 rpm) дисках до 20 минут
одновременно с параллельным затариванием на медленных (SATA, 7200 rpm)
- время последовательного rsync уменьшилось в 10 раз (120 млн файлов - 100 минут)
- скорость параллельного затаривания почти не увеличилась, при этом кеш заполняется на 6ГБ на каждый ТБ чтения
вплоть до исчерпания объёма, скорость параллельного обхода восстанавливается на второй попытке
- место в lvm cache после наполнения обходами - 400 ГБ
- время освобождения буфера 128ГБ уменьшилось с 150 секунд до 40 секунд
Пример 2: btrfs 40 TB с 400 GB метаданных
- монтирование (без space_cache) 10 секунд вместо 10 минут
- обход файловой иерархии ускоряется на порядок
- место в lvm cache после наполнения обходами - примерно как размер метаданных btrfs
Пример 3: xfs, 40 ТБ, 110 миллионов файлов
- обход файловой иерархии ускоряется на порядок
- место в lvm cache после наполнения обходами - 128ГБ
В реальной эксплуатации вместо Intel DC 3500 были использованы Intel SSD DC P3600
(с 72 дисками на 10k rpm тяжело конкурировать!).
Проблема в RHEL 7.1 (в RHEL 7.2 починили) с ext4 на ahci и mpt2sas (xfs и btrfs без проблем)
при параллельном (40 потоков) find (без последствий), всё замирает и
kernel:BUG: soft lockup - CPU#7 stuck for 22s!
_raw_spin_lock+0x37/0x50
May 6 18:51:35 x132 kernel: Call Trace:
May 6 18:51:35 x132 kernel: [] ext4_es_lru_add+0x57/0x90 [ext4]
May 6 18:51:35 x132 kernel: [] ext4_ext_map_blocks+0x248/0x1220 [ext4]
May 6 18:51:35 x132 kernel: [] ? ext4_xattr_get+0x7d/0x290 [ext4]
May 6 18:51:35 x132 kernel: [] ? unlock_new_inode+0x50/0x70
May 6 18:51:35 x132 kernel: [] ext4_map_blocks+0x215/0x560 [ext4]
May 6 18:51:35 x132 kernel: [] ? in_group_p+0x31/0x40
May 6 18:51:35 x132 kernel: [] ? generic_permission+0x15e/0x240
May 6 18:51:35 x132 kernel: [] ext4_getblk+0x65/0x200 [ext4]
May 6 18:51:35 x132 kernel: [] ext4_bread+0x27/0xc0 [ext4]
May 6 18:51:35 x132 kernel: [] ? lookup_fast+0x53/0x2e0
May 6 18:51:35 x132 kernel: [] __ext4_read_dirblock+0x4a/0x400 [ext4]
May 6 18:51:35 x132 kernel: [] ? complete_walk+0x60/0xe0
May 6 18:51:35 x132 kernel: [] htree_dirblock_to_tree+0x40/0x190 [ext4]
May 6 18:51:35 x132 kernel: [] ? kmem_cache_alloc+0x35/0x1d0
May 6 18:51:35 x132 kernel: [] ext4_htree_fill_tree+0xa9/0x2a0 [ext4]
May 6 18:51:35 x132 kernel: [] ? user_path_at_empty+0x72/0xc0
May 6 18:51:35 x132 kernel: [] ? kmem_cache_alloc_trace+0x1ce/0x1f0
May 6 18:51:35 x132 kernel: [] ext4_readdir+0x5df/0x7f0 [ext4]
May 6 18:51:35 x132 kernel: [] ? fillonedir+0xe0/0xe0
May 6 18:51:35 x132 kernel: [] ? fillonedir+0xe0/0xe0
May 6 18:51:35 x132 kernel: [] ? fillonedir+0xe0/0xe0
May 6 18:51:35 x132 kernel: [] vfs_readdir+0xb0/0xe0
May 6 18:51:35 x132 kernel: [] SyS_getdents+0x95/0x120
May 6 18:51:35 x132 kernel: [] system_call_fastpath+0x16/0x1b
Подвешивает LSI MegaRAID 9266-8i (MR 5.13, 23.33.0-0018) при смешивании HDD и SDD на одном контроллере и активной работе в XFS,
контроллер перезапускается через 5 минут по watchdog. Без последствий. Первый раз очень испугался и нажал Reset -
запустилась синхронизация от SSD к HDD!.
btrfs включает адаптацию к SSD (надо монтировать с nossd).
Отсутствует обработка сбоя кеширующих устройств: при имитации отказа (неожиданно извлёк диск) получил неработоспособную
файловую систему, которую невозможно привести в чувство легальными методами (можно удалить логический том и воссоздать его заново без
разрушения файловой системы, но - не на ходу, после поломки не должно быть записи, везёт не всегда)
ls /time_machine/old/20141026/share4x
ls: cannot access /time_machine/old/20141026/share4x: Stale file handle
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 40T 0 disk
└─x136all36-data_corig 253:4 0 40T 0 lvm
└─x136all36-data 253:5 0 40T 0 lvm /time_machine
lvs -a
WARNING: Device for PV SJhzBV-RkXR-SqoL-YPsl-7Rit-I9A8-3D38st not found or rejected by a filter.
WARNING: Device for PV psgtnr-DXbi-IAKL-QMAY-FmKO-pug8-CKD0ag not found or rejected by a filter.
WARNING: Device for PV SJhzBV-RkXR-SqoL-YPsl-7Rit-I9A8-3D38st not found or rejected by a filter.
WARNING: Device for PV psgtnr-DXbi-IAKL-QMAY-FmKO-pug8-CKD0ag not found or rejected by a filter.
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data x136all36 Cwi-aoC-p- 40.01t [datacache] [data_corig] 36.62 18.29 0.00
[data_corig] x136all36 owi-aoC--- 40.01t
[datacache] x136all36 Cwi---C-p- 1.45t 36.62 18.29 0.00
[datacache_cdata] x136all36 Cwi-ao--p- 1.45t
[datacache_cmeta] x136all36 ewi-ao--p- 1.01g
[lvol0_pmspare] x136all36 ewi-----p- 1.01g
lvconvert --splitcache x136all36/data
WARNING: Device for PV SJhzBV-RkXR-SqoL-YPsl-7Rit-I9A8-3D38st not found or rejected by a filter.
WARNING: Device for PV psgtnr-DXbi-IAKL-QMAY-FmKO-pug8-CKD0ag not found or rejected by a filter.
Cannot change VG x136all36 while PVs are missing.
Consider vgreduce --removemissing.
umount /time_machine
vgreduce --removemissing --force x136all36
WARNING: Device for PV SJhzBV-RkXR-SqoL-YPsl-7Rit-I9A8-3D38st not found or rejected by a filter.
WARNING: Device for PV psgtnr-DXbi-IAKL-QMAY-FmKO-pug8-CKD0ag not found or rejected by a filter.
WARNING: Device for PV SJhzBV-RkXR-SqoL-YPsl-7Rit-I9A8-3D38st not found or rejected by a filter.
WARNING: Device for PV psgtnr-DXbi-IAKL-QMAY-FmKO-pug8-CKD0ag not found or rejected by a filter.
Removing partial LV data.
Logical volume "datacache" successfully removed
Logical volume "data" successfully removed
Wrote out consistent volume group x136all36
lvcreate -n data -l +100%FREE x136all36
WARNING: btrfs signature detected on /dev/x136all36/data at offset 65600. Wipe it? [y/n]: n
Aborted wiping of btrfs.
1 existing signature left on the device.
Logical volume "data" created.
mount /time_machine
btrfs scrub start /time_machine
Попытка изменить параметры на ходу в CentOS 7.2
("lvchange --cachesettings migration_threshold=204800 x145data/share") привела к перезагрузке
("Kernel panic - not syncing: Watchdog detected hard LOCKUP on cpu 6; CPU: 6 PID: 3438 Comm: lvchange").
Samsung SSD 840 PRO в нашей обстановке не подходит категорически под кеш - при попытке
восстановления на составное устройство из 2x18 SATA дисков и 2 SSD запись тормозит при 100% загрузке обоих SSD.
При замене на ходу SSD Samsung 840 PRO на Intel DC S3500 появились
дефекты в файловой системе (стандартная ext4 + lvmcache), возможно, что дефект появился ещё до замены, fsck исправил, но осадок остался:
kernel: EXT4-fs error (device dm-2): __ext4_read_dirblock:902: inode #679504401: block 14: comm ls: Directory hole found
fsck.ext4 -v -C 0 /dev/x136all36/share
...
Pass 2: Checking directory structure
Problem in HTREE directory inode 679504401 (/share4s/temp/file_system_stress_test): bad block number 14.
Free blocks count wrong for group #191448 (0, counted=32768).
... около 5 тысяч
При создании ext4 с немедленной инициализацией ("-E lazy_itable_init=0") таблицы inode не попадают в кеш
(а может так и надо?), отложенную инициализацию невозможно прервать (и расмонтировать), но все таблицы попадают в кеш (много времени и места).
При аварийной перезагрузке все блоки считаются грязными и запускается синхронизация от SSD к HDD,
2TB случайной записи на диск!
Для выбора правильной архитектуры системы хранения данных необходимо
обладать статистической информацией о характеристиках данных и шаблонах их использования.
Общий объём данных и количество файлов в основном хранилище - 34.5 ТБ, 72 миллиона файлов.
19% файлов являются каталогами.
Распределение количества файлов в каталоге (максимальное число файлов в каталоге - 30000;
300 тысяч в редких временных каталогах):
- 0 - 13.2%
- 1-9 - 80%
- 10-99 - 6.4%
- 100- - 0.4%
Распределение размеров файлов в штуках и объёме (56 миллионов файлов, полезная ёмкость 34.3TB;
средний размер - 600 КБ, раньше было - 477 КБ):
- 0 - 5.7% (0%)
- 1-256 - 23.7% (0%)
- 256-512 - 7.6% (0%)
- 513-4096 - 29.3% (0.1%)
- 4097-8192 - 9.2% (0.1%)
- 8193-16384 - 7.4% (0.1%)
- 16385-32768 - 5.5% (0.2%)
- 32769-65536 - 3.8% (0.3%)
- 65537-131072 - 2.3% (0.3%)
- 131073- - 5.5% (98.8%)
Объём записи (в прошлом!) - 100 TB в год, чтения - 1 PB в год (подавляющая часть - резервное копирование).
Распределение холодных и горячих файлов (статистика по 1/3 хранилища,
после переезда одного из отделов, было давно):
- затребованы за последнюю неделю - 6.3% по объёму и 6.6% в штуках
- затребованы за последний месяц - 12% по объёму и 16% в штуках
- затребованы за последние 2 месяца - 24% по объёму и 23% в штуках
- затребованы за последние 3 месяца - 33% по объёму
- затребованы за последние 4 месяца - 38% по объёму
- затребованы за последние 6 месяца - 46% по объёму
- затребованы за последние 9 месяцев - 61% по объёму
Доля дублированных файлов - 26.5%.
Сравнивал по совпадению md5 (128 бит).
Проверка коллизий (более 2 миллионов совпадений) проблем не обнаружила,
проверка требует почти столько же времени, что и само вычисление md5.
Парадокс дней рождения в общем смысле применим к хеш-функциям: если хеш-функция генерирует
N-битное значение, то число случайных входных данных, для которых хеш-коды с большой
вероятностью дадут коллизию (то есть найдутся равные хеш-коды, полученные на разных
входных данных), равно не 2^N, а только около 2^(N/2). Это наблюдение используется в атаке
"дней рождения" на криптографические хеш-функции.
Количество входных данных, при котором коллизия будет с заданной вероятностью:
10^−18 10^−15 10^−12 10^−9 10^−6 0,1% 1% 25% 50% 75%
128 2.6×10^10 8.2×10^11 2.6×10^13 8.2×10^14 2.6×10^16 8.3×10^17 2.6×10^18 1.4×10^19 2.2×10^19 3.1×10^19
256 4.8×10^29 1.5×10^31 4.8×10^32 1.5×10^34 4.8×10^35 1.5×10^37 4.8×10^37 2.6×10^38 4.0×10^38 5.7×10^38
Тестирование поблочной дедупликации duperemove
показало выигрыш в 15% по объёму (размер блока - 128КиБ, корпус данных - 10 ТБ и 20 миллионов файлов,
потребовалось 8 часов и 30 ГБ ОП на "холостом" ходу),
скрипт:
./duperemove -A -r /time_machine/old/20140801/share4h|fgrep -v 'csum:' | awk -f ~/bin/dedupsum.awk
BEGIN {sum=0}
{
if (NR>5) {
if($1=="Start") {
skip=1;
} else {
if(skip==0) {
sum=sum+$2;
} else {
skip=0;
}
}
}
}
END {print sum}
Уровень сжатия на всём корпусе данных местного производства (16.2 TB)
- zlib-force в btrfs - 2.69
- zlib в btrfs - 1.25
- gzip -1 - 2.81
- gzip -9 - 2.92
- xz -1 - 3.35
- xz --lzma2=preset=9,dict=200MiB,nice=273 - 3.97
- lzo в btrfs - 1.9 раза
- lzo-force в btrfs - 2.05
Сжатие файла трассировки моделирования
(40789981568 байт) из памяти на сервере grid0003 (2 x E5-2667 v4 @ 3.20GHz), CentOS7.4:
алгоритм уровень байт секунд
lzop -1 8013230276 64
lzop -2..6 7963530047 66
lzop -7 4944459186 1086
lzop -8 4679994607 3857
lzop -9 4679459353 4648
lz4 -1..2 7044855466 58
lz4 -3 4735264860 218
lz4 -4 4613032575 289
lz4 -5 4562105105 341
lz4 -6 4542079125 414
lz4 -7 4532990782 500
lz4 -8 4528741951 560
lz4 -9 4527466791 625
lz4 -10 4527051214 624
lz4 -11 4526762668 683
lz4 -12 4526583908 666
lz4 -13 4526400701 723
lz4 -14 4526260018 746
lz4 -15 4526188711 792
lz4 -16 4526188711 792
zstd -1 2382689231 59
zstd -2 2376729386 66
zstd -3 2164293737 74
zstd -4 2157436343 72
zstd -5 2045570550 184
zstd -6 1904253400 215
zstd -7 1877528038 254
zstd -8 1723220104 290
zstd -9 1728903712 315
zstd -10 1703110640 403
zstd -11 1650411473 433
zstd -12 1620867453 596
zstd -13 1611939951 698
zstd -14 1534456877 1069
zstd -15 1408103289 5287
zstd -16 1401540351 5681
zstd -17 1263121845 4130
zstd -18 993243039 6733
zstd -19 963591944 11883
zstd - -ultra -20 898756923 30899
zstd - -ultra -21 977373656 43775
zstd -T0 -1 2429065917 17
zstd -T0 -2 2412649200 18
zstd -T0 -3 2200218995 18
zstd -T0 -4 2193278414 18
zstd -T0 -5 2083359346 17
zstd -T0 -6 1928731093 19
zstd -T0 -7 1901433434 24
zstd -T0 -8 1741287862 27
zstd -T0 -9 1747293298 35
zstd -T0 -10 1721214807 41
zstd -T0 -11 1663714240 53
zstd -T0 -12 1633952132 64
zstd -T0 -13 1625470897 98
zstd -T0 -14 1547695012 123
zstd -T0 -15 1420820166 412
zstd -T0 -16 1394475825 482
zstd -T0 -17 1242608096 330
zstd -T0 -18 1002795634 546 # 3 GB
zstd -T0 -19 975564928 1326
zstd -T0 --ultra -20 904224068 3456 # 10 GB
zstd -T0 --ultra -21 980817107 4630 # 18 GB
zstd -T0 --ultra -22 965940845 14993 # 31 GB
zstd -T0 --ultra -22 --zstd=strategy=8,windowLog=27,hashLog=26,chainLog=28,searchLog=26,searchLength=3,tlen=999 964904215 70322 # 43 GB
gzip -1 5438101048 287
gzip -2 5091628070 289
gzip -3 4813043660 333
gzip -4 4214840203 347
gzip -5 3922181044 418
gzip -6 3841306376 560
gzip -7 3679308108 752
gzip -8 3543051128 1561
gzip -9 3540648809 2061
pigz -1 5355884906 20
pigz -2 5005696708 20
pigz -3 4732140213 23
pigz -4 4203018630 27
pigz -5 3909900817 31
pigz -6 3828539021 41
pigz -7 3669273808 52
pigz -8 3535618847 106
pigz -9 3533166885 126
pigz -11 2968534977 22716
bzip2 -1 3225945810 2134
bzip2 -2 2838263929 2191
bzip2 -3 2635043380 2295
bzip2 -4 2519051682 2378
bzip2 -5 2436146313 2420
bzip2 -6 2384412677 2488
bzip2 -7 2334870886 2549
bzip2 -8 2308540668 2513
bzip2 -9 2304013700 2609
pbzip2 -1 3236886777 139
pbzip2 -2 2849899256 143
pbzip2 -3 2686850621 147
pbzip2 -4 2530792733 157
pbzip2 -5 2510974602 160
pbzip2 -6 2498486446 163
pbzip2 -7 2445517926 170
pbzip2 -8 2319567447 180
pbzip2 -9 2309592351 178
xz -0 1798217324 574
xz -1 1511927728 690
xz -2 1352673532 968
xz -3 1234859896 1379
xz -4 1393553940 2728
xz -5 656466900 5698
xz -6 631181940 10185
xz -7 612029744 10915
xz -8 595228376 11613
xz -9 586267368 12179
xz -T0 -0 1908117496 39
xz -T0 -1 1580792880 59
xz -T0 -2 1411409928 100
xz -T0 -3 1283389276 175
xz -T0 -4 1440989444 185
xz -T0 -5 690173200 408
xz -T0 -6 665080676 849
xz -T0 -7 633806812 941 # 4 GB
xz -T0 -8 610048888 1030 # 8 GB
xz -T0 -9 596659024 1135 # 13 GB
xz -T0 --block-size=1GiB -0 1798355172 50 # 16 GB
xz -T0 --block-size=1GiB -1 1512137720 71 # 16 GB
xz -T0 --block-size=1GiB -2 1353011416 121 # 16 GB
xz -T0 --block-size=1GiB -3 1235450880 216 # 17 GB
xz -T0 --block-size=1GiB -4 1394194192 229 # 17 GB
xz -T0 --block-size=1GiB -5 657164628 503 # 18 GB
xz -T0 --block-size=1GiB -6 632333800 1048 # 18 GB
xz -T0 --block-size=1GiB -7 613118144 1142 # 19 GB
xz -T0 --block-size=1GiB -8 596340964 1233 # 22 GB
xz -T0 --block-size=1GiB -9 588556708 1347 # 26 GB
xz -T0 --block-size=1GiB --extreme -0 1072590992 2042 # 17 GB
xz -T0 --block-size=1GiB --extreme -1 816923152 4903 # 17 GB
xz -T0 --block-size=1GiB --extreme -2 725470192 8156
xz -T0 --block-size=1GiB --extreme -3 665287252 3600
xz -T0 --block-size=1GiB --extreme -4 667555772 13087
xz -T0 --block-size=1GiB --extreme -5 635376076 4142
xz -T0 --block-size=1GiB --extreme -6 636287228 16088 # 18 GB
xz -T0 --block-size=1GiB --extreme -7 623022844 18214 # 19 GB
xz -T0 --block-size=1GiB --extreme -8 613114324 20845 # 22 GB
xz -T0 --block-size=1GiB --extreme -9 609295824 23321 # 25 GB
xz -T0 --block-size=1GiB --lzma2=dict=512MiB,lc=3,lp=0,pb=2,mode=normal,nice=273,mf=bt4,depth=1024 606761864 52183 # 98 GB
freeze 5465927108 1404
freeze -x 5465821521 1424
lrzip -T -l 2522470877 9728 # 38 GB
lrzip -T -g -L 1 5158887719 509 # 38 GB, распараллеливание - 20%
lrzip -T -g -L 2 4472387536 578 # 44 GB
lrzip -T -g -L 3 3271569931 742
lrzip -T -g -L 4 2149072116 948
lrzip -T -g -L 5 2002492349 1068
lrzip -T -g -L 6 1319117201 3185
lrzip -T -g -L 7 1354973244 10648
lrzip -T -g -L 8 1918951223 13321
lrzip -T -g -L 9 3056743511 12846
lrzip -T -b -L 1 3169320129 623 # 38 GB, распараллеливание - 400%
lrzip -T -b -L 2 2715639335 693 # распараллеливание - 350%
lrzip -T -b -L 3 2098468974 820
lrzip -T -b -L 4 1500537166 997
lrzip -T -b -L 5 1482267072 1152
lrzip -T -b -L 6 1053613040 3194
lrzip -T -b -L 7 1134202195 10563
lrzip -T -b -L 8 1604933377 13151
lrzip -T -b -L 9 2327278157 12648
lrzip -T -L 1 2433375250 468 # 38 GB
lrzip -T -L 2 2557992887 536 # 38 GB
lrzip -T -L 3 2041353816 656
lrzip -T -L 4 1490988606 845
lrzip -T -L 5 1512380852 942
lrzip -T -L 6 1056629475 2835
lrzip -T -L 7 921817343 9930
lrzip -T -L 8 1326392321 12259
lrzip -T -L 9 1568362727 11935
lrzip -T -z 866483454 10475
lzip -0 2437262223 491
lzip -1 1671987408 1436
lzip -2 1567372315 1753
lzip -3 1492264643 2245
lzip -4 1417845686 3224
lzip -5 1366316999 5591
lzip -6 651738973 10247
lzip -7 608908230 20172
lzip -8 604313609 42477
lzip -9 602870375 112881
compress -b 9 20308125290 200
compress -b 10 17114734042 219
compress -b 11 14281016465 258
compress -b 12 12519790477 284
compress -b 13 11128666257 331
compress -b 14 9978822295 411
compress -b 15 8770765565 543
compress -b 16 7754822629 775
Сжатие домашнего каталога одного из разработчиков (моделирование netlist), предварительно заархивированного в tar.zst
и подкачанного в память:
xzcat -T0 compress_bench/*.xz |dd bs=1024k of=/dev/null # 845 GB, 88.2 MB/s
zstdcat -T0 compress_bench_zstd/*.zst |dd bs=1024k of=/dev/null # 845 GB, 444 MB/s, подкачка в памяти по сети 1Gb
zstdcat -T0 compress_bench_zstd/*.zst |dd bs=1024k of=/dev/null # 845 GB, 782 MB/s, из буфера в памяти
echo compress_bench_zstd/*.zst | xargs --max-args=1 --max-procs=2 zstdcat -T0 | dd bs=10240k of=/dev/null # 845 GB, 1397 (втроем в пике 2352) MB/s, из буфера
lz4 -2 299260419394 2093 # 1 поток
lz4 -3 257614353153 9417 # 1 поток
не нужен
zstd -T0 -1 223426781886 1250
zstd -T0 -2 221271941333 1243
zstd -T0 -3 215639958252 1270
zstd -T0 -4 215027165331 1283
zstd -T0 -5 211677787659 1289
zstd -T0 -6 206477817058 1509
zstd -T0 -7 204643261740 1434
zstd -T0 -8 201391141200 1612
zstd -T0 -9 200958563074 1770
zstd -T0 -10 199768721507 1860
zstd -T0 -11 197745126031 2108
zstd -T0 -12 196950159257 2426
zstd -T0 -13 196502524675 2808
zstd -T0 -14 195891978609 3740
zstd -T0 -15 194603792056 7509
zstd -T0 -16 192465519042 8771
zstd -T0 -17 192077339368 9154
zstd -T0 -18 189239214358 12013
zstd -T0 -19 184622016268 15879
zstd -T0 -20 179226494260 22160
zstd -T0 -21 174651332156 32120 # 17 GB
выше -14 не нужны
xz -T0 --block-size=1GiB -0 197349595536 2856
xz -T0 --block-size=512MiB -1 191014522620 4962 # 23 GB
xz -T0 --block-size=256Mib -0 197355341184 2791 # 12 GB
xz -T0 --block-size=256Mib -1 191022068520 4920
xz -T0 --block-size=256Mib -2 187711750940 6894
xz -T0 --block-size=256Mib -3 185588411972 9549
xz -T0 --block-size=256Mib -4 182598003372 10621
xz -T0 --block-size=256Mib -5 176417424516 14307
xz -T0 --block-size=256Mib -6 173351829916 17861
xz -T0 --block-size=256Mib -7 171529996532 18885
xz -T0 --block-size=256Mib -8 169891017436 19755 # 17 GB
xz -T0 --block-size=256Mib -9 168377795680 21081 # 22 GB
gzip -1 241331331624 10174 # 1 поток
gzip -2 236298641254 11021
gzip -3 232535294972 12156
gzip -4 226498783125 12948
gzip -5 222046658847 15492
gzip -6 219397430925 21181
не нужен
pigz -1 240923065504 1295
pigz -2 235815103875 1288
pigz -3 231965792333 1307
pigz -4 226256170785 1326
pigz -5 221851605957 1391
pigz -6 219222675603 1684
pigz -7 218080845512 2033
pigz -8 216314902247 4422
pigz -9 216029546935 7371
pigz -11 в 30 раз дольше
не нужен
pigz -b 1024 -1 241077589987 1211 # 8 GB
pigz -b 1024 -2 236050234908 1210
не нужен
pigz -b 524288 -1 241104249029 1312 # 32 GB
pigz -b 524288 -2 236087861419 1329
pigz -b 524288 -3 232355253307 1272
pigz -b 524288 -4 226296635878 1215
pigz -b 524288 -5 221889008961 1278
pigz -b 524288 -6 219258262270 1552
pigz -b 524288 -7 218115030515 1998 # 33 GB
не нужен
pbzip2 -1 207379690831 4722
pbzip2 -2 203522871176 4968
pbzip2 -3 201412866040 5270
pbzip2 -4 200879774384 5481
pbzip2 -5 199801291242 5703
pbzip2 -6 199561112665 5825
pbzip2 -7 199175849931 6062
не нужен
Дедупликация - поиск повторяющихся
данных и экономия места при их хранении.
Может быть поблочной или пофайловой или побайтовой
(внутрифайловая побайтовая дедупликация называется сжатием),
на стороне клиента (source-based, меньше передаётся) или файлового сервера (target-based, межклиентское сжатие),
непосредственной или отложенной.
Для ускорения поиска дублей сравниваются не сами данные, а их хеши (MD5, SHA-1).
Плюсы: требуется меньше места на диске и меньшая пропускная способность сети.
Минусы: данные теряются легче и в больших количествах, нагрузка на ЦП, проблемы при реорганизации.
lessfs 1.6 - FUSE файловая система с поддержкой сжатия
(LZO, QuickLZ, bzip, LZ4, gzip, deflate, snappy), шифрования, репликации и блочной дедупликации.
Транзакции при работе с метаданными позволяют избежать необходимости запуска fsck после аварийного останова
(где-то я подобное уже слышал).
Лицензия GNU GPLv3. Документация отсутствует, если не считать
журнальных статей.
Предполагалось включить в Fedora 15 - не включён и забыт.
Используется mhash и tokyocabinet (NoSQL СУБД).
Метаданные и данные хранятся в отдельных подлежащих файловых системах (каталогах).
SDFS - FUSE файловая система на Java. GPLv2.
Для хранения данных используется подлежащая файловая система.
ZFS.
Файловая система Hammer DragonFly BSD.
rsync (rsnapshot) и BackupPC (использует жёсткие ссылки) можно приспособить для файловой дедупликации
(для архивной файловой системы без записи).
Согласно "D. Meyer and W. Bolosky. A study of practical deduplication"
экономия пространства (875 файловых систем, 40TB, 200 млн файлов)
- пофайловая - 48% для всех, 20% в рамках одной системы
- поблочная - от 55% до 60%, 30% в рамках одной системы
- скользящий блок - от 65% до 68%, 40% в рамках одной системы
Are Disks the Dominant Contributor for Storage Failures? A Comprehensive Study of Storage Subsystem Failure Characteristics Weihang Jiang, Chongfeng Hu, Yuanyuan Zhou, and Arkady Kanevsky.
Работа основана на статистике работы 1.8 миллиона дисков (интерфейс к полке - FC, интерфейс к диску - SATA или FC) в течении 44 месяцев.
Ошибки были сгруппированы по
- disk failures - ошибки, обнаруживаемые диском или SMART
- physical interconnects failures - HBA, кабели, питание, backplane, ошибки драйвера полки
(определяется по исчезновению диска)
- Protocol Failure: диск виден, но не отрабатывает команды
- Performance Failure: работает, но медленно
Из интересного
- сами диски не являются единственным источником проблем
- проблемы приходят группами
- система хранения с 2 независимыми каналами доступа обеспечивает уменьшение вероятности сбоя на 30-40%
- распределение группы RAID по нескольким полкам уменьшает вероятность группы ошибок (burst)
- собственно распределение по типам ошибок
- SATA + single-path: 30% полок, 14.5%, 5.4%, 3.2%
- FC + single-path: 8.7%, 11.6%, 2.7%, 3.3%
- mid-range: 17.1%, 15.1%, 4.4%, 3.9%
- high-end: 25%, 22%, 4.7%, 0.5%
An Analysis of Latent Sector Errors in Disk Drives Lakshmi N. Bairavasundaram† , Garth R. Goodson, Shankar Pasupathy, Jiri Schindler.
Работа основана на статистике работы 1.5 миллиона дисков (интерфейс к полке - FC, интерфейс к диску - SATA или FC) в течении 32 месяцев.
Из интересного
- 3.45% дисков имели проблемы, но не сообщали об этом, т.к. их никто не спрашивал
- FC диски лучше SATA дисков (1.9% против 8.5%)
- скорость появления дефектов увеличивается между первым и вторым годом
- доля дисков с дефектами увеличивается с объёмом
- 60% скрытых дефектов выявляется при тестовом чтении
- дефектные сектора кучкуются в пространстве (в радиусе 10MB вероятность ещё одной ошибки больше 50%) и
времени обнаружения (40%-80% ошибок в течении минуты после предыдущей)
An Analysis of Data Corruption in the Storage Stack
Lakshmi N. Bairavasundaram , Garth R. Goodson†, Bianca Schroeder Andrea C. Arpaci-Dusseau, Remzi H. Arpaci-Dusseau.
Работа основана на статистике работы 1.5 миллиона дисков (интерфейс к полке - FC, интерфейс к диску - SATA или FC) в течении 41 месяцев.
Из интересного
- рассматривается 3 класса проблем
- ошибки контрольной суммы (checksum mismatches), проверяется RAID, из них 8% во время восстановления RAID
- ошибки идентификации (identity discrepancies), проверяется файловой системой
- ошибки чётности (parity inconsistencie), дополнительная чётности (сектора по 520 байт)
- SATA диски имели вероятность ошибки контрольной суммы на порядок больше, чем FC
- FC диски с ошибками контрольной суммы имели больше ошибок, чем SATA
- модели дисков могут отличаться на порядок
- тихая порча данных (silent data corruption) затрагивает на порядок меньше дисков
Пособие по самостоятельной сборке дисковой полки на 45 дисков LFF в 4U без горячей замены (себестоимость - $50000 за петабайт).
HPE D6020 w/70 8TB 12G SAS 7.2K LFF (3.5in) Dual Port Midline HDD 560TB Bundle (P8Y57A), 5U, $160k.
OneStor™ AP-2584 Ultra Dense Storage Server - Application Platform (84 LFF SAS/SATA, 5U, 2 встроенных сервера).
Проблемы текущего файлового сервера в том, что в нём в одну кучу свалены холодные и горячие данные,
в результате при сборке файлового сервера приходится ориентироваться в объёме на огромный объём холодных данных,
а в скорости на требуемую скорость доступа к горячим данным. Предлагается насильно разделить горячие и холодные данные:
горячие данные хранить на суперсервере в ОП, холодные данные хранить в архиве, на суперсервере только ссылки.
Модули памяти с адекватной ценой имеют ёмкость 64ГБ ($370), 12 каналов по 2 модуля в двухсокетном сервере - 1.5TB.
Варианты:
- SuperMicro X10QBi (4 сокета), 96 модулей памяти (LRDIMM 64GB), E7-4800 v2 family,
но X10QBi, X10QBi-MEM1 и AOM-X10QBi-A продаются только в составе сервера SYS-4048B-TRFT
- X11QPH+ (4 сокета), 48 модулей памяти - 3TB
Каких характеристик можно добиться от файловой системы в памяти (стенд - 2 сокета,
8 контроллеров памяти по 3 модуля по 32 ГБ, 20 ядер, 768GB)?
- восстановление с bacula в 4 потока (нагрузка ЦП - 90% при декомпрессии,
350MB/сек при снятии с диска - ограничение 400МБ/сек) - 1000МБ/сек
- find /fast|wc -l: 729 тысяч/сек (lvmcache из Optane поверх обычных дисков - 86 тысяч/сек)
- доступ по NFS (netperf показывает 11000 транзакций/сек, ib0 - 44740, ib0+libsdp - 64380), перед измерением делается drop
- 1 поток - 197 секунд (12000 op/s)
- 2 потока: за 140 секунд (15000 op/s)
- 3 потока: за 100 секунд (20000 op/s)
- 4 потока: за 81 секунд (25000 op/s)
- 5 потока: за 71 секунд (65 при nfsd=20 и распушить - образовать поток не из подкаталога, а из подкаталога подкаталога)
- 6 потока: за 65 секунд (55 при nfsd=20 и распушить)
- 7 потока: за 69 секунд (50 при nfsd=20 и распушить)
- 8 потока: за 69 секунд (44 при nfsd=20 и сильно распушить)
- 9 потока: за 67 секунд (53 при nfsd=20 и распушить, 42 при nfsd=20 и сильно распушить)
- 10 потока: за 66 секунд (61 при nfsd=20, 52 при nfsd=20 и распушить, 38 при nfsd=20 и сильно распушить)
- 12 потока: за 64 секунд (58 при nfsd=20, 55 при nfsd=20 и распушить, 37 при nfsd=20 и сильно распушить)
- 16 потока: за 68 секунд (64 при nfsd=20, 52 при nfsd=20 и распушить, 31 при nfsd=20 и сильно распушить)
- 20 потока: за 52 при nfsd=20 и распушить (31 при nfsd=20 и сильно распушить)
- 40 потока: за 52 при nfsd=20 и распушить (35 при nfsd=20 и сильно распушить)
- 60 (100) потока: за 57 при nfsd=20 и распушить (35 при nfsd=20 и сильно распушить)
- tarnull_all.sh небольшой срез (640GiB, 4 млн файлов), tar в 100% CPU, счётные задачи в фоне
- 1 поток - 1975 МБ/сек
- 2 потока - 3506 МБ/сек
- 3 потока - 4434 МБ/сек
- 4 потока - 5587 МБ/сек
- 5 потоков - 6305 МБ/сек
- 6 потоков - 6804 МБ/сек
- 7 потоков - 6804 МБ/сек
- 8 потоков - 6941 МБ/сек (и 9 и 10)
- 12 потоков - 7012 МБ/сек
- 20 потоков - 7551 МБ/сек (без dd - 49 ГБ/сек)
- 40 потоков - 15618 МБ/сек (распушил каталоги на меньшие)
Насколько холодные файлы нужно вытеснять за пределы 3ТБ?
relatime не даст собрать правильную статистику. find_recently_used_all.sh (маленькие (32КиБ?) файлы не вытеснять).
Экономия из 43.2ТБ при параметрах
- D1 S32k - 42.4 ТБ
- D7 S32k - 42.2 ТБ (Новый Год!)
- D30 S32k - 35.9 ТБ
- D30 S128k - 35.4 ТБ
- D30 S256k - 35.2 ТБ
- D30 S1M - 34.5 ТБ
- D30 S4M - 32.9 ТБ
- D30 S16M - 29.8 ТБ
- D30 S64M - 25.2 ТБ
- D30 S256M - 18.7 ТБ
- D30 S1G - 9.1 ТБ
- D30 S4G - 3.1 ТБ
- D90 S8G - 1.8 ТБ
- D90 S4k - 30.8 ТБ
- D90 S32k - 31 ТБ (дальше от нового года)
- D90 S128k - 30.4 ТБ
- D90 S256k - 30.2 ТБ
- D90 S1M - 29.7 ТБ
- D90 S4M - 28.3 ТБ
- D90 S16M - 25.6 ТБ
- D90 S64M - 21.5 ТБ
- D90 S256M - 15.6 ТБ
- D90 S1G - 7.4 ТБ
- D90 S4G - 2.5 ТБ
- D90 S8G - 1.5 ТБ
- D180 S32k - 23.6 ТБ
- D180 S128k - 23.5 ТБ
- D180 S1M - 23 ТБ
- D180 S4M - 21.9 ТБ
- D180 S16M - 19.8 ТБ
- D180 S256M - 11.7 ТБ
- D180 S1G - 5 ТБ
- D180 S2G - 2.8 ТБ
- D180 S4G - 1.4 ТБ
- D180 S8G - 0.8 ТБ
- D365 S4k - 15.8 ТБ
- D365 S32k - 15.7 ТБ
- D365 S128k - 15.6 ТБ
- D365 S1M - 15.3 ТБ
- D365 S4M - 14.5 ТБ
- D365 S16M - 13.2 ТБ
- D365 S256M - 7.7 ТБ
- D365 S1G - 3.6 ТБ
- ёмкие медленные НЖМД
- HGST (WD) HUH721010AL5204 (Ultrastar He10), 0F27354, SAS, 7200 rpm, 3.5", 10TB:
Регард 33 663 руб. => 25 641 => 21810 => 24570 => 21940 (2194 руб/ТБ) => 21790 (2179 руб/ТБ)
- Toshiba (MG06SCA10TE), SAS, 7200 rpm, 3.5", 10TB:
Регард 19820 (1982 руб/ТБ)
- HGST HUH721212AL5204 (Ultrastar He12), 0F29532, SAS, 7200 rpm, 3.5", 12TB:
Регард 29370 руб => 26190 (2182 руб/ТБ) => 26380 (2198 руб/ТБ)
- Western Digital Ultrastar DC HC530 14 TB (WUH721414AL5204):
Регард 31390 руб (2242 руб/ТБ) => 31200 (2228 руб/ТБ)
- быстрые маленькие НЖМД
- HGST HUC101818CS4204 (Ultrastar C10K1800), 0B31236, SAS, 10k rpm, 2.5", 1800 GB:
Регард 32 183 руб. => 25 956 => 22500 => 24660 (13700 руб/ТБ) => ?
- Toshiba AL14SEB18EQ, SAS, 10050 rpm, 2.5", 1800GB, Регард 20020 руб (11122 руб/ТБ) => 21060 (11700 руб/ТБ) (AL15SEB18EQ (512e/4kN) - 19820)
- Toshiba AL15SEB24EQ (512e/4kN), SAS, 10.5K rpm, 2.5", 2400 GB:
Регард 26050 руб (10854 руб/ТБ) => 26280 руб (10950 руб/ТБ) (в 5.5 раз)
- SSD серверные простые
- SSD Intel S3520 Series (SSDSC2BB016T701) 1.6 TB:
Регард 66 591 руб. => 62 024 => 51720 (32325 руб/ТБ, в 13.2 раза дороже) => нет в продаже
- SSD Intel S4500 Series (SSDSC2KB019T701) и D3-S4510 (SSDSC2KB019T801) 1.92 TB:
Регард 59560 руб => 56100 => 36330 (18921 руб/ТБ) => 31990 (16661 руб/ТБ)
- SSD Intel S4500 Series (SSDSC2KB038T701) и D3-S4510 (SSDSC2KB038T801) 3.84 TB:
Регард 130000 руб => 73060 (19026 руб/ТБ) => 58600 (15260 руб/ТБ; в 1.4 дороже быстрых дисков)
- SSD серверные повыносливее
- SSD Intel S3610 Series (SSDSC2BX016T401) 1.6 TB:
Регард 95 004 руб. => 90 479) => 73220 (45762 руб/ТБ) => нет в продаже
- SSD Intel S4600 Series (SSDSC2KG019T701) 1.92 TB или D3-S4610 (SSDSC2KG019T801 или SSDSC2KG038T801):
Регард 76310 руб => 47020 => 33000 (чистка склада?) (17187 руб/ТБ)
- SSD Intel D3-S4610 (SSDSC2KG019T801 или SSDSC2KG038T801):
47450 руб (24713 руб/ТБ) или 98102 (25547 руб/ТБ)
- Optane
- Intel Optane DC P4800X Series (SSDPED1K375GA01, AIC; SSDPE21K375GA01, 2.5") 375GB:
Регард 111750 руб => 69240 (184640 руб/ТБ, в 4.6 раз дороже SSD Intel DC S4600) => 84450
- Intel Optane DC P4800X Series 750GB SSDPE21K750GA01 (2.5"):
Регард 210220 руб => 187820 (250426 руб/ТБ) => 199470
- Intel Optane SSD DC P4800X Series (1.5TB, PCIe x4, 3D XPoint) 2.5" 15mm или AIC (SSDPE21K015TA01 и SSDPED1K015TA01):
455120 (303413 руб/ТБ)
- What is RAID?
- RAID and Data Protection Solutions for Linux (2003)
- HOWTO: Multi Disk System Tuning
- Форум по системам хранения данных
- полезные утилиты от LSI Logic
- Device-mapper Resource Page
- разработчик dmraid
- dm-crypt: a device-mapper crypto target (модуль dm-crypt)
- mdadm (исходные тексты)
- multipath-tools (модуль multipath)
- /usr/src/kernel/Documentation/md.txt (программный RAID в ядре 2.6)
- The Software-RAID HOWTO (описывается версия 0.90; 2004)
- Remote Conversion to Linux Software RAID-1 for Crazy Sysadmins HOWTO (поучителен метод автоматической откатки на старое ядро при неудачной загрузке с использованием нового ядра)
- Конвертация обычной установки Linux в Software-ROOT-RAID1 (raidtools, SCSI, lilo, AltLinux)
- How To Set Up Software RAID1 On A Running System (Incl. GRUB Configuration) (Debian Etch)
- LVM2 Resource Page
- LVM HOWTO
- Технология LVM, или логика против физики (Алексей Федорчук)
- Enterprise Volume Management System
- SNIA DDF (Common RAID Disk Data Format Specification)
- Adaptec Ultra-320 (AIC-7902W) Host-RAID on RedHat Linux
- Повесть о Linux и LVM (Logical Volume Manager) + дополнения
- Linux Hardware RAID Howto (оптимизация)
- Ускоряем софтрейд и RAID6 в домашнем сервере (запись ускоряется с 37 MBps до 165 MBps, перестроение - до 66 MBps)
- Восстановление массива RAID5 после сбоя двух дисков
- SuperMicro’s SC847 (SC847A) 4U chassis with 36 drive bays
- From 16 to 2 ports: Ideal SATA/SAS Controllers for ZFS & Linux MD RAID
- Petabytes on a Budget v2.0:
Revealing More Secrets (шасси backblaze, 135TB в 4U за $8000, 9000 дисков, смертность менее 5% в год, обслуживает 1 человек - развёртывает 6 ящиков в день, 2011)
- Развитие backblaze (Storage Pod 6.0): 60 дисков (480TB) в 4U (3 SATA контроллера по 4 порта, каждый порт подключается к backplane с мультипликатором на 5 дисков, апрель 2016)
- Backblaze Vaults: Zettabyte-Scale Cloud Storage Architecture (а что поверх шасси поверх Backblaze, распределённый RAID7, 2015)
- Как правильно мерять производительность диска
- Storage Performance Council Benchmark Results
- Hard disks, Linux, RAID, server performance tuning (2009)
- Отчёт backblaze о ST3000DM001 (из 5000 дисков через 3 года в работе осталось 6%) (у меня из 2 дисков 1 ещё жив :)
- Hard Drive Stats for Q2 2018 (отчёт Backblaze о надёжности дисков - 100 тысяч дисков)
- Выбор контроллера SAS
- btier is a kernel block device that creates a tiered device out of multiple smaller devices with automatic migration and smart placement of data chunks based up-on access patterns
- EnhanceIO driver is based on EnhanceIO SSD caching software product developed by STEC Inc. (EnhanceIO was derived from Facebook's open source Flashcache, последние изменения - 2012 год)
- Bcache is a Linux kernel block layer cache. It allows one or more fast disk drives such as flash-based solid state drives (SSDs) to act as a cache for one or more slower hard disk drives (предлагается взять из git клон ядра, пакет для Fedora 20, последние изменения - 2013 год)
- USE Method: Linux Performance Checklist
|
Bog BOS: hardware: Использование RAID контроллеров в Linux
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru