
Привет, Хабр! Меня зовут Алексей Козлов, я ведущий инженер‑проектировщик в центре компетенций по вычислительным комплексам в Т1 Интеграция, занимаюсь проектированием и внедрением систем хранения данных и систем резервного копирования. Сегодня поговорим про наше тестирование «новинки» отечественного СХД‑строения от компании Yadro — Tatlin.Unified Gen2. Почему новинки в кавычках? Потому что на момент развёртывания этой системы в нашей лаборатории количество поставленных заказчикам Tatlin Unified Gen2 исчислялось сотнями. Первые отгрузки были уже в октябре 2023 года.
Наш рынок систем хранения хорошо знаком с продуктами Yadro. Первое поколение Tatlin Unified было на аппаратной платформе с использованием RISC‑архитектуры: процессоры IBM Open Power 9, высокоскоростные шины PCIe 3.0 для подключения NVMe, полки DBN (Disk Bay NVMe), программное обеспечение контроллеров собственной разработки на базе ОС SUSE. Отлично зарекомендовавшие себя технологии плюс специализированная аппаратная платформа и софт от российских разработчиков, участвующих в консорциуме Open Power Foundation, выдали хороший, перспективный продукт. Но всё меняется, и Yadro вышла из консорциума, переориентировавшись на архитектуру Intel. После этого вышла промежуточная на пути ко второму поколению СХД — Tatlin.Unified.SE. У неё были те же функциональные возможности, что и у первого поколения, но есть ограничения по масштабируемости и выбору накопителей. И теперь система эволюционировала в полноценную версию второго поколения, существенно добавив в функциональности.
Конфигурация стенда
В нашем стенде кроме самой СХД четыре сервера Yadro X3-205, два коммутатора SAN и коммутатор Ethernet. Подробная конфигурация:
-
Четыре сервера Yadro X3–205 в конфигурации:
-
шасси сервера Yadro X3–205 -2U 12+2xSFF/LFF/NVMe;
-
два процессора Intel Xeon 6336Y;
-
8 модулей памяти 64 ГБ DDR4–3200 ECC RDIMM;
-
RAID‑контроллер SAS/SATA, 16i портов (Mini‑SAS HD) c BBU;
-
5 накопителей SSD 1,92 ТБ SATA;
-
3 накопителя 480 ГБ SATA;
-
контроллер Ethernet 2 x 25 Гбит SFP28;
-
контроллер Fibre Channel 2 x 16 Гбит;
-
два блока питания 1200 Вт.
-
-
Система хранения данных Yadro Tatlin.Unified Gen2:
-
шасси СХД с 512 ГБ кеш‑памяти на контроллер;
-
дисковая полка DBS с двумя системными накопителями;
-
32 накопителя 10 ТБ 7200 об/мин SAS, 3,5 дюйма;
-
16 накопителей SAS SSD 1,92 ТБ, 1DWPD, 2,5 дюйма;
-
4 двухпортовые карты Ethernet 10/25 Гб/c с трансиверами 25Gbase‑SR;
-
2 двухпортовые карты Fibre Channel 32 Гб/c.
-
-
2 SAN‑коммутатора Huawei SNS3664 с SFP+ модулями 16 Гб/c.
-
Коммутатор Huawei CE6866 с модулями SFP28 25Гб/c.
Схема стенда выглядит так:

Серверы и СХД подключены к двум изолированным SAN‑фабрикам Brocade через порты 16 Гб/c помощью Fibre Channel, а также к сети передачи данных через порты 25 Гб/c. На серверах установлена ОС Базис vcore 1.4.
Программа тестирования
При тестировании мы:
-
исследуем заявленные возможности СХД на функциональных тестах;
-
проверяем заявленную отказоустойчивость;
-
исследуем производительность.
Подробная программа тестирования.
Функциональные проверки соответствия заявленным техническим характеристикам:
-
проверка доступности интерфейса управления системы хранения данных;
-
создание групп накопителей защищённых избыточностью данных (пулы хранения);
-
создание логического тома (ресурса);
-
подключение блочного ресурса (логического тома) к серверу по протоколу Fibre Channel;
-
подключение блочного ресурса (логического тома) к серверу по протоколу ISCSI;
-
проверка работы многопутевого доступа (multipath) к логическим томам;
-
создание файловой системы на презентованных логических томах (блочных ресурсах);
-
увеличение размера пула хранения и перераспределение данных по накопителям;
-
увеличение размера логического тома;
-
удаление логического тома (ресурса);
-
удаление групп накопителей защищённых избыточностью данных (пулов хранения);
-
проверка журналирования действий пользователя;
-
проверка уровней доступа пользователей;
-
проверка создания файловых ресурсов NFS;
-
проверка создания файловых ресурсов CIFS;
-
подключение общих файловых ресурсов по протоколу NFS к ОС Linux;
-
подключение общих файловых ресурсов по протоколу CIFS к OC Windows Server.
Проверки надёжности:
-
обеспечение непрерывности работы при отключении портов ввода/вывода;
-
обеспечение непрерывности работы при отключении SAS‑портов от дисковой полки;
-
обеспечение непрерывности работы при отказе двух дисков в дисковой полке;
-
обеспечение непрерывности работы при отказе контроллера системы хранения данных;
-
обеспечение консистентности данных в случае нештатного отключения системы хранения данных от электрической сети;
-
отключение RDMA‑соединения;
-
отключение блока питания контроллерного шасси от электрической сети.
Нагрузочное тестирование
-
последовательная нагрузка на запись для блочного доступа по протоколу Fibre Channel блоком 512 КБ;
-
последовательная нагрузка на чтение для блочного доступа по протоколу Fibre Channel блоком 512 КБ;
-
случайная нагрузка на запись для блочного доступа по протоколу Fibre Channel блоком 8 КБ в соотношении чтения/записи 30/70;
-
случайная нагрузка на чтение для блочного доступа по протоколу Fibre Channel блоком 8 КБ в соотношении чтения/записи 70/30;
-
смешанная случайная нагрузка для блочного доступа по протоколу Fibre Channel блоком 64 КБ в соотношении чтения/записи 50/50;
-
суточный тест под нагрузкой на запись для блочного доступа по протоколу Fibre Channel блоком 8 кб в соотношении чтения/записи 70/30 для проверки отсутствия снижения производительности за счет эффекта «Write Cliff»;
-
последовательная нагрузка на запись для блочного доступа по протоколу ISCSI блоком 512 КБ;
-
последовательная нагрузка на чтение для блочного доступа по протоколу ISCSI блоком 512 КБ;
-
случайная нагрузка на запись для блочного доступа по протоколу ISCSI блоком 8 КБ в соотношении чтения/записи 30/70;
-
случайная нагрузка на чтение для блочного доступа по протоколу ISCSI блоком 8 КБ в соотношении чтения/записи 70/30;
-
смешанная случайная нагрузка для блочного доступа по протоколу ISCSI блоком 64 КБ в соотношении чтения/записи 50/50;
-
последовательная нагрузка на чтение файловых ресурсов через протокол NFS;
-
последовательная нагрузка на запись файловых ресурсов через протокол NFS;
-
случайная нагрузка на чтение файловых ресурсов через протокол NFS;
-
случайная нагрузка на запись файловых ресурсов через протокол NFS;
-
смешанная случайная нагрузка файловых ресурсов через протокол NFS.
Методика тестирования
Функциональные проверки выполняем в соответствии с документацией на систему. Тестирование отказоустойчивости проводим под нагрузкой синтетического теста, эмулируем отказ компонента и оцениваем снижение производительности. Исследование производительности проводим группой тестов для протоколов FC, ISCSI, NFS c созданием синтетической нагрузки разными профилями. Используем версию ПО 3.1.0–679 на пулах с прямой адресацией.
Для создания синтетической нагрузки используем программу FIO (Flexible I/O tester) версии 3.26. Для каждого сервера создаём конфигурационный файл под каждый тип нагрузки, и одновременно запускаем файлы конфигурации с помощью FIO Server.
Отдельно проверяем эффект «write cliff» на пуле прямой адресации. Этот эффект обычно возникает при длительной нагрузке на СХД и выражается в значительном падении производительности с течением времени. Причина в особенности работы SSD и запуске сборки мусора.
На пулах прямой адресации СХД использует механизм сопоставления виртуальных и физических адресов, при котором:
-
адресное пространство ресурсов отображается на физическое пространство накопителей большими блоками (десятки мегабайтов);
-
таблица адресации (правила адресации) очень компактна и полностью находится в оперативной памяти;
-
операции выделения и освобождения пространства для тонких ресурсов производятся практически мгновенно;
-
перезапись уже записанных виртуальных адресов производится по тем же физическим адресам;
-
фоновые процессы, которые перераспределяют данные и меняют таблицу адресации, работают только при изменении количества накопителей в пуле (при выходе из строя, добавлении и т. д.);
-
фоновые процессы не оказывают значительного влияния на пользовательскую нагрузку, интенсивность их работы подстраивается динамически.
На основании данного механизма, производительность пулов прямой адресации и ресурсов не зависит от предыстории и длительности эксплуатации, состояния пула и доли занятого пространства.
Параметры numjobs
и iodepth
для профиля FIO нужно выбирать так, чтобы соблюдалось оптимальное соотношение IOPS и задержек. Подробно об этом написано в статье «Тестирование блочных стораджей: нюансы и особенности практики».
Сами инженеры Ядра тестируют свою СХД на разных версиях ПО автоматизированным тестом, измеряющим огромное количество комбинаций различных схем защиты, размеров блока, типов подключения, соотношений чтения/записи, количества накопителей. Делать это вручную можно, но получится очень долго. Поэтому воспользуемся готовыми результатами от Ядра и используем их для проверки на своём стенде. Для нашего стенда из четырёх серверов и СХД в конфигурации 24 SSD со схемой защиты 8+2 будут такие параметры iodepth и numjobs и ожидаемые показатели производительности:

Технические подробности профилей нагрузки FIO для каждого теста.
Группа тестов для блочного доступа по протоколу Fibre Channel
Для каждого сервера создали 5 томов объёмом 500 ГБ на SSD‑пуле из 24-х SSD в схеме 8+2. Подключили их по протоколу Fibre Channel. Для каждого сервера создали файл конфигурации FIO.
Тест 1. Последовательная нагрузка на запись блоком 512 КБ.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based=1 ramp_time=6m runtime=15m rw=write numjobs=1 iodepth=2 blocksize=512k write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [job-01] filename=/dev/mapper/3614529002c6005e8400240000000000d [job-02] filename=/dev/mapper/3614529002c6005e8400240000000000e [job-03] filename=/dev/mapper/3614529002c6005e8400240000000000f [job-04] filename=/dev/mapper/3614529002c6005e84002400000000010 [job-05] filename=/dev/mapper/3614529002c6005e84002400000000011
Создали 5 секций с потоками [job-01] — [job-05], каждый работает на своём ресурсе с глубиной очереди 2.
Тест 2. Последовательная нагрузка на чтение блоком 512 КБ.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based=1 ramp_time=6m runtime=15m rw=read numjobs=1 iodepth=2 blocksize=512k write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [job-01] filename=/dev/mapper/3614529002c6005e8400240000000000d [job-02] filename=/dev/mapper/3614529002c6005e8400240000000000e [job-03] filename=/dev/mapper/3614529002c6005e8400240000000000f [job-04] filename=/dev/mapper/3614529002c6005e84002400000000010 [job-05] filename=/dev/mapper/3614529002c6005e84002400000000011
Создали 5 секций с потоками [job-01] — [job-05], каждый работает на своём ресурсе с глубиной очереди 2.
Тест 3. Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s rw=randrw [oltp] runtime=900 numjobs=5 iodepth=5 blocksize=8k rwmixread=30 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e8400240000000000d filename=/dev/mapper/3614529002c6005e8400240000000000e filename=/dev/mapper/3614529002c6005e8400240000000000f filename=/dev/mapper/3614529002c6005e84002400000000010 filename=/dev/mapper/3614529002c6005e84002400000000011
Тест 4. Случайная нагрузка на чтение блоком 8 КБ в соотношении чтение/запись 70/30.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=900 numjobs=5 iodepth=16 blocksize=8k rwmixread=70 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e8400240000000000d filename=/dev/mapper/3614529002c6005e8400240000000000e filename=/dev/mapper/3614529002c6005e8400240000000000f filename=/dev/mapper/3614529002c6005e84002400000000010 filename=/dev/mapper/3614529002c6005e84002400000000011
Тест 5. Смешанная случайная нагрузка блоком 64 КБ в соотношении чтение/запись 50/50.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=900 numjobs=5 iodepth=7 blocksize=64k rwmixread=50 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e8400240000000000d filename=/dev/mapper/3614529002c6005e8400240000000000e filename=/dev/mapper/3614529002c6005e8400240000000000f filename=/dev/mapper/3614529002c6005e84002400000000010 filename=/dev/mapper/3614529002c6005e84002400000000011
Тест 6. Суточный тест под нагрузкой на запись блоком 8 КБ в соотношении чтение/запись 70/30 для проверки отсутствия снижения производительности из-за эффекта «Write Cliff».
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=86400 numjobs=5 iodepth=16 blocksize=8k rwmixread=70 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=10000 filename=/dev/mapper/3614529002c6005e8400240000000000d filename=/dev/mapper/3614529002c6005e8400240000000000e filename=/dev/mapper/3614529002c6005e8400240000000000f filename=/dev/mapper/3614529002c6005e84002400000000010 filename=/dev/mapper/3614529002c6005e84002400000000011
Группа тестов для блочного доступа по протоколу ISCSI
Для каждого сервера создали 5 томов объёмом 500 ГБ на SSD пуле из 24-х SSD в схеме 8+2. Подключили их по протоколу ISCSI. Для каждого сервера создали файл конфигурации FIO.
Тест 7. Последовательная нагрузка на запись блоком 512 КБ.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based=1 ramp_time=6m runtime=15m rw=write numjobs=1 iodepth=2 blocksize=512k write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [job-01] filename=/dev/mapper/3614529002c6005e84002400000000031 [job-02] filename=/dev/mapper/3614529002c6005e84002400000000032 [job-03] filename=/dev/mapper/3614529002c6005e84002400000000033 [job-04] filename=/dev/mapper/3614529002c6005e84002400000000034 [job-05] filename=/dev/mapper/3614529002c6005e84002400000000035
Создали 5 секций с потоками [job-01] — [job-05], каждый работает на своём ресурсе с глубиной очереди 2.
Тест 8. Последовательная нагрузка на чтение блоком 512 КБ.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based=1 ramp_time=6m runtime=15m rw=read numjobs=1 iodepth=2 blocksize=512k write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [job-01] filename=/dev/mapper/3614529002c6005e84002400000000031 [job-02] filename=/dev/mapper/3614529002c6005e84002400000000032 [job-03] filename=/dev/mapper/3614529002c6005e84002400000000033 [job-04] filename=/dev/mapper/3614529002c6005e84002400000000034 [job-05] filename=/dev/mapper/3614529002c6005e84002400000000035
Тест 9. Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=900 numjobs=5 iodepth=5 blocksize=8k rwmixread=30 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e84002400000000031 filename=/dev/mapper/3614529002c6005e84002400000000032 filename=/dev/mapper/3614529002c6005e84002400000000033 filename=/dev/mapper/3614529002c6005e84002400000000034 filename=/dev/mapper/3614529002c6005e84002400000000035
Тест 10. Случайная нагрузка на чтение блоком 8 КБ в соотношении чтение/запись 70/30.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=900 numjobs=5 iodepth=16 blocksize=8k rwmixread=70 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e84002400000000031 filename=/dev/mapper/3614529002c6005e84002400000000032 filename=/dev/mapper/3614529002c6005e84002400000000033 filename=/dev/mapper/3614529002c6005e84002400000000034 filename=/dev/mapper/3614529002c6005e84002400000000035
Тест 11. Смешанная случайная нагрузка блоком 64 КБ в соотношении чтение/запись 50/50.
[global] ioengine=libaio direct=1 size=100% group_reporting=1 time_based randrepeat=0 ramp_time=25s stonewall rw=randrw [oltp] runtime=900 numjobs=5 iodepth=7 blocksize=64k rwmixread=50 write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 filename=/dev/mapper/3614529002c6005e84002400000000031 filename=/dev/mapper/3614529002c6005e84002400000000032 filename=/dev/mapper/3614529002c6005e84002400000000033 filename=/dev/mapper/3614529002c6005e84002400000000034 filename=/dev/mapper/3614529002c6005e84002400000000035
Группа тестов для файлового доступа по протоколу NFS
Создали два ресурса по 5 ТБ (NFS01 и NFS02) и подключили по протоколу NFS через порты P40 для NFS01 и p50 для NFS02. Серверы hv01 и hv02 подключили к ресурсу NFS01, серверы hv03 и hv04 — к ресурсу NFS02.
Смонтировали файловый ресурс на каждом сервере в /mnt/nfs. На серверах создали папки:
/mnt/nfs/dir1 для hv01;
/mnt/nfs/dir2 для hv02;
/mnt/nfs/dir3 для hv03;
/mnt/nfs/dir4 для hv04.
Для каждого сервера создали файл конфигурации FIO.
Тест 12. Последовательная нагрузка на чтение.
[global] ioengine=libaio direct=1 group_reporting=1 numjobs=10 iodepth=16 time_based=1 runtime=900 blocksize=128k rw=read file_service_type=sequential nrfiles=25000 filesize=1m write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [Res1] directory=/mnt/nfs/dir2
Тест 13. Последовательная нагрузка на запись.
[global] ioengine=libaio direct=1 group_reporting=1 numjobs=10 iodepth=16 time_based=1 runtime=900 blocksize=128k rw=write file_service_type=sequential nrfiles=25000 filesize=1m write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [Res1] directory=/mnt/nfs/dir2
Тест 14. Случайная нагрузка на чтение.
[global] ioengine=libaio direct=1 group_reporting=1 numjobs=10 iodepth=16 loops=1000 runtime=900 blocksize=128k rw=randread file_service_type=sequential nrfiles=25000 filesize=1m write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [Res1] directory=/mnt/nfs/dir2
Тест 15. Случайная нагрузка на запись.
[global] ioengine=libaio direct=1 group_reporting=1 numjobs=10 iodepth=16 time_based=1 runtime=900 blocksize=128k rw=randwrite file_service_type=roundrobin openfiles=500 nrfiles=25000 filesize=1m write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [Res1] directory=/mnt/nfs/dir2
Тест 16. Смешанная случайная нагрузка.
[global] ioengine=libaio direct=1 group_reporting=1 numjobs=10 iodepth=16 loops=1000 runtime=900 blocksize=128k rw=randrw rwmixread=50 file_service_type=sequential nrfiles=25000 filesize=1m write_lat_log=/usr/bin/FIO/logs/ write_bw_log=/usr/bin/FIO/logs/ write_iops_log=/usr/bin/FIO/logs/ log_avg_msec=1000 [Res1] directory=/mnt/nfs/dir2 }
Результаты тестирования
Функциональные тесты
По функциональным тестам всё ожидаемо: пулы создаются, интерфейс работает, тома создаются и удаляются. Блочный и файловый доступ работает.
Проверки надёжности
Тест 1. Обеспечение непрерывности работы при отключении портов ввода/вывода.
Перед отключением портов запустили конфигурация FIO «Случайная нагрузка на запись блоком 8 КБ в соотношении чтения/записи 30/70 на протоколе Fibre Channel» на четырёх серверах.


Ввод‑вывод после отключения портов не прерывается, ненадолго снижается производительность в IOPS и незначительно растёт задержка вывода. На графике потребления портов FC снижается общая загрузка. После восстановления подключений FC производительность СХД и потребление портов восстанавливается. В данном тесте и в последующих, максимальная пропускная способность ограничена скоростью портов FC 16 Гбит/с.
Тест 2. Обеспечение непрерывности работы при отключении SAS‑портов от дисковой полки.
Перед отключением SAS‑портов запустили конфигурацию FIO «Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70 на протоколе Fibre Channel» на четырёх серверах.


Ввод‑вывод после отключения одного из SAS‑портов не прерывается, производительность снижается с незначительным ростом задержки ввода‑вывода. Потребление FC портов снижается в два раза. После восстановления подключения SAS производительность восстанавливается. Через несколько минут снова кратковременно падает производительность с последующим восстановлением, но без снижения потребления портов FC.
Тест 3. Обеспечение непрерывности работы при отказе двух дисков в дисковой полке.
Перед отключением двух накопителей запустили конфигурацию FIO «Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70 на протоколе Fibre Channel» на четырёх серверах. Нюанс в том, что в первой подключённой к контроллерам дисковой полке есть два накопителя в слотах 94 и 95. Это накопители, которые используются для работы кластера, не содержат данные. Уровень защиты данных кластера — RAID1, или «зеркало». Если извлечём два этих диска, то система хранения перестанет работать.


После извлечения двух дисков резко кратковременно снижается производительность с последующим восстановлением. Ввод‑вывод не прерывается.
После установки дисков на свои места автоматически запускается процесс восстановления, последующий запуск теста показывает ожидаемое снижение производительности. Восстановление пула проходит успешно.

Тест 4. Обеспечение непрерывности работы при отказе контроллера системы хранения данных.
Перед отключением контроллера запустили конфигурацию FIO «Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70 на протоколе Fibre Channel» на четырёх серверах.


После отключения одного контроллера проседает производительность и кратковременно резко увеличивается задержка ввода‑вывода. Операции ввода‑вывода не прерываются.
Сюрпризом стала информация от вендора, что отключение контроллера в рабочем состоянии является нерекомендованным действием и штатное восстановление работоспособности отключённого контроллера не предусмотрено. Это выяснилось, когда отключённый контроллер отказался возвращаться в кластер. Поэтому пришлось открыть обращение в техподдержку и восстановить работоспособность с помощью сервисного инженера. Тем не менее, система показала надёжность при нештатном отказе контроллера и не оборвала ввод‑вывод.
Тест 5. Обеспечение консистентности данных в случае нештатного отключения системы хранения от электрической сети.
Создали ресурс 5 ТБ (NFS01) и подключаем по протоколу NFS через порты P40. Сервер hv01 подключили к ресурсу NFS01.
Смонтировали файловый ресурс в /mnt/nfs. Создали папку /mnt/nfs/dir1 для hv01; в ней — текстовый файл с текстом.
Отключили контроллерную полку от источников питания. После восстановления питания проверили доступ к NFS папке и содержимому текстового файла. Система хранения корректно завершила работу на встроенных батареях, после включения доступ к ресурсам успешно восстановился.
Тест 6. Отключение RDMA‑соединения.
Перед отключением RDMA‑соединения запустили конфигурацию FIO «Случайная нагрузка на запись блоком 8 КБ в соотношении чтение/запись 30/70 на протоколе Fibre Channel» на четырёх серверах.
Отключили одно соединение RDMA c паузой в 10 минут перед обратным подключением для отработки контроллерами нештатной ситуации.

После отключения одного кабеля RDMA кратко просела производительность с незначительным увеличением задержки, ввод‑вывод не прекращается.
Тест 7. Отключение блока питания контроллерного шасси от электрической сети.
При отключении блока питания система продолжает работу, в интерфейсе управления в разделе «Состояние» возникает сообщение об аппаратной ошибке. В журналах фиксируется событие об отсутствии питания на отключенном блоке питания.
Нагрузочные испытания
Тест 1. Последовательная нагрузка на запись для блочного доступа по протоколу Fibre Channel блоком 512 КБ.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 2. Последовательная нагрузка на чтение для блочного доступа по протоколу Fibre Channel блоком 512 КБ.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 3. Случайная нагрузка на запись для блочного доступа по протоколу Fibre Channel блоком 8 КБ в соотношении чтение/запись 30/70.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 4. Случайная нагрузка на чтение для блочного доступа по протоколу Fibre Channel блоком 8 КБ в соотношении чтение/запись 70/30.
Результат тестирования FIO:



Показатели мониторинга СХД:

Тест 5. Смешанная случайная нагрузка для блочного доступа по протоколу Fibre Channel блоком 64 КБ в соотношении чтение/запись 50/50.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 6. Суточный тест под нагрузкой на запись для блочного доступа по протоколу Fibre Channel блоком 8 КБ в соотношении чтение/запись 30/70 для проверки отсутствия снижения производительности из-за эффекта «Write Cliff».
Результат тестирования FIO:



Показатели мониторинга СХД:

Тест 7. Последовательная нагрузка на запись для блочного доступа по протоколу ISCSI блоком 512 КБ.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 8. Последовательная нагрузка на чтение для блочного доступа по протоколу ISCSI блоком 512 КБ.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 9. Случайная нагрузка на запись для блочного доступа по протоколу ISCSI блоком 8 КБ в соотношении чтение/запись 30/70.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 10. Случайная нагрузка на чтение для блочного доступа по протоколу ISCSI блоком 8 КБ в соотношении чтение/запись 70/30.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 11. Смешанная случайная нагрузка для блочного доступа по протоколу ISCSI блоком 64 КБ в соотношении чтение/запись 50/50.
Результат тестирования FIO:



Показатели мониторинга СХД:


Тест 12. Последовательная нагрузка на чтение файловых ресурсов через протокол NFS.
Результат тестирования FIO:



Тест 13. Последовательная нагрузка на запись файловых ресурсов через протокол NFS.
Результат тестирования FIO:



Тест 14. Случайная нагрузка на чтение файловых ресурсов через протокол NFS.
Результат тестирования FIO:



Тест 15. Случайная нагрузка на запись файловых ресурсов через протокол NFS.
Результат тестирования FIO:



Тест 16. Смешанная случайная нагрузка файловых ресурсов через протокол NFS.
Результат тестирования FIO:



Выводы
Новое поколение СХД Tatlin.Unified на испытаниях показало заявленную надёжность и соответствие анонсированным функциональным возможностям. Результаты тестов производительности близки к ожидаемым значениям. Это хорошая новость для тех, кто ждёт сайзер системы. Есть надежда, что, когда он станет доступен для партнеров, сайзер будет основан на реальных тестах системы, а не на математическом расчёте.
С каждой версией микрокода СХД появляются новые необходимые функции, есть чёткий план развития системы. Это очень важно в условиях повсеместного перехода с решений зарубежных вендоров на российские аналоги.
Всё ещё не хватает горизонтальной масштабируемости контроллеров, но это пока недостаток всех российских систем хранения.
ссылка на оригинал статьи https://habr.com/ru/articles/866298/
Добавить комментарий