23 нояб. 2025 г.·6 мин

Приемочные тесты дисков на серверах: fio/DiskSpd и пороги

Приемочные тесты дисков на серверах: как настроить fio и DiskSpd, выбрать профили под БД, файлы и виртуализацию, оформить отчет и пороги брака.

Приемочные тесты дисков на серверах: fio/DiskSpd и пороги

Приемка дисков на сервере - это короткий набор нагрузочных тестов, который запускают сразу после поставки или замены накопителей, до ввода в эксплуатацию. Задача простая: убедиться, что диски работают предсказуемо, а партия однородна. На практике такая проверка экономит часы простоев и разборов инцидентов уже в продакшене.

Паспортным цифрам доверять недостаточно. Их обычно снимают в лабораторных режимах (часто в красивом сценарии вроде последовательного чтения). В реальной жизни нагрузка смешанная: мелкие блоки, параллельные потоки, очередь запросов, фоновая очистка SSD, кэши контроллера, RAID, файловая система. Поэтому диск может быть «быстрым по паспорту», но давать задержки, от которых страдают СУБД, виртуализация и файловые сервисы.

Приемка ловит типовые проблемы поставки и совместимости: пересорт (не та модель или объем), неподходящая прошивка, разные ревизии в одной партии, деградация после хранения, перегрев в корзине, а иногда и банальный брак. В серверных конфигурациях это критично: один «плохой» диск в массиве легко портит картину целиком.

Чаще всего вскрывается не нехватка максимальной скорости, а нестабильность. Например, из 8 новых SSD один может периодически давать всплески задержки до сотен миллисекунд при записи. На файловом сервисе это выглядит как «подвисания», а в кластере виртуализации - как фризы ВМ и рост времени отклика приложений. Такой диск нередко проходит поверхностную проверку SMART, но проваливает нагрузку.

Чтобы приемка не превращалась в гадание, заранее договоритесь, какие показатели фиксируете:

  • производительность (IOPS и MB/s) в нужных режимах
  • задержки (средняя и p95/p99/p99.9)
  • стабильность по времени (нет ли просадок и «пилы»)
  • ошибки ввода-вывода, timeouts, resets
  • разброс между дисками в одной партии

Дальше все упирается в два вопроса: какие профили нагрузки ближе к вашим сервисам и какие пороги считать браком, а не «особенностью настроек».

Перед тестами: что влияет на результаты и как не перепутать уровни

Результаты легко испортить еще до запуска fio или DiskSpd. Начинайте не с команд, а с фиксации условий: какой накопитель, какой контроллер, на каком уровне меряем и какие кэши включены.

Ожидания сильно зависят от типа диска. NVMe обычно дает низкую задержку и высокий IOPS. SATA SSD упирается в интерфейс и контроллер. SAS часто ведет себя стабильнее под длительной нагрузкой. HDD хороши в последовательных задачах и резко проседают на случайных. Если сравнивать все как одно и то же, вы либо «забракуете» нормальный HDD, либо пропустите проблемный SSD.

Отдельная тема - RAID/HBA и кэш. Write-back легко рисует красивые цифры, пока запись идет в кэш контроллера, а не на носитель. Write-through честнее, но медленнее. Важна защита кэша (BBU или суперконденсатор): без нее кэш записи часто отключают, и поведение системы меняется. Перед тестом явно зафиксируйте режим кэша и политику записи.

Файловая система тоже влияет. Тест «в файл» зависит от FS, размера блока, параметров монтирования и фоновых задач. Тест по блочному устройству ближе к «железу». Для приемки полезно понимать, что именно вы проверяете: сам диск, стек хранения или схему «как будет в проде».

Параллелизм задает картину нагрузки. Очередь (QD) и число потоков (numjobs) могут как раскрыть накопитель, так и спрятать дефект. Слишком маленькая очередь занижает IOPS, слишком большая раздувает очереди до десятков миллисекунд и иногда маскирует редкие провалы.

Перед запуском зафиксируйте:

  • тип диска и интерфейс (SATA/SAS/NVMe), объем, прошивку
  • режим контроллера (RAID/HBA), write-back/write-through, наличие BBU/суперкапа
  • уровень теста: файл на FS или блочное устройство, что и как форматировали
  • параметры нагрузки: block size, QD, numjobs, длительность прогрева
  • фон: ребилд RAID, scrub, обновления, телеметрия

И не путайте уровни измерения. Один и тот же диск может выглядеть по-разному:

  • на физическом диске (минимум «магии»)
  • на томе RAID/массива (влияние кэша и политики)
  • на LUN/томе ОС (драйверы и планировщик)
  • внутри гостевой ВМ (виртуальные очереди и лимиты гипервизора)

Если вы принимаете серверы и СХД как интегратор, практичный подход - прогнать тест на двух уровнях: «железо» (чтобы искать брак) и «как будет работать» (чтобы подтвердить ожидаемую производительность в эксплуатации).

Подготовка стенда и правила безопасности тестирования

Сначала решите, что именно проверяете: отдельный диск, RAID-группу или весь путь хранения (диск - контроллер - драйвер - ОС - файловая система). Если смешать уровни, результаты будут «гулять», и дефект легко пропустить.

Инструменты и наблюдение за системой

Минимальный набор простой: fio для Linux, DiskSpd для Windows и мониторинг. Во время прогона смотрите не только скорость, но и признаки проблем: рост задержек, ошибки контроллера, перегрев, перераспределенные блоки.

Для мониторинга обычно хватает штатных средств ОС и утилит контроллера/дисков: SMART/NVMe log, журнал событий, загрузка CPU, очередь диска, температура, I/O errors. Полезно заранее включить сбор логов, чтобы потом привязать провал теста к конкретной минуте.

Чтобы не путаться в железе, договоритесь об именовании до первого запуска. Удобный формат: сервер - слот/бэй - серийный номер - роль диска (OS, DATA, LOG, CACHE). Например: SRV-DB01 BAY03 S/N XXXXX DATA.

Также заранее зафиксируйте среду, иначе сравнивать будет нечего: версия ОС и план питания, драйверы и прошивки (контроллер, диск), режим RAID и stripe size, политика кэша, файловая система и размер блока (если тестируете на уровне тома).

Прогрев и стабилизация (precondition)

Новые SSD часто показывают «витринные» цифры, пока свободны и холодные. Для приемки нужен прогрев: заполнение и нагрузка до выхода на стабильные задержки. Для большинства SSD разумный минимум - 30-60 минут тяжелой записи (или заполнение 1-2 раза), затем пауза 5-10 минут и только потом замеры.

Главное правило безопасности: тестируйте только на пустом диске или тестовом томе. Один неверный параметр (не тот диск, не тот путь) - и данные потеряны.

Перед стартом введите стоп-правила:

  • не запускать тест на прод-томах и на LUN с важными данными
  • перед запуском перепроверять, что именно будет перезаписано (путь/буква/диск)
  • отключать фоновые задачи, которые искажают картину (бэкапы, антивирус-скан)
  • контролировать температуру и обдув (особенно NVMe в плотных корзинах)
  • если пошли I/O errors, остановить прогон и сохранить логи

Так стенд станет предсказуемым, а результаты - сравнимыми между партиями дисков и серверами.

Пошаговая схема приемочных тестов fio и DiskSpd

Лучше держаться одной и той же схемы, чтобы сопоставлять результаты между партиями, моделями и стендами.

1) Выберите сценарий и цель

Определите уровень: отдельный диск, RAID-группа, том в SAN или datastore гипервизора. Затем выберите профиль, близкий к реальным сервисам: СУБД (мелкие блоки и низкая задержка), файловый сервис (смешанные блоки и последовательность), виртуализация (сильная смесь чтения/записи и высокий параллелизм).

2) Прогрев и базовая проверка стабильности

Перед измерениями сделайте прогрев: запись по всему объему тестового файла/тома и короткий прогон, чтобы скорость вышла на плато. Если график скачет, а задержка идет «пилой», это уже сигнал.

Дальше держитесь простых правил:

  • прогоняйте несколько размеров блока (4K, 8K, 64K, 1M) и несколько глубин очереди (например, QD 1, 4, 16, 32), чтобы увидеть и «однопоток», и пик
  • фиксируйте не только IOPS/MB/s, но и хвост задержек (p95, p99, p99.9)
  • отслеживайте редкие «паузы» в сотни миллисекунд: они убивают СУБД и VDI даже при хороших средних значениях
  • сохраняйте артефакты: логи fio/DiskSpd, конфигурацию стенда, SMART и системные журналы

Повторяемость обязательна: сделайте 2-3 одинаковых прогона и принимайте решение по медиане, а не по лучшему результату.

Пример минимальных команд (подставьте свой путь и размер):

fio --name=rand4k --filename=/mnt/testfile --size=50G --direct=1 --rw=randrw --rwmixread=70 \
 --bs=4k --iodepth=16 --numjobs=4 --time_based --runtime=180 --group_reporting \
 --output=fio_rand4k_mix.json --output-format=json
DiskSpd.exe -b4K -d180 -W30 -o16 -t4 -r -w30 -Sh -L C:\test\testfile.dat

Какие метрики считать приемочными: что важно и почему

В приемке важны не рекорды, а предсказуемость. Диск может показать высокий средний результат и при этом периодически «проваливаться» на секунды. Именно это потом превращается в зависания СУБД, тормоза виртуальных машин и очереди на файловом сервере.

Производительность: IOPS, latency и MB/s

IOPS полезны для мелких блоков (4K-16K) и случайного доступа, но смотрите не только «среднее за прогон». Проверяйте стабильность по времени: резкие падения на одинаковой нагрузке часто указывают на троттлинг, кэширование, прошивку или дефект.

Задержка почти всегда важнее IOPS. Среднее значение легко прячет редкие, но болезненные задержки, поэтому в отчете фиксируйте p95/p99/p99.9. Для виртуализации и БД именно p99 и p99.9 чаще объясняют жалобы пользователей.

Пропускная способность (MB/s) важна для последовательных потоков и крупных блоков (128K-1M): бэкапы, выгрузки, сканирование больших файлов. Если throughput «пилит» при постоянной нагрузке, это похоже на SLC-кэш, перегрев или проблемы контроллера.

Надежность: ошибки и температура

Любые ошибки важнее «чуть ниже IOPS». Отмечайте read/write errors, timeout, reset, media errors, а для SSD - изменения счетчиков ошибок в SMART. Даже единичные timeouts под нагрузкой потом превращаются в проблемы RAID, файловой системы или гипервизора.

Перегрев NVMe часто выглядит как ступеньки: сначала нормальные IOPS и низкая задержка, затем рост latency и падение скорости при той же очереди и профиле. Поэтому рядом с цифрами сохраняйте контекст: температуру по датчикам и условия обдува.

Что полезно приложить к отчету:

  • логи fio/DiskSpd (желательно с перцентилями и разбиением по времени)
  • SMART до и после
  • события ОС о reset/timeout (если были)
  • температуру NVMe в ходе прогона
  • версию драйвера и прошивки контроллера, режим питания

Типовые профили тестов под базы данных

Поставка серверов с приемкой дисков
Поставим серверы и накопители с согласованной схемой приемочных тестов и отчетом.
Запросить расчет

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

Быстрый набор для среза и сравнения партий:

  • 4K random read: QD 1 и QD 32, 1-4 потока (смотрите IOPS и p99)
  • 4K random write: QD 1 и QD 32, 1-4 потока (смотрите p99 и «ступеньки»)
  • 70/30 random (read/write): блок 8K, QD 8-32, 4-8 потоков (типичный OLTP)
  • mixed 16K: 50/50 или 70/30, QD 8-16 (когда часть запросов тяжелее 8K)

Для аналитики проверьте последовательное чтение 64K-1M с QD 4-16 и убедитесь, что throughput держится ровно. Для журналов транзакций выделите отдельный тест: 4K-16K sync write, небольшая очередь (QD 1-4), 1 поток. Здесь важнее предсказуемость, чем пик.

Типовые профили тестов под файловые сервисы

Файловые сервисы (SMB/NFS) нагружают диск иначе, чем БД: больше последовательного чтения больших файлов, «офисная» смесь и всплески по мелким файлам. Эти режимы лучше проверять отдельно.

Базовые профили

  1. Последовательное чтение больших файлов (бэкапы, медиа, образы):
fio --name=seqread --filename=/mnt/testfile --size=200G --direct=1 \
  --rw=read --bs=1M --iodepth=32 --numjobs=4 --runtime=180 --time_based \
  --group_reporting
  1. «Офисная» смесь: случайный доступ 64K с преобладанием чтения (ловит проблемы, когда скорость нормальная, а задержки скачут):
fio --name=mix64k --filename=/mnt/testfile --size=100G --direct=1 \
  --rw=randrw --rwmixread=80 --bs=64K --iodepth=16 --numjobs=4 \
  --runtime=300 --time_based --group_reporting
  1. Много мелких файлов: здесь важны IOPS и «хвост» задержек, поэтому поднимайте параллелизм (numjobs/iodepth) и обязательно фиксируйте p95/p99.

На Windows тот же смысл можно повторить DiskSpd, например для 64K 80/20:

DiskSpd.exe -c100G -d300 -Sh -L -o16 -t4 -b64K -r -w20 C:\testfile.dat

Полезная проверка конкуренции: запустите одновременно последовательное чтение (1M) и случайную запись (4K-16K). Так видно, «проваливается» ли чтение, когда рядом идут записи.

Оговорка про SMB/NFS

Сначала тестируйте диск/том на сервере (fio/DiskSpd), и только потом сам SMB/NFS с клиента. Иначе будет непонятно, где узкое место: диск, CPU, сеть, настройки протокола, антивирус или шифрование.

Типовые профили тестов под виртуализацию и VDI

Поддержка 24/7 по инцидентам хранения
Если появились timeouts или resets, поможем быстро собрать логи и локализовать проблему.
Подключить поддержку

Виртуализация почти никогда не бывает «чистым» чтением или записью. Обычно это смесь мелких случайных операций, где важнее стабильная задержка, чем максимальный IOPS.

Профиль 1: смешанная нагрузка «обычная виртуализация»

70/30 или 60/40 read/write, блок 8K (допустимо 4K-16K), высокий параллелизм:

fio --name=virt-mix --filename=/dev/nvme0n1 --direct=1 --ioengine=libaio \
 --rw=randrw --rwmixread=70 --bs=8k --numjobs=8 --iodepth=32 \
 --time_based=1 --runtime=300 --group_reporting=1 --lat_percentiles=1

Затем сделайте короткую «лесенку по очереди»: iodepth 1, 4, 8, 16, 32. Если p99 latency прыгает ступенями, это часто выдает проблемы с прошивкой, контроллером или перегрев.

Профиль 2: VDI (важен строгий p99)

80/20 read/write, 4K, много потоков, но без запредельного iodepth:

fio --name=vdi-boot --filename=/dev/nvme0n1 --direct=1 --ioengine=libaio \
 --rw=randrw --rwmixread=80 --bs=4k --numjobs=16 --iodepth=16 \
 --time_based=1 --runtime=300 --group_reporting=1 --lat_percentiles=1

Если p99 «уплывает», пользователи увидят это как подвисания при логине или открытии профиля, даже когда средняя задержка выглядит нормально.

Профиль 3: плотная консолидация (много ВМ одновременно)

Увеличивайте numjobs (например, 24-48), но следите, чтобы не упереться в CPU тестовой машины. Параллельно смотрите загрузку процессора и очереди.

Если есть RAID/HBA с кэшем, прогоните один и тот же профиль дважды: с write-back и с write-through. Сильная разница по задержкам и особенно по p95/p99 - признак того, что в бою поведение будет зависеть от настроек кэша и наличия BBU/суперконденсатора.

Пороги приемки: как задать значения, чтобы ловить брак

Пороги нужны не для красоты отчета, а чтобы стабильно отсеивать скрытые проблемы: нестабильную задержку, перегрев, ошибки контроллера, просадки под нагрузкой.

Какие значения имеет смысл контролировать

Не ограничивайтесь средними. Для большинства ролей важнее хвосты задержек и стабильность:

  • IOPS и MB/s по каждому профилю (и повторяемость между прогонами)
  • p99, а для критичных ролей еще и p99.9 (отдельно read и write)
  • просадки по времени относительно медианы (например, по минутам)
  • нулевая терпимость к I/O errors, timeouts, resets, media errors
  • температура и признаки троттлинга

Порог по задержкам часто ловит брак лучше, чем порог по IOPS. Диск может держать цифры, но давать редкие длинные стопы.

Как выставлять пороги: от эталона и от роли

Надежнее задавать пороги в два слоя: от эталонного экземпляра (или проверенной партии) и от требований роли.

  • Эталон: 1-2 проверенных диска той же модели, те же профили, затем допустимое отклонение (например, не хуже 10-15% по медиане и не хуже 20-30% по p99).
  • Партия: сравнение дисков между собой. Экземпляр, который стабильно хуже группы по p99 или по стабильности, подозрителен даже при «формальном прохождении».
  • Роль: для СУБД пороги по p99/p99.9 жестче, для файловых сервисов обычно важнее ровный throughput на последовательных тестах.
  • Стабильность: регулярные провалы (например, каждые 3-5 минут падение IOPS на 30%+) - повод для разбирательства до ввода в работу.

По температуре смотрите связку: рост температуры плюс падение IOPS или рост p99. Если это повторяется в одинаковых условиях, фиксируйте как троттлинг и учитывайте в порогах (или меняйте обдув, если в реальной стойке он будет другим).

Частые ошибки и ловушки при приемке

Стандартизация отчетов по приемке
Настроим единый шаблон отчета: условия стенда, логи, SMART и перцентили задержек.
Согласовать формат

Даже хорошие тесты легко испортить условиями запуска. Тогда «плохой» диск выглядит нормальным, или наоборот вы бракуете исправный.

Самые частые причины ложных результатов:

  • тестовый файл слишком маленький и попадает в кэш (ОС, контроллер, кэш SSD)
  • тест идет слишком мало времени и не показывает garbage collection, прогрев, SLC-кэш и троттлинг
  • том занят фоновыми задачами (антивирус, индексация, бэкапы, репликация)
  • путаница в единицах (MB/s vs MiB/s) и метриках (IOPS без размера блока ничего не означает)
  • сравнение «несравнимого»: разные драйверы/прошивки, другой режим RAID, другой кэш, разные QD и потоки

Отдельная ловушка - делать вывод о конкретном диске, измеряя массив. Деградация может быть в контроллере, кабеле, слоте, backplane или настройках питания.

Практический пример: два одинаковых сервера показывают разные результаты на чтении 4K. Разбор часто упирается в то, что на одном включен write-back с BBU и стоит другой драйвер RAID, а на втором кэш записи отключен после обновления прошивки.

Еще один «бытовой» момент, который спасает время: фиксируйте серийные номера дисков, версии прошивок, модель контроллера и его прошивку. Без этого вы не сможете повторить тест и быстро локализовать проблемный экземпляр, особенно когда диски переставляют между серверами или площадками.

Чеклист, мини-шаблон отчета и короткий пример

Чтобы результаты были сравнимыми и пригодными для споров с поставщиком, держите короткий чеклист и простой шаблон отчета.

Чеклист перед стартом

  • Зафиксировать конфигурацию: RAID/HBA, версии BIOS/прошивок, режимы контроллера (write-back/write-through), политики кэша.
  • Убедиться, что тестируете нужный уровень: диск, массив или LUN, и что нет ребилда/скраба.
  • Выбрать одинаковый объем тестового файла (часто берут 1.5-2x ОЗУ, чтобы не упереться в кэш).
  • Сделать прогрев выбранным профилем перед замером.
  • Проверить охлаждение и питание: температура дисков и контроллера должна быть нормальной до и во время теста.

Мини-шаблон отчета

Отчет должен позволять повторить тест и быстро найти «плохой» экземпляр:

  • Идентификация: модель, емкость, тип (HDD/SATA SSD/NVMe), серийный номер, слот/порт, дата, партия.
  • Среда: сервер, ОС, драйвер, версия fio/DiskSpd, параметры теста (блок, глубина очереди, потоки, время, размер файла).
  • Настройки хранения: RAID-уровень, stripe size, кэш контроллера, файловая система, mount-опции.
  • Результаты: IOPS, MB/s, средняя задержка и p95/p99/p99.9, стабильность по времени, температуры.
  • Вывод: «годен/условно/брак», что перепроверяли.

Доказательства лучше прикладывать сразу: сырые логи fio/DiskSpd (текст/JSON), отметки метрик по времени (хотя бы из мониторинга), а также системные журналы по ошибкам диска/контроллера.

Пример из практики: в стойковом сервере из партии 12 одинаковых SSD один диск показывает нормальные IOPS, но p99 задержка в 3-5 раз выше и видны «зубцы» каждые 30-60 секунд. Первый шаг - повторить прогон на том же слоте. Затем переставить диск в другой слот (чтобы исключить порт/кабель/backplane). Если проблема «едет» вместе с диском, фиксируйте как брак и оформляйте замену.

Если вы принимаете серверы и СХД в рамках внедрений, удобно заранее согласовать единый шаблон отчета, пороги и порядок перепроверки. В проектах, где поставку и интеграцию берет на себя GSE.kz (gse.kz), такая стандартизация особенно помогает: меньше спорных случаев, быстрее диагностика и понятнее эксплуатация после запуска.

FAQ

Зачем вообще делать приемочные тесты дисков, если накопители новые?

Приемка дисков — это короткие нагрузочные тесты сразу после поставки или замены, до ввода в эксплуатацию. Она помогает заранее поймать нестабильные задержки, перегрев, ошибки ввода-вывода и неоднородность партии, которые потом превращаются в «подвисания» сервисов и долгие разборы в продакшене.

Почему нельзя просто доверять паспортным IOPS и MB/s?

Паспортные цифры обычно сняты в удобных лабораторных режимах и не отражают вашу смесь блоков, очередей, потоков, RAID-кэша и фоновых процессов SSD. На практике важнее не рекордная скорость, а предсказуемость: стабильные задержки без редких пауз и без деградации по времени.

Какие метрики реально важны в приемке, кроме скорости?

Фиксируйте IOPS и MB/s в нужных профилях, но обязательно добавляйте задержки с перцентилями p95/p99/p99.9 и стабильность по времени. Если диск иногда «замирает» на сотни миллисекунд, это будет больно для БД и виртуализации даже при хороших средних значениях.

Какие типовые проблемы поставки и совместимости приемка ловит лучше всего?

Чаще всего вскрываются разные прошивки или ревизии в одной партии, скрытый брак, деградация после хранения, перегрев в корзине, ошибки timeouts/resets под нагрузкой и пересорт по модели/объему. Отдельно опасны диски, которые выглядят нормальными по SMART, но проваливают тест по хвостам задержек.

С чего начать, чтобы результаты тестов были сравнимыми и честными?

Начните с фиксации условий: модель и прошивка диска, режим контроллера RAID/HBA, политика кэша записи, уровень теста (блочное устройство или файл), а также фоновые процессы. Затем сделайте прогрев, и только после выхода на «плато» запускайте измерения, иначе вы сравните витринные цифры, а не реальное поведение.

Тестировать лучше по блочному устройству или через файловую систему?

Если цель — найти брак и сравнить диски между собой, тест по блочному устройству обычно честнее и ближе к «железу». Если цель — понять, как будет работать конкретный сервис, полезен тест на том же уровне, что и в эксплуатации, включая RAID и файловую систему. Часто делают оба уровня: сначала диск/массива, затем «как в проде».

Как RAID-контроллер и его кэш искажают результаты и что с этим делать?

Write-back может показать красивые цифры, пока запись ложится в кэш контроллера, а не на носитель, и это легко вводит в заблуждение. Write-through обычно медленнее, но отражает реальную запись на диски. Важно заранее зафиксировать режим кэша и наличие защиты кэша (BBU/суперконденсатор), потому что без защиты поведение в бою может резко отличаться.

Какие профили fio/DiskSpd выбрать, если времени мало?

Минимально сделайте прогрев тяжелой записью до стабилизации задержек, затем проверьте несколько сочетаний размера блока и очереди, чтобы увидеть и «однопоток», и пик. Для базового среза обычно достаточно 4K случайных профилей, одной смешанной нагрузки и одного последовательного чтения/записи крупным блоком, но решения принимайте по повторяемости и хвостам задержек.

Как понять, что один диск из партии “плохой”, если цифры примерно похожи?

Брак чаще проявляется как диск, который стабильно хуже остальных по p99/p99.9 или периодически проваливается по времени при одинаковой нагрузке, даже если средние IOPS нормальные. Практичный подход — сравнивать с эталонным экземпляром той же модели и параллельно сравнивать диски внутри партии, а не пытаться угадать «абсолютно правильную» цифру.

Как безопасно проводить приемку, чтобы не угробить данные и не пропустить ошибки?

Тестируйте только пустые диски или отдельный тестовый том, потому что один неверный путь может уничтожить данные. Если появляются I/O errors, timeouts или resets, остановите прогон и сохраните логи, SMART/NVMe-log и системные события, чтобы привязать проблему ко времени и железу. Также следите за температурой, особенно у NVMe в плотных корзинах, иначе троттлинг будет выглядеть как «случайные» просадки.

Приемочные тесты дисков на серверах: fio/DiskSpd и пороги | GSE