MAATRIX / Блог / Ресурс SSD: сколько TBW уйдёт на вашу нагрузку

Ресурс SSD: сколько TBW уйдёт на вашу нагрузку

MAATRIX

Вы выбираете SSD для сервера с базой данных или логами и видите в характеристиках «TBW: 600» или «TBW: 3600» — но не понимаете, много это или мало именно для вашей нагрузки. Производитель даёт паспортное число, а сколько вы реально пишете на диск в сутки — не говорит. Разберём, как посчитать свою нагрузку и сопоставить её с ресурсом конкретной модели, а не гадать на глаз.

Что такое TBW и почему это не маркетинговая цифра

TBW — Terabytes Written, суммарный объём данных, который производитель гарантирует записать на диск за весь срок службы до того, как ячейки флеш-памяти начнут массово вырабатывать ресурс. Часто указывается вместе с DWPD (Drive Writes Per Day) — по сути та же характеристика, выраженная как «сколько раз в сутки можно перезаписать весь объём диска в течение гарантийного срока».

Здесь принципиальная разница с HDD. У жёсткого диска механический износ — подшипники, головки, двигатель — связан со временем работы и числом обращений, но не напрямую с объёмом записанных байт: диск, который просто крутится, тоже стареет. У SSD физика другая: ячейка флеш-памяти выдерживает ограниченное число циклов программирования и стирания. Каждая запись — реальный расход этого ресурса. Диск, на который почти не пишут, почти не изнашивается, сколько бы лет он ни проработал. Диск с интенсивной записью может выработать ресурс за пару лет даже будучи физически исправным во всех остальных смыслах.

Поэтому TBW — не абстракция для сравнения в магазине, а параметр, отвечающий на вопрос «сколько проживёт этот диск при МОЕЙ нагрузке». Для десктопа TBW почти никогда не станет узким местом — счёт записи идёт на гигабайты в день. Для сервера с базой данных, где WAL и логи пишутся постоянно, счёт идёт на десятки-сотни гигабайт в сутки — и тогда паспортный ресурс превращается из формальности в срок годности, который стоит посчитать заранее. Как физически стареет флеш-память на уровне ячеек — подробнее в статье про wear leveling.

Шаг 1: замерьте реальный объём записи

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

Через iostat. Утилита iostat из пакета sysstat показывает объём записи по блочным устройствам. Разовый снимок бесполезен — нужна статистика за характерный период (обычные сутки с типичной нагрузкой, не ночь простоя и не пиковый батч).

apt install sysstat
# снять статистику по nvme0n1: интервал 60 сек, 60 повторов (час)
iostat -d -x -k 60 60 /dev/nvme0n1

Колонка kB_wrtn/s — килобайты записи в секунду за интервал. Быстрее, но грубее — сравнить счётчик записанных секторов в /proc/diskstats утром и через сутки, переведя разницу в байты (обычно 1 сектор = 512 байт, сверьте через blockdev --getss).

Через атрибут SMART. У SSD есть атрибут с суммарным объёмом записи за всю жизнь диска (называется по-разному: Total_LBAs_Written, Host_Writes_32MiB, у NVMe — Data Units Written). Зная это значение и дату включения диска в эксплуатацию, легко вывести средний темп записи в сутки:

smartctl -A /dev/sda | grep -i written
nvme smart-log /dev/nvme0n1 | grep -i "data units written"

Этот способ надёжнее разового iostat, потому что усредняет по всей истории диска, а не по одному дню, который может быть нетипичным. Как читать остальные SMART-атрибуты — в статье про мониторинг здоровья железа. Оба способа стоит сверить: если расходятся в разы — берите более осторожную (большую) оценку.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Шаг 2: экстраполируйте на срок службы

Дальше — простая арифметика, но именно на ней чаще всего ошибаются, беря число «с потолка». Допустим, замер показал среднесуточную запись 45 ГБ на раздел с базой. Планируемый срок эксплуатации — 5 лет.

45 ГБ/сутки × 365 × 5 лет ≈ 82 ТБ за весь срок

Это оценка суммарной записи за срок службы при сохранении текущего паттерна нагрузки. Важная оговорка: нагрузка редко бывает ровной — база растёт, трафик растёт. Если есть история роста за прошлые периоды — закладывайте такой же рост в прогноз. Без данных о тренде берите текущий темп как консервативную нижнюю границу.

Суточная записьЗа 3 годаЗа 5 летЗа 7 лет
10 ГБ/сутки~11 ТБ~18 ТБ~26 ТБ
45 ГБ/сутки~49 ТБ~82 ТБ~115 ТБ
100 ГБ/сутки~110 ТБ~183 ТБ~256 ТБ
300 ГБ/сутки~329 ТБ~548 ТБ~767 ТБ

Цифры в таблице — иллюстрация арифметики, подставляйте в неё именно свой замер из шага 1.

Шаг 3: сравните оценку с паспортным TBW модели

Теперь сопоставьте оценку записи за срок службы с паспортным TBW конкретного диска — оно всегда указано в спецификации модели, не берите его на глаз, у моделей одной линейки оно может отличаться в разы.

  • Оценка заметно меньше TBW (в 2+ раза) — запас комфортный.
  • Оценка близка к TBW (в пределах 20-30%) — повод насторожиться: рост нагрузки или ошибка в замере съедят запас.
  • Оценка превышает TBW — с текущим диском и паттерном записи ресурс, скорее всего, выработается раньше конца планируемого срока.

В последнем случае есть два направления, не взаимоисключающих:

Взять модель с большим TBW. Серверные/корпоративные линейки SSD (обычно с DWPD 1, 3, 5+ против 0.3-0.5 у потребительских того же объёма) закладывают заметно больший ресурс за счёт более качественной флеш-памяти и большего резервирования (over-provisioning). Платите больше за гигабайт, но не меняете диск раньше срока. Сравнение классов SSD — в статье NVMe против SATA SSD на сервере.

Пересмотреть паттерн нагрузки. Часть записи может быть избыточной:

  • Слишком подробное логирование (debug-уровень в проде вместо info, редкая ротация при небольшом объёме логов).
  • Неоптимальные настройки СУБД — слишком частый fsync/checkpoint, избыточный write-ahead journaling.
  • Временные файлы на том же диске, что и основные данные, хотя могли бы уйти на отдельный том.
  • Активный swap на SSD при нехватке памяти — в этом случае правильнее добавить памяти, а не подстраивать ресурс диска под своп.

Снижение избыточной записи продлевает ресурс диска и часто попутно улучшает задержку на критичных операциях, потому что снижает конкуренцию за I/O.

Превышение TBW — это не выключатель, а статистика

Здесь важно сказать честно, без запугивания и без обманчивого спокойствия одновременно. Превышение паспортного TBW не означает мгновенный отказ диска в конкретный день. Обычно есть некоторый запас прочности сверх заявленного значения — производитель закладывает TBW консервативно, с расчётом на гарантийные обязательства, а не как точный предел разрушения ячеек. Диски нередко работают и после превышения заявленного ресурса.

Но это статистическая гарантия, а не инженерный расчёт вашего конкретного экземпляра. После превышения производитель уже ничего не гарантирует, и риск отказа растёт непредсказуемо — неизвестно, продержится ли именно ваш диск заметно дольше паспорта или откажет вскоре после превышения. Полагаться на недокументированный «запас сверх паспорта» как на плановый ресурс — рискованная практика.

Разумный подход — держать оценку своей нагрузки с запасом от паспортного лимита, а не впритык. Если по расчётам из шага 2 вы к концу срока эксплуатации упираетесь в 90% паспортного TBW — это повод пересмотреть модель или паттерн записи заранее, не дожидаясь фактического исчерпания запаса. И в любом случае TBW описывает только деградацию флеш-памяти, а не защищает от отказа контроллера или других аппаратных сбоев — даже надёжный по ресурсу SSD не отменяет бэкапы, об этом подробнее в статье миф: SSD не нужно бэкапить.

Два примера с реальным расчётом

Небольшой веб-проект. VPS с сайтом и логами nginx: замер через iostat даёт около 3-5 ГБ записи в день, в основном логи и кэш. За 5 лет это ~5,5-9 ТБ — практически любой современный SSD, даже потребительский, закрывает такую нагрузку с большим запасом.

Сервер с активной базой данных. PostgreSQL с частыми короткими транзакциями и активным WAL: замер по истории SMART за 4 месяца показал темп записи около 80 ГБ в сутки, за 5 лет это ~146 ТБ. Если рассматриваемый NVMe большого объёма имеет паспортный TBW в районе 150-200 ТБ (типично для потребительского сегмента) — запас минимальный. Разумнее либо взять модель с TBW от 600-1000+ ТБ (обычный порядок для серверных дисков), либо снизить частоту checkpoint.

Разница между случаями — в том, что нагрузка была измерена, а не предположена. Без замера легко и переплатить за избыточно надёжный диск под лёгкую нагрузку, и наоборот — поставить под интенсивную запись модель, ресурса которой не хватит и на треть срока.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли обойтись без замера и просто взять диск с TBW побольше «на всякий случай»?

Можно, но это переплата вслепую: без оценки нагрузки вы не знаете, нужен ли запас в 2 раза или в 10 раз. Замер занимает день-два и того стоит.

Что если система новая и истории для SMART-замера ещё нет?

Используйте iostat за первую неделю реальной эксплуатации под ожидаемой нагрузкой (не тестовый прогон с синтетическими данными) — обычно этого достаточно для рабочей оценки, которую потом можно уточнить через SMART спустя несколько месяцев.

DWPD и TBW — это одно и то же?

Разные способы выразить один ресурс. DWPD показывает, сколько раз в сутки можно переписать весь объём диска в течение гарантийного срока; TBW — то же самое в абсолютных терабайтах за весь срок. Зная объём диска, срок гарантии и DWPD, можно вычислить TBW и наоборот.

RAID меняет расчёт TBW?

Да, заметно. При RAID 1/10 нагрузка на каждый диск примерно равна нагрузке на логический том. При RAID 5/6 из-за пересчёта контрольных сумм на запись уходит больше физических операций, чем логический объём данных — закладывайте больший темп износа на каждый диск в массиве, чем показывает нагрузка на том.

Стоит ли мониторить остаток ресурса вместо разового расчёта?

Разовый расчёт нужен при выборе диска, мониторинг — в эксплуатации: многие SSD показывают в SMART отдельный атрибут с оценкой оставшегося ресурса в процентах (Percentage Used у NVMe, Media_Wearout_Indicator у некоторых SATA-моделей). Разумно делать и то, и другое.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →