Библиотека тестирования СХД
«Открытая библиотека для создания приложений тестирования и измерения производительности программных и аппаратных компонентов систем хранения данных».
Дополнительно с документацией можно ознакомиться в директории docs/
Установка библиотек и компонентов
Для корректного выполнения комманд системой, необходимо иметь права суперпользователя (root).
Создайте отдельную папку для менеджера пакетов yarn
, перейдите в нее и выполняйте следующие команды:
Обновите пакетный менеджер и установите необходимые зависимости:
Ubuntu:
sudo apt update
sudo apt install npm
sudo apt install -y build-essential
Установка менеджера пакетов yarn
Внимание! Не устанавливать менеджер пакетов
yarn
в одну директорию с проектомtestlib
sudo npm install -g corepack
sudo corepack enable
sudo yarn init -2
sudo yarn set version stable
sudo yarn install
Для сборки открытой библиотеки для создания приложений тестирования и измерения производительности программных и аппаратных компонентов СХД необходимо выполнить следующую последовательность действий:
Установка и сборка проекта
Создайте отдельную папку для TestLib
, перейдите в нее и выполняйте следующие команды:
Склонируйте репозиторий, предварительно войдя в свою учетную запись на gitflic.ru и перейдите в его каталог:
sudo git clone https://gitflic.ru/project/bittech/testlib.git && cd testlib
Для установки зависимостей используйте скрипт:
sudo ./install_dependencies.sh
Данный скрипт запускает установку библиотеки
liburing
версии 2.5, на которой проект был протестирован.
Для автоматической сборки и установки всех компонентов можно воспользоваться командой:
sudo make all
Команда make all
выполнит следующие шаги:
- Проверит корректную работу всех Python-скриптов, запустив тесты в COMPONENTS/jobs с установленным PYTHONPATH.
- Перейдет в каталог COMPONENTS/gui и выполнит сборку GUI с помощью yarn, установит нужные версии, проведет линтинг, тестирование, а также упакует зависимости.
- Соберет все зависимости, используя npm в COMPONENTS/gui.
- Выполнит сборку компонента test-utility с использованием cmake в каталоге COMPONENTS/test-utility.
- Упакует проект в .deb и .rpm форматы с помощью nfpm.
ПРИМЕЧАНИЕ:
- Команда
make all
ожидает, что тесты завершатся без ошибок. В случае наличия ошибок сборка будет прервана. - Если возникнут ошибки, обратитесь к разработчику для проверки и обновления тестов или компонентов.
Инструкция по установке и настройке программного обеспечения testlib
Установка собранного пакета
sudo apt install ./testlib_1.0.2.amd64.deb
Перейдите в папку /opt/testlib/install
, сделайте копию файла inventory.yml.example
с новым именем inventory.yml
, это можно сделать следующей командой:
sudo cp inventory.yml.example inventory.yml
Настройте файл inventory.yml
согласно указаниям, представленным в таблице 1:
Таблица 1 – Типовая конфигурация настройки файла inventory.yaml
Параметр | Описание | Примечание |
---|---|---|
pbit_node_index | Порядковый номер ноды. | Возможные значения 1, 2, 3, …10 |
pbit_environment_key | Уникальный для всех машин в сети ключ окружения | Например, testlib1-1234abc |
pbit_mgmt_addr | Адрес хоста в сети управления (ip или DNS). Данный адрес вы можете посмотреть через команду ip -br a | Например, 10.20.30.40 |
pbit_data_network_addr | Адрес хоста в сети передачи данных (ip или DNS). Данный адрес вы можете посмотреть через команду ip -br a | Например, 10.0.0.100 |
ansible_host | Параметры подключения, используемые установщиком. Более подробно можно ознакомиться здесь: https://docs.ansible.com/ansible/latest/inventory_guide/connection_details.html https://docs.ansible.com/ansible/latest/inventory_guide/intro_inventory.html | Оставить по умолчанию |
ansible_connection | Оставить по умолчанию |
Перейдите в папку /opt/testlib/install/group_vars/
и сделайте копию файла all.yml.example
с новым именем all.yml
, это можно сделать следующей командой:
sudo cp all.yml.example all.yml
Настройте файл all.yml
согласно указаниям, представленным в таблице 2.
Таблица 2 – Типовая конфигурация настройки файла all.yml
Параметр | Описание | Примечание |
---|---|---|
HAMMER_URL | URL для скачивания приложения HammerDB. Ожидаемый формат архива tar.gz | Например, https://github.com/TPC-Council/HammerDB/releases/download/v4.12/HammerDB-4.12-Linux.tar.gz |
VDBENCH_URL | URL для скачивания приложения Vdbench. Ожидаемый формат архива .zip | Например, https://registry.gitflic.ru/project/bittech/testlib/package/-/generic/vdbench/50.40.7/Vdbench50407.zip |
- Выполнение сценария автоматического развертывания ПО
sudo /opt/testlib/install/bin/testlib-install
Будут скачаны и установлены следующие зависимости:
- fio
- vdbench
- pgbench
- hammerdb
- spdk nvme
- testlib_io_util
Запуск web-сервиса Запустится web-сервис. Дальнейшая работа с открытой библиотекой для создания приложений тестирования и измерения производительности программных и аппаратных компонентов СХД выполняется через web-интерфейс (доступен по порту : 3001).
Установка инструмента «Сollectd» При необходимости мониторинга нагрузки и локализации выявленных в процессе тестирования, узких мест на устройстве, необходимо установить инструмент «Сollectd» – системный сервис, осуществляющий сбор статистики использования ресурсов системы. Для этого необходимо выполнить следующее:
Установить «Сollectd» на тестируемое оборудование.
Использовать конфигурацию библиотеки тестирования
COMPONENTS/install/src/roles/testlib/templates/collectd.conf.j2
, либо расширить уже имеющуюся. Обычно конфигурация находится по пути/etc/collectd/collectd.conf
Сообщения пользователю при сборке библиотеки
«warning package.json: No license field»
Суть сообщения: Предупреждение об отсутствии поля ввода лицензии. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning testlib-ui@1.0.0: No license field»
Суть сообщения: Предупреждение об отсутствии поля ввода лицензии. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > @tiptap/vue-3@2.0.0-beta.220" has unmet peer dependency “@tiptap/core@^2.0.0-beta.209”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning “@tiptap/vue-3 > @tiptap/extension-bubble-menu@2.6.6” has unmet peer dependency “@tiptap/core@^2.6.6”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > vue-draggable-next@2.2.1" has unmet peer dependency “sortablejs@^1.14.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > sass-loader@10.5.2" has unmet peer dependency “webpack@^4.36.0 || ^5.0.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning " > vuetify-loader@2.0.0-alpha.9" has unmet peer dependency “@vue/compiler-sfc@^3.2.6”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
«warning “vuetify-loader > file-loader@6.2.0” has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
- « DEPRECATION WARNING: Sass's behavior for declarations that appear after nested»
Суть сообщения: Предупреждение об устаревании: поведение Sass для объявлений, которые появляются после вложенных. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
- «warning " > vue-cli-plugin-vuetify@2.5.5" has unmet peer dependency “webpack@^4.0.0 || ^5.0.0”»
Суть сообщения: Предупреждение о неверной зависимости от одноранговых узлов. Сборка будет продолжаться.
Действия: Действий пользователя не требуется.
Минимальные аппаратные и операционные технические требования для запуска и использования открытой библиотеки
Минимальные технические требования к аппаратным средствам для полнофункциональной работы ПО «TestLib»:
№ п/п | Состав оборудования | Детали |
---|---|---|
1 | Системный блок | |
Процессор | Core 2 duo 6750, 2,66 ГГц | |
ОЗУ | 4G | |
SSD | 10 Gb | |
Видеокарта | 256Mb PCI-E Radeon 3850 | |
Сетевая карта | 1 Gbit | |
2 | Монитор | |
3 | Клавиатура | |
4 | Манипулятор «мышь» | |
5 | Источник бесперебойного питания |
Для полнофункциональной работы ПО «TestLib» требуются следующие программные средства:
№ п/п | Программные средства | Детали |
---|---|---|
1 | Операционная система Linux | Ubuntu 24.04 RHEL 7+ |
2 | Пакетный менеджер | npm |
3 | Пакеты | - nfs-utils - ansible - parted - nodejs (>= 18.13.0) - fio - postgresql-client-common - collectd - libfuse3-dev - pkg-config - meson - python3-pip - libnuma-dev - libssl-dev - libcunit1 - libcunit1-doc - libcunit1-dev - uuid-dev - libaio-dev - python3-pyelftools |
4 | Модули ядра | - scst - scst_disk - scst_vdisk - iscsi_scst - nvme_tcp - nvmet - nvmet_tcp - nvme-rdma |
5 | Среда исполнения | Python 3 |
6 | Веб-браузер Firefox | версии не ниже 30.0) |
Также необходим доступ в сеть Интернет для загрузки иных программных компонентов, необходимых при сборке.
Для повышения эффективности использования ПО «Testlib», ниже приведен перечень общих рекомендаций для аппаратных средств:
- Рекомендуемый объем оперативной памяти 16–32 ГБ или больше, особенно для одновременного запуска нескольких тестов или работы с большими наборами данных (например, при тестах FIO с большими блоками или базами данных с PgBench).
- Для генерации и анализа тестовых данных рекомендуется выделенное пространство на тестируемом устройстве или подключенном хранилище. Свободное место минимум 50 ГБ для небольших тестов. Для крупных сценариев с большими объемами данных рекомендуемый объем пространства от 500 ГБ до 1 ТБ Сетевой интерфейс.
- Для тестирования сетевых хранилищ (iSCSI, NFS, NVMe-oF) требуется сетевой адаптер с пропускной способностью не менее 1 Гбит/с рекомендуется использование 10 Гбит/с сетевых адаптеров или выше для высокопроизводительных сценариев.
- Поддержка NVMe/SCSI - Для тестов NVMe (например, SPDK NVMe Perf) система должна быть оборудована поддерживаемыми NVMe-накопителями и соответствующими драйверами. Для тестов SCSI требуется наличие устройств или эмуляторов SCSI-таргетов.