С момента прошлой статьи прошло 2 года (и за время написания статьи ещё полгода), за это время:
количество дисков в системе увеличилось до 8 PM9A3 1.92TB;
вышло несколько новых прошивок на PM9A3;
сеть обновилась с ConnectX-3 Pro 40G до ConnectX-4 100G;
В связи с этим - было решено заново провести тесты.
У данной статьи такие же две цели, как и у прошлой:
Протестировать производительность трёх систем объединения физических устройств в одно логическое, как для локального доступа к нему, так и для использования в качестве блочного массива для виртуализации.
Создание бэкэнда для кластера в виде одноконтроллерного хранилища.
Иными словами выводы данной статьи не применимы, когда Вам нужно:
Синхронное отказоустойчивое решение
Надежность >>> скорость
Долговременное решение, которое можно поставить и забыть
Краткое описание механики проведения тестов:
Тесты для дисков проводились 8 раз каждый. Каждый тест - 10 минут в длительности.
В таблицах ниже взяты средние значения.
Для локальных тестов софт рейдов - каждый тест проходил 2 раза по 10 минут.
Для конечной виртуализации использовался HCIbench - каждая группа тестов проходила 7 раз в рамках тех же ВМ, в итог шли только среднее значение за последние 4 теста. Подробнее в Part 2. "Тесты SAN".
TL;DR
Графики по каждому из тестов для локальных тестов:
0. Оглавление
PCIe critical interrupt
Часть тестов имеют смешанное чтение\запись, для них данные операции в таблице разделены на строчку с чтением и строчку с записью.
1. Описание тестового стенда
Сервер хранения (в дальнейшем гибридный сервер с PCIe Passthrough для тестов блочного хранилища):
Motherboard: Tyan S8030 (ver 1GbE)
CPU: EPYC 7302
RAM: 4x64GB Micron 2933MHz
Сеть SAN: 100GbE ConnectX-4 MT27700 x2
Диски: 8 x PM9A3 1.92TB, форматированы в 512n
Для тестов на физике используется:
ОС Debian 12 с подключённым SID репозиторием (Ядро 6.12.17 mitigations=off)
fio 3.38
Рассматриваться будет 2 сценария:
Raid 0 - (все же делают бэкапы) как крайний сценарий производительного решения, когда за сохранность данных (не доступность) отвечает или репликация или бэкапы.
Raid 5 - противники использования Raid 5 в таком сценарии уверен найдутся, учитывая последнии \*математические выкладки* по которым Raid 5 разваливается в 80% при ребилде, но как показывает статистика и практика на объёмах меньше 8ТБ\диск - это не так.
Все диски прежде чем начались тесты каждой группы были перепизаписаны 2 раза (пока namespace не был заполнен на 100%). Это сделано, дабы исключить запись поверх нулей, которая приводит к завышенным значениям скорости, которые не всегда возможны в реальном сценарии (Да, в реальном сценарии и не рекомендуется заполнять SSD на 100%, как раз по этой причине).
Стоит отметить, что если создать namespace не на 100% объёма, а на ~70%, то производительность становится ближе к заявленной производителем.
Список тестов FIO приведён ниже:
Первые 6 тестов взяты отсюда, +4 теста взяты у vsan easyrun, пр крайней мере, максимально приближены к ним.
Последовательная запись крупным блоком (4МБ)
Последовательное чтение крупным блоком (4МБ)
Случайная запись мелким блоком (4КБ) с высокой глубиной очереди (128) в 4 потока
Случайное чтение мелким блоком (4КБ) с высокой глубиной очереди (128) в 4 потока
Случайное чтение мелким блоком (4КБ) в 1 поток с глубиной 1
Случайная запись мелким блоком (4КБ) в 1 поток с глубиной 1
70% случайного чтения чтение, 30% случайной записи мелким блоком (4k) с глубиной очереди 4 в 8 потоков с повторением 50% блоков и легко сжимаемых данных тоже 50%
100% случайного чтения чтение мелким блоком (4k) с глубиной очереди 4 в 8 потоков с повторением 50% блоков и легко сжимаемых данных тоже 50%
50% случайного чтения чтение, 50% случайной записи мелким блоком (8k) с глубиной очереди 4 в 8 потоков с повторением 50% блоков и легко сжимаемых данных тоже 50%
100% случайной записи большим блоком (256k) с глубиной очереди 4 в 8 потоков с повторением 50% блоков и легко сжимаемых данных тоже 50%
Команда:
fio -name=seq_mbs_write_T1Q1N1 -ioengine=libaio -direct=1 -invalidate=1 -bs=4M -iodepth=32 -rw=write -runtime=600 -filename=/dev/nvme1n1
fio -name=seq_mbs_read_T1Q1N1 -ioengine=libaio -direct=1 -invalidate=1 -bs=4M -iodepth=32 -rw=read -runtime=600 -filename=/dev/nvme1n1
fio -name=rand_iops_write_T1Q128N1 -ioengine=libaio -direct=1 -invalidate=1 -bs=4k -iodepth=128 -numjobs=4 -group_reporting -rw=randwrite -runtime=600 -randrepeat=0 -filename=/dev/nvme1n1
fio -name=rand_iops_read_T1Q128N1 -ioengine=libaio -direct=1 -invalidate=1 -bs=4k -iodepth=128 -numjobs=4 -group_reporting -rw=randread -runtime=600 -randrepeat=0 -filename=/dev/nvme1n1
fio -name=rand_iops_write_T1Q1N1 -randrepeat=0 -ioengine=libaio -direct=1 -invalidate=1 -bs=4k -iodepth=1 -fsync=1 -rw=randwrite -runtime=600 -filename=/dev/nvme1n1
fio -name=rand_iops_read_T1Q1N1 -randrepeat=0 -ioengine=libaio -direct=1 -invalidate=1 -bs=4k -iodepth=1 -rw=randread -runtime=600 -filename=/dev/nvme1n1
fio -name vsan_4k_100rng_70read -runtime=600 -time_based=1 -ramp_time=360 -direct=1 -buffered=0 -fsync=0 -readwrite=randrw -rwmixread=70 -percentage_random=100 -random_generator=tausworthe64 -blocksize=4K -buffer_compress_percentage=50 -dedupe_percentage=50 -ioengine=libaio -group_reporting -lat_percentiles=1 -iodepth=4 -numjobs=8 -filename=/dev/mapper/nvme-nvme_stripe -status-interval=20
fio -name vsan_4k_100rng_100read -runtime=600 -time_based=1 -ramp_time=360 -direct=1 -buffered=0 -fsync=0 -readwrite=randread -rwmixread=100 -percentage_random=100 -random_generator=tausworthe64 -blocksize=4K -buffer_compress_percentage=50 -dedupe_percentage=50 -ioengine=libaio -group_reporting -lat_percentiles=1 -iodepth=4 -numjobs=8 -filename=/dev/mapper/nvme-nvme_stripe -status-interval=20
fio -name vsan_8k_100rng_50read -runtime=600 -time_based=1 -ramp_time=360 -direct=1 -buffered=0 -fsync=0 -readwrite=randrw -rwmixread=50 -percentage_random=100 -random_generator=tausworthe64 -blocksize=8K -buffer_compress_percentage=50 -dedupe_percentage=50 -ioengine=libaio -group_reporting -lat_percentiles=1 -iodepth=4 -numjobs=8 -filename=/dev/mapper/nvme-nvme_stripe -status-interval=20
fio -name vsan_256k_0rng_0read -runtime=600 -time_based=1 -ramp_time=360 -direct=1 -buffered=0 -fsync=0 -readwrite=write -random_generator=tausworthe64 -blocksize=256K -buffer_compress_percentage=50 -dedupe_percentage=50 -ioengine=libaio -group_reporting -lat_percentiles=1 -iodepth=4 -numjobs=8 -filename=/dev/mapper/nvme-nvme_stripe -status-interval=20
2 Тесты блочных устройств
2.1 Тесты дисков
(назад к оглавлению)
Если отобразить получившиеся значения в формате графика, взяв среднее в каждом тесте получится следующая картина:

Наименование теста | Среднее | Минимальное | Максимальное |
Последовательная запись 4M qd=32 | 980.22 МБ/с | 975.38 МБ/с | 986.75 МБ/с |
Последовательное чтение 4M qd=32 | 3 676.55 МБ/с | 3 656.5 МБ/с | 3 692 МБ/с |
Случайная запись 4k qd=128 jobs=4 | 765.45 МБ/с | 752.5 МБ/с | 769.63 МБ/с |
Случайное чтение 4k qd=128 jobs=4 | 3815.69 МБ/с | 3809.75 МБ/с | 3819 МБ/с |
Случайная запись 4k qd=1 fsync=1 | 234.13 МБ/с | 215.13 МБ/с | 239.38 МБ/с |
Случайное чтение 4k qd=1 fsync=1 | 61.22 МБ/с | 59.9 МБ/с | 61.56 МБ/с |
И таблицы по каждому диску:
Тест\NVMe# | NVMe0 | NVMe1 | NVMe2 | NVMe3 |
Последовательная запись 4M qd=32 | 974.63 МБ/с | 979.5 МБ/с | 975.38 МБ/с | 986.75 МБ/с |
Последовательное чтение 4M qd=32 | 3 675.63 МБ/с | 3 656.5 МБ/с | 3 676.5 МБ/с | 3 692 МБ/с |
Случайная запись 4k qd=128 jobs=4 | 768.25 МБ/с | 752.5 МБ/с | 765 МБ/с | 767.38 МБ/с |
Случайное чтение 4k qd=128 jobs=4 | 3 815.63 МБ/с | 3 809.75 МБ/с | 3 815.13 МБ/с | 3 817.88 МБ/с |
Случайная запись 4k qd=1 fsync=1 | 239.13 МБ/с | 239.25 МБ/с | 239.38 МБ/с | 239.25 МБ/с |
Случайное чтение 4k qd=1 fsync=1 | 61.56 МБ/с | 61.36 МБ/с | 61.53 МБ/с | 61.56 МБ/с |
Тест\NVMe# | NVMe4 | NVMe5 | NVMe6 | NVMe7 |
Последовательная запись 4M qd=32 | 980.5 МБ/с | 981.38 МБ/с | 983.63 МБ/с | 980 МБ/с |
Последовательное чтение 4M qd=32 | 3 685.75 МБ/с | 3 658.63 МБ/с | 3 687.63 МБ/с | 3 679.75 МБ/с |
Случайная запись 4k qd=128 jobs=4 | 768.25 МБ/с | 765.13 МБ/с | 767.5 МБ/с | 769.63 МБ/с |
Случайное чтение 4k qd=128 jobs=4 | 3818 МБ/с | 3812.88 МБ/с | 3819 МБ/с | 3817.25 МБ/с |
Случайная запись 4k qd=1 fsync=1 | 233.38 МБ/с | 215.13 МБ/с | 234 МБ/с | 233.5 МБ/с |
Случайное чтение 4k qd=1 fsync=1 | 61.26 МБ/с | 59.9 МБ/с | 61.28 МБ/с | 61.29 МБ/с |
2.2 Тесты mdadm
(назад к оглавлению)
Raid0:
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=8 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1
Для 5-ого рейда:
mdadm --create --verbose /dev/md5 --level=5 --raid-devices=8 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1
(использование bitmap роняет производительность примерно на 7%)
2.2.1 Raid0
Mdadm raid0 | ||
Последовательная запись 4M qd=32 | 7 272.72 МБ/с | 1 818 IOPS |
Последовательное чтение 4M qd=32 | 19 033.61 МБ/с | 4 758 IOPS |
Случайная запись 4k qd=128 jobs=4 | 4 014.99 МБ/с | 1 027 838 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 4 674.35 МБ/с | 1 196 633 IOPS |
Случайная запись 4k qd=1 fsync=1 | 162.75 МБ/с | 41 665 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 54.47 МБ/с | 13 943 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Запись: | 511.57 МБ/с | 222 959 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Чтение: | 1 193.58 МБ/с | 305 556 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 1 612.74 МБ/с | 412 860 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Запись: | 1 495.52 МБ/с | 191 427 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Чтение: | 1 495.11 МБ/с | 191 374 IOPS |
Последовательная запись 256к (vsan easyrun) | 9 480.26 МБ/с | 37 921 IOPS |
2.2.2 Raid5
Mdadm raid5 | ||
Последовательная запись 4M qd=32 | 1 791.21 МБ/с | 448 IOPS |
Последовательное чтение 4M qd=32 | 18 925.42 МБ/с | 4 731 IOPS |
Случайная запись 4k qd=128 jobs=4 | 350.14 МБ/с | 89 635 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 3 964.38 МБ/с | 1 014 880 IOPS |
Случайная запись 4k qd=1 fsync=1 | 37.74 МБ/с | 9 662 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 59.4 МБ/с | 15 207 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 270.77 МБ/с | 116 801 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 631.7 МБ/с | 161 716 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 1 784.94 МБ/с | 456 943 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 376.44 МБ/с | 48 184 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 376.49 МБ/с | 48 190 IOPS |
Последовательная запись 256к (vsan easyrun) | 1 330.16 МБ/с | 5 320 IOPS |
2.2.3 Raid5 bitmap
Mdadm raid5 bitmap | ||
Последовательная запись 4M qd=32 | 1 768.41 МБ/с | 442 IOPS |
Последовательное чтение 4M qd=32 | 19 175.89 МБ/с | 4 794 IOPS |
Случайная запись 4k qd=128 jobs=4 | 330.92 МБ/с | 84 714 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 3 941.75 МБ/с | 1 009 087 IOPS |
Случайная запись 4k qd=1 fsync=1 | 30.65 МБ/с | 7 847 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 54.26 МБ/с | 13 891 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 247.63 МБ/с | 104 474 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 577.68 МБ/с | 147 885 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 1 586.71 МБ/с | 406 198 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 346.62 МБ/с | 44 367 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 346.5 МБ/с | 44 352 IOPS |
Последовательная запись 256к (vsan easyrun) | 1 195.97 МБ/с | 4 784 IOPS |
2.3 Тесты LVM
(назад к оглавлению)
lvcreate -i8 -I64 --type striped -l 100%VG -n lvm_stripe stripe
lvcreate -i7 -I64 --type raid5 -l 100%VG -n lvm_raid5 raid
2.3.1 Raid0
LVM raid0 | ||
Последовательная запись 4M qd=32 | 8 229.46 МБ/с | 2 057 IOPS |
Последовательное чтение 4M qd=32 | 18 433.35 МБ/с | 4 608 IOPS |
Случайная запись 4k qd=128 jobs=4 | 3 667.81 МБ/с | 938 959 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 3 631.25 МБ/с | 929 599 IOPS |
Случайная запись 4k qd=1 fsync=1 | 188.96 МБ/с | 48 374 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 68.57 МБ/с | 17 553 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 685.26 МБ/с | 260 452 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 1 598.85 МБ/с | 409 304 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 1 831.6 МБ/с | 468 889 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 1 889.8 МБ/с | 241 893 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 1 889.73 МБ/с | 241 885 IOPS |
Последовательная запись 256к (vsan easyrun) | 9 210.2 МБ/с | 36 840 IOPS |
2.3.2 Raid5
LVM raid0 | ||
Последовательная запись 4M qd=32 | 1 481.57 МБ/с | 370 IOPS |
Последовательное чтение 4M qd=32 | 15 419.73 МБ/с | 3 855 IOPS |
Случайная запись 4k qd=128 jobs=4 | 153.96 МБ/с | 39 413 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 2 742.55 МБ/с | 702 092 IOPS |
Случайная запись 4k qd=1 fsync=1 | 13.71 МБ/с | 3510 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 97.63 МБ/с | 24 994 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 121.69 МБ/с | 68 250 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 283.98 МБ/с | 72 699 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 4 402.84 МБ/с | 1 127 128 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 164.95 МБ/с | 21 113 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 165.06 МБ/с | 21 127 IOPS |
Последовательная запись 256к (vsan easyrun) | 1 211.52 МБ/с | 4 846 IOPS |
2.4 Тесты ZFS
(назад к оглавлению)
zpool create -o ashift=12 -O compression=lz4 -O atime=off -O recordsize=16k nvme /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1
zfs create -s -V 10T -o volblocksize=16k -o compression=lz4 nvme/iser
2.4.1 Stripe (Raid0)
ZFS Raid0 | ||
Последовательная запись 4M qd=32 | 3 219.34 МБ/с | 805 IOPS |
Последовательное чтение 4M qd=32 | 4 808.8 МБ/с | 1 202 IOPS |
Случайная запись 4k qd=128 jobs=4 | 163.76 МБ/с | 41 923 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 1 047.62 МБ/с | 26 8191 IOPS |
Случайная запись 4k qd=1 fsync=1 | 31.71 МБ/с | 8 118 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 40.24 МБ/с | 10 301 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 117.06 МБ/с | 40 609 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 273.14 МБ/с | 69 923 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 771.02 МБ/с | 197 382 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 306.99 МБ/с | 39 294 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 306.88 МБ/с | 39 280 IOPS |
Последовательная запись 256к (vsan easyrun) | 3 113.8 МБ/с | 12 455 IOPS |
2.4.2 RaidZ (Raid5)
ZFS RaidZ | ||
Последовательная запись 4M qd=32 | 2 307.02 МБ/с | 577 IOPS |
Последовательное чтение 4M qd=32 | 3 591.35 МБ/с | 898 IOPS |
Случайная запись 4k qd=128 jobs=4 | 139 МБ/с | 35 584 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 956.25 МБ/с | 244 801 IOPS |
Случайная запись 4k qd=1 fsync=1 | 28.33 МБ/с | 7 252 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 38.63 МБ/с | 9 888 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 96.72 МБ/с | 31 730 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 225.71 МБ/с | 57 780 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 713.06 МБ/с | 182 544 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 235.53 МБ/с | 30 146 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 235.52 МБ/с | 30 146 IOPS |
Последовательная запись 256к (vsan easyrun) | 2 148.34 МБ/с | 8 592 IOPS |
+ ZFS с дополнительными настройки со стороны OS (Спойлер стало хуже) (https://habr.com/ru/articles/753322/#comment_26542901)
https://habr.com/ru/articles/753322/#comment_26542901
Ухудшение IO по сравнению с дефолтными параметрами - 18%
zfs_vdev_async_write_min_active=1024
zfs_vdev_async_write_max_active=2048
zfs_vdev_async_read_min_active=1024
zfs_vdev_async_read_max_active=2048
zfs_vdev_sync_write_min_active=1024
zfs_vdev_sync_write_max_active=2048
zfs_vdev_sync_read_min_active=1024
zfs_vdev_sync_read_max_active=2048
zfs_vdev_queue_depth_pct=100Raid0
ZFS mod Raid0 | ||
Последовательная запись 4M qd=32 | 3 212.49 МБ/с | 803 IOPS |
Последовательное чтение 4M qd=32 | 4 734.04 МБ/с | 1 184 IOPS |
Случайная запись 4k qd=128 jobs=4 | 169.08 МБ/с | 43 284 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 1 040.5 МБ/с | 266 368 IOPS |
Случайная запись 4k qd=1 fsync=1 | 33.39 МБ/с | 8549 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 39.87 МБ/с | 10 207 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 115.01 МБ/с | 38 809 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 268.37 МБ/с | 68 701 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 767.75 МБ/с | 196 545 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 287.42 МБ/с | 36 790 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 287.36 МБ/с | 36 781 IOPS |
Последовательная запись 256к (vsan easyrun) | 3 114.09 МБ/с | 12 456 IOPS |
RaidZ
ZFS mod RaidZ | ||
Последовательная запись 4M qd=32 | 3 071.09 МБ/с | 767 IOPS |
Последовательное чтение 4M qd=32 | 2 699.02 МБ/с | 675 IOPS |
Случайная запись 4k qd=128 jobs=4 | 142.07 МБ/с | 36 370 IOPS |
Случайное чтение 4k qd=128 jobs=4 | 864.97 МБ/с | 221 431 IOPS |
Случайная запись 4k qd=1 fsync=1 | 25.77 МБ/с | 6 596 IOPS |
Случайное чтение 4k qd=1 fsync=1 | 31.71 МБ/с | 8 117 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 91.98 МБ/с | 31 072 IOPS |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 214.63 МБ/с | 54 943 IOPS |
Случайное 100% чтение 4k (vsan easyrun) | 640.15 МБ/с | 163 878 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 217.06 МБ/с | 27 783 IOPS |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 217.09 МБ/с | 27 786 IOPS |
Последовательная запись 256к (vsan easyrun) | 2 629.31 МБ/с | 10 515 IOPS |
3. Итог первой части статьи
(назад к оглавлению)
По итогу первой части общая таблица, за 100% для Raid0 взят LVM Raid0:
MDADM Raid0 | LVM Raid0 | ZFS Raid0 | |
Последовательная запись 4M qd=32 | 88.37% | 100.00% | 39.12% |
Последовательное чтение 4M qd=32 | 103.26% | 100.00% | 26.09% |
Случайная запись 4k qd=128 jobs=4 | 109.47% | 100.00% | 4.46% |
Случайное чтение 4k qd=128 jobs=4 | 128.73% | 100.00% | 28.85% |
Случайная запись 4k qd=1 fsync=1 | 86.13% | 100.00% | 16.78% |
Случайное чтение 4k qd=1 fsync=1 | 79.43% | 100.00% | 58.68% |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 74.65% | 100.00% | 17.08% |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 74.65% | 100.00% | 17.08% |
Случайное 100% чтение 4k (vsan easyrun) | 88.05% | 100.00% | 42.10% |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 79.14% | 100.00% | 16.24% |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 79.12% | 100.00% | 16.24% |
Последовательная запись 256к (vsan easyrun) | 102.93% | 100.00% | 33.81% |
Для 5-ого рейда - mdadm raid5:
MDADM Raid5 | MDADM Raid5 bitmap | LVM Raid5 | ZFS RaidZ | |
Последовательная запись 4M qd=32 | 100.00% | 98.73% | 82.71% | 128.80% |
Последовательное чтение 4M qd=32 | 100.00% | 101.32% | 81.48% | 18.98% |
Случайная запись 4k qd=128 jobs=4 | 100.00% | 94.51% | 43.97% | 39.70% |
Случайное чтение 4k qd=128 jobs=4 | 100.00% | 99.43% | 69.18% | 24.12% |
Случайная запись 4k qd=1 fsync=1 | 100.00% | 81.22% | 36.33% | 75.06% |
Случайное чтение 4k qd=1 fsync=1 | 100.00% | 91.35% | 164.36% | 65.02% |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Write: | 100.00% | 91.45% | 44.94% | 35.72% |
Случайное 70% чтение 30% запись 4k (vsan easyrun) Read: | 100.00% | 91.45% | 44.95% | 35.73% |
Случайное 100% чтение 4k (vsan easyrun) | 100.00% | 88.89% | 246.67% | 39.95% |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Write: | 100.00% | 92.08% | 43.82% | 62.57% |
Случайное 50% чтение 50% записи 8к (vsan easyrun) Read: | 100.00% | 92.04% | 43.84% | 62.56% |
Последовательная запись 256к (vsan easyrun) | 100.00% | 89.91% | 91.08% | 161.51% |
Как и в прошлый раз - ситуация не сильно поменялась и LVM в 0-м рейде всё также наилучший вариант с точки зрения скорости. Ссылка на вторую статью























