Сборка и разборка автомата Калашникова (и снова про 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 сервер администрирование рейд.

См. также

SALE! 15%

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 7140 руб.

20.08.2024    32097    195    104    

186

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

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

15000 руб.

10.11.2023    15459    66    33    

83

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.06.2025, версия 1.3

19200 руб.

06.12.2023    14186    61    8    

90

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

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

14400 руб.

29.04.2020    37268    115    152    

82

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

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

4200 руб.

10.11.2015    63908    99    59    

82

Администрирование Инструменты администратора БД Удаленное управление Системный администратор 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Расширение разработано для автоматизации интеграции «1С:Зарплата и управление персоналом (редакция 3.1)» с сервисом Яндекс 360 через платформу «n8n». Расширение позволяет автоматически создавать учетные записи Яндекс для новых сотрудников, обновлять данные существующих сотрудников и блокировать учетные записи уволенных сотрудников. Обмен данными осуществляется через API Яндекс 360 с использованием промежуточного сервера платформы n8n, что обеспечивает гибкость, масштабируемость и упрощение интеграционных процессов.

3600 руб.

03.04.2025    824    2    0    

2

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

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    11111    13    4    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 20 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.

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