Сборка и разборка автомата Калашникова (и снова про RAID)

13.06.18

База данных - Инструменты администратора БД

Тестирование RAID на запись в различных условиях.

Случайно купил себе сервер HP proliant ML150G3 (Xeon E5310 1.6GHz)*2, 8Gb,SmartArray E200i 128M + (SAS 72G 15k)*4. Добавил  SATA WD 80G в качестве системного, установил Ubuntu server 16.04.4 без swap и GUI (для чистоты эксперимента) и решил поиграть с RAID массивами. Пособирать, поразбирать, поломать RAID массивы, пощупать, так сказать собственными ручками.

Поводом стала статья на Хабре  Почему RAID5 — «must have»?

Странно сравнивать надежность массива из трех и четырех дисков, было бы правильно сравнить RAID10 и RAID5 из трех основных и одного резервного диска. У этих двух массивов одинаковое число дисков -4  и одинаковая емкость - удвоенная емкость одного диска, Надежность RAID 5 в данном случае выше, поскольку в случае выхода из строя одного диска - он заменяется резервным, а после выхода из строя еще одного диска массив сохраняет работоспособность, Т.е. сохраняется работоспособность при выходе из строя любых ДВУХ!! дисков. В комментариях к статье указывалось, что скорость записи на RAID 10 , выше, чем на RAID 5, особенно когда запись идет в несколько потоков и мелкими файлами. Вот это и проверим. Raid монтировался в /mnt/raid, файловая система ext4. В качестве проверки использовался bash скрипт, который писал файлы на диск в один или несколько потоков. Для записи файлов использовалась команда dd , файлы создавались из /dev/urandom. Общий объем файлов всегда 1Гб, но было три теста:

0) 64 потока, каждый поток пишет на диск 16384 файлов по 1к

1) 8 потоков, каждый пишет на диск 128 файлов по 1М

2)1 поток, один файл 1Г.

Фиксируется только время записи. Скрипт, собственно вот:

#!/bin/bash
clear
declare -i K=1024
declare -i -r BLOCK_SIZE=1024 #запись файла блоками по 1 к
declare -i BLOCK_COUNT        #число 1к-блоков на файл 
declare -i TEST_NUM           #номер теста 0,1,2 
declare -i THREAD_COUNT       #число потоков записи файлов
declare -i LOOP_COUNT         #число записываемых файлов в одном потоке
declare -r FILE_PREFIX=File
declare -r LOG=/home/user/raid/raid.log
TEST_DIR=/mnt/raid
exec >>$LOG 2>&1

for TEST_NUM in {0..2};do

  find $TEST_DIR -type f -name "${FILE_PREFIX}*" -delete

  BLOCK_COUNT=$((K ** $TEST_NUM)) #1,1K,1M
  THREAD_COUNT=$((8 ** (2-$TEST_NUM))) #64,8,1
  LOOP_COUNT=$((128 ** (2-$TEST_NUM))) #16384,128,1

  echo BLOCK_SIZE    $BLOCK_SIZE
  echo BLOCK_COUNT   $BLOCK_COUNT
  echo THREAD_COUNT  $THREAD_COUNT
  echo LOOP_COUNT  $LOOP_COUNT
  echo SUM_FILES_LEN $(($BLOCK_SIZE*$BLOCK_COUNT*$THREAD_COUNT*LOOP_COUNT))

  time {
    for ((THREAD=0; THREAD < $THREAD_COUNT; THREAD++));do
      for ((LOOP=0; LOOP < $LOOP_COUNT; LOOP++));do
        #echo $THREAD $LOOP
        dd status=none if=/dev/urandom of=${TEST_DIR}/${FILE_PREFIX}_${TEST_NUM}_$(printf "%02d_%05d" ${THREAD} ${LOOP}) bs=$BLOCK_SIZE count=$BLOCK_COUNT
      done &
    done
    wait
  }
echo "#####################################"

done

find $TEST_DIR -type f -name "${FILE_PREFIX}*" -delete

Результаты теста приведены на скриншоте. Условные обозначения raid5.4 - рейд 5 из четырех дисков (без резерва) raid5.4-1 - тот же raid, без одного диска для эмуляции отказа. Остальные по аналогии.

Выводы:

Как видно из таблички скорость записи практически одинакова на всех массивах. При записи файлов в несколько потоков наблюдалась 100% загрузка процессора. Видимо именно проц был узким местом при записи мелких файлов в несколько потоков. Не знаю, может более опытные товарищи подскажут. Для себя я бы выбрал рейд 5 с тремя дисками и одним диском горячего резерва.

В качестве soft raid использовал mdadm. Но после удаления одного диска raid не заработал, поскольку возникли проблемы c суперблоком. Может я что не так делаю, но запустить софтовый raid без одного диска у меня не получилось. Надеюсь народ, который использует софтовые рейды 5 проверяет их на отказоустойчивость перед отправкой в реальное плавание ;-).

-------------------------------------------------------------------------------------------------------------------------------------------

Ну и для сравнения укажу результаты чтения диска программой hdparm с различными raid.

Сразу хочу заметить, что hdparm работает с устройством напрямую, без файловой системы, поэтому реальные результаты работы с файлами могут быть другими.

raid 5.4 Timing cached reads 5626 in 2.00 second =2819.53 Mb/sec

Timing buffered disk reads 642 Mb in 3.00  second=213.84 Mb/sec

raid 5.3 Timing cached reads 5720 in 2.00 second =2866.77 Mb/sec

Timing buffered disk reads 448 Mb in 3.00  second=149.12 Mb/sec

raid 10 Timing cached reads 5748 in 1.99 second =2881.31 Mb/sec

Timing buffered disk reads 542 Mb in 3.00  second=180.58 Mb/sec

RAID test bash linux ubuntu debian server сервер администрирование рейд.

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2964    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3499    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177724    1073    0    

849

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27369    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61309    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11742    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

3600 руб.

06.02.2017    31105    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10974    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nyam-nyam 14.06.18 11:23 Сейчас в теме
Не указан размер страйпа RAID5. RAID5 при записи целиком страйпа по производительности будет равен или быстрее RAID10 - XOR процессор рейда делает очень быстро, а запись на отдельный диск будет равна x/(n-1) и 2x/n для RAID5 и RAID10 соответственно (х - размер страйпа, n - кол-во дисков в массиве). В случае записи данных в не пустой страйп и размером меньше чем страйп, RAID5 для расчёта контрольной суммы должен сначала считать этот страйп, потом рассчитать XOR, а затем записать изменённый данные - вот тут и появляется падение производительности.
В данном тесте разницы в RAID5 и RAID10 практически нет скорее всего что не было случаев перезаписи страйпов. Однако, для баз данных как раз характерны сценарии с перезаписью страйпов (маленькие изменения большого файла) и падение производительности на RAID5. Есть так же некоторые сомнения по поводу распараллеливания потоков данным скриптом:

for ((LOOP=0; LOOP < $LOOP_COUNT; LOOP++));do
#echo $THREAD $LOOP
dd status=none if=/dev/urandom of=${TEST_DIR}/${FILE_PREFIX}_${TEST_NUM}_$(printf "%02d_%05d" ${THREAD} ${LOOP}) bs=$BLOCK_SIZE count=$BLOCK_COUNT
done &

я бы написал вот так:

for ((LOOP=0; LOOP < $LOOP_COUNT; LOOP++));do
#echo $THREAD $LOOP
dd status=none if=/dev/urandom of=${TEST_DIR}/${FILE_PREFIX}_${TEST_NUM}_$(printf "%02d_%05d" ${THREAD} ${LOOP}) bs=$BLOCK_SIZE count=$BLOCK_COUNT &
done
viptextil1; blindcat2006; beefit; +3 Ответить
2. A_Max 19 14.06.18 15:07 Сейчас в теме
(1) и именно для этого в бд делается размер страницы равный размеру страйпа (или наоборот кому как удобней)
viptextil1; +1 Ответить
3. viptextil1 23 15.06.18 08:32 Сейчас в теме
(1) Да я бы и рад посмотреть размер страйпа, но не знаю где. При создании железного raid он не указывается... Может надоумите, где глянуть?
for ((LOOP=0; LOOP < $LOOP_COUNT; LOOP++));do
#echo $THREAD $LOOP
dd status=none if=/dev/urandom of=${TEST_DIR}/${FILE_PREFIX}_${TEST_NUM}_$(printf "%02d_%05d" ${THREAD} ${LOOP}) bs=$BLOCK_SIZE count=$BLOCK_COUNT &
done

Э-э-э, нет. Так не пойдет. Так каждый отдельный файл будет писаться отдельным потоком, а у меня в "нулевом" тесте пишутся 16384 файла последовательно в одном потоке.
4. nyam-nyam 15.06.18 09:52 Сейчас в теме
(3) Размер страйпа можно посмотреть/изменить в утилите настройки RAID. Для HP это HP Array Configuration Utility.

По поводу куда поставить & - согласен. Но для демонстрации проседания производительности RAID5 надо всё же делать перезапись. Впрочем, за счёт кэша на RAID и встроенного оптимизатора возможно и не получится увидеть значимой разницы в скорости записи. Как вариант - отключить кэширование записи
5. viptextil1 23 17.06.18 18:14 Сейчас в теме
(4)
Размер страйпа можно посмотреть/изменить в утилите настройки RAID. Для HP это HP Array Configuration Utility.

Вот спасибо. Действительно, настройки моего контроллера задаются утилитой ssacli.

Спасибо, узнал для себя много нового.
Оставьте свое сообщение