Какой ssd выбрать в 2019 году и почему: тест 21 накопителя объёмом 1 тбайт с интерфейсом nvme

Поддержка NVMe-oF over RoCE в продуктах VMware

Чем отличаются M.2 SSD

Итак, вы находитесь на рынке SSD M.2 и у вас уже есть общее представление о том, как они работают, однако, когда вы смотрите на различные продукты, у вас всё ещё будут возникать вопросы, какие из них лучше и почему.

В этом разделе мы расскажем, чем отличаются SSD и, в конечном итоге, как эти различия влияют на производительность.

Размер M.2 SSD

Как мы упоминали выше, не все SSD M.2 одинаковы; они различаются во многих отношениях, но наиболее заметным, вероятно, является размер. Когда мы говорим о размере, мы ссылаемся на две области: емкость хранилища и физический размер (в основном, длина).

Узнать, какой объем памяти у вашего SSD очень важно, потому что вам нужно знать, для чего он используется. Знание длины равнозначно, если не более важно, потому что некоторые материнские платы просто не совместимы с твердотельными накопителями M.2 определенных размеров

Во-первых, давайте рассмотрим физический размер M.2 SSD:

M.2 –код размера Физический размер
2230 22мм х 30мм
2242 22мм х 42мм
2260 22мм х 60мм
2280 22мм х 80мм
22110 22мм х 110мм

Как видно из приведенной выше таблицы, твердотельные накопители M.2 бывают разных размеров. Узнать, какой размер совместимы с вашей материнской платой, достаточно просто, – нужно только прочитать руководство пользователя. Вы также можете напрямую связаться с производителем материнской платы, если это немного облегчит вашу жизнь.

Переходя к объему хранилища, как и всей памяти, будь то ОЗУ, HDD или SSD, емкость значительно варьируется.

Наиболее распространенные размеры:

  • 120/128GB
  • 240GB
  • 250/256GB
  • 480GB
  • 500GB
  • 960/1TB
  • 2TB

Как и с любым другим аппаратным компонентом, размер памяти имеет прямую связь с ценой. Возможно, вы видели HDD на 2ТБ менее чем за 5000 рублей, однако, из-за особенностей и технологий, используемых при производстве твердотельных накопителей, о таком можно даже не мечтать (во всяком случае, пока).

Интерфейс шины M.2 SSD

Здесь всё становится немного более техничным, но я постараюсь сделать объяснение максимально простым.

Интерфейс шины – из-за отсутствия лучшего сравнения – это путь, по которому идут данные при перемещении на диск M.2 и с него.

Существует множество различных интерфейсов, используемых с M.2, и они имеют значение, когда речь заходит о скорости вашего SSD в реальных ситуациях.

Большинство более ранних накопителей M.2 использовали соединение SATA, то есть они были скованы «кандалами» ограничений устаревшей технологии. Это были те же самые накопители, что и SSD mSATA.

Однако, в стремлении повысить скорость чтения/записи разработчики должны использовать линии PCIe, которые может предложить ваша материнская плата. Следующие SSD с шиной PCI Express M.2 имели существенный прирост производительности по сравнению с более ранними SATA SSD и оригинальными дисками mSATA, соответственно.

Первые твердотельные накопители PCIe должны были использовать интерфейс PCIe Gen 2.0 x2, который имел повышенную производительность по сравнению с SATA, но лишь незначительно. Но, всё изменилось с появлением PCIe Gen 3.0 x4.

Большинство накопителей M.2, которые вы найдете на сегодняшнем рынке, будут совместимы с PCIe Gen 3.0 x4, и, в сочетании с NVMe (энергонезависимая память Express), они предлагают впечатляющую производительность.

Что такое fsync и где он используется?

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

Существует ряд задач, в которых необходимо быть уверенным, что изменения в файле записаны на накопитель, а не лежат в промежуточном буфере. Эту уверенность можно получить при использовании POSIX-совместимого системного вызова fsync. Вызов fsync инициирует принудительную запись из буфера на накопитель.

Продемонстрируем влияние буферов искусственным примером в виде короткой программы на языке C.

#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>


int main(void) {
    /* Открываем файл answer.txt на запись, если его нет -- создаём */
    int fd = open("answer.txt", O_WRONLY | O_CREAT);
    /* Записываем первый набор данных */
    write(fd, "Answer to the Ultimate Question of Life, The Universe, and Everything: ", 71);
    /* Делаем вид, что проводим вычисления в течение 10 секунд */
    sleep(10);
    /* Записываем результат вычислений */
    write(fd, "42\n", 3); 


    return 0;
}

Комментарии хорошо объясняют последовательность действий в программе. Текст «ответ на главный вопрос жизни, Вселенной и всего такого» будет буферизирован операционной системой, и если перезагрузить сервер нажатием на кнопку Reset во время «вычислений», то файл окажется пуст. В нашем примере потеря текста не является проблемой, поэтому fsync не нужен. Базы данных такого оптимизма не разделяют.

Базы данных — это сложные программы, которые одновременно работают с множеством файлов, поэтому хотят быть уверенными, что записываемые ими данные будут сохранены на накопителе, так как от этого зависит консистентность данных внутри БД. Базы данных спроектированы записывать все завершенные транзакции и быть готовыми к отключению питания в любой момент. Такое поведение обязывает использовать fsync постоянно в больших количествах.

Какие операционные системы поддерживает Node Version Manager ?

NVM был первоначально разработанный для Linux и OS X, но также существует проект NVM Windows https://github.com/coreybutler/nvm-window. Хотя существуют незначительные отличия, базовые команды для установки, просмотра и переключения версий Node.js идентичны, кроме случаев описанных ниже.

Установка NVM на OS X и Linux

Сначала, удостоверьтесь в том что утилита совместима с вашей версией операционной системы. Также технически вам не нужно удалять уже установленый Node, но лучше сделать это, кроме того, нужно удалить любые прежнюю версию npm.C++ компилятор необходим для поддержки версий предшествующий 0.8.6. Даже если вы обычно работаете только с LTS или более современными релизами, вы все де можете установить компилятор C++. Если вы у вас OS X, ваш лучший выбор это Xcode. Чтобы установить его выполните следующую команду:

Если вы используете Linux, выполните следующую команду, чтобы установить build-essential package вместе с Advanced Package Tool:

После этого, вы можете установить Node Version Manager используя cURL или Wget. Для cURL выполните следующую команду:

Для Wget выполните следующую команду:

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.5/install.sh | bash

Перед установкой узнайте последнюю достпную версия NVM https://github.com/creationix/nvm/releases. На данный момент последняя версия v0.33.11. команды выше клонируют репозиторий в ~/.nvm и применят изменения для вашего bash профиля, так что вы сможете иметь доступ к Node Version Manager где-угодно в вашем терминале.

Установка NVM на Windows

Перед тем как вы начнете, удалите существующую версию Node.js, чтобы избежать потенциальных проблем во время установки. Дальше скачайте с Github nvm-setup.zip https://github.com/coreybutler/nvm-windows/releases Послее того как откорете его просто следуйте инструкциям для заверешнния установки.

Показатель ресурса: TBW — ещё не приговор

Компания Transcend честно указывает ресурс записи, который способен выдержать накопитель MTE110S: для 512-гигабайтной версии он составляет 270 Тб или 135 Тб по JEDEC стандарту. Вроде бы, 275 Тб — это много, если не пытаться угробить диск специально, а 135 Тб — это уже как-то ближе к возможностям, тем более с такими скоростями. Почему по JEDEC стандарту параметр в два раза ниже? Дело в том, что по стандарту JEDEC, значение TBW означает не тот лимит перезаписи, при котором накопитель сдохнет, а то количество перезаписей, при котором вероятность появления бэд-блоков на SSD приблизится к вероятности появления бэд-блоков на HDD в тех же условиях. Ниже на диаграмме вы видите, что вероятность появления невосстанавливаемых ошибок на HDD линейно зависит от выработки ресурса, а на SSD — зависимость экспоненциальная.

Если например, взять по 10 HDD и по 10 SSD объемом 70 Гб, и записать на каждый накопитель по 70 Тб, мы совершим 1000 перезаписей для каждого устройства. Потом надо проверить, не появились ли на каждом из 20 накопителей бэд-блоки. Если появились, посчитать вероятность для каждого диска, и если у SSD и HDD она одинаковая, то ресурс SSD принимаем за 70 TBW

Причем обратите внимание на цифры по оси Y — максимум — 0.05 бэд-блока на каждый накопитель, то есть если взять не 10, а 100 SSD дисков и на каждый записать по 70 Тб, то суммарно на всех них придётся всего лишь 5 бэд-блоков. 

Это говорит нам о том, что о ресурсе можно не беспокоиться: как и в любой другой технике, NVMe либо сдохнет, либо нет, поэтому важнее параметра TBW гарантия и наличие сервисных центров.

Так какой тип SSD мне все же выбрать?

Как найти лучший M.2

История

Работа над спецификацией

Первые подробности о новом стандарте доступа к энергонезависимой памяти появились на Intel Developer Forum в 2007 году, где был представлен NVMHCI (Non-Volatile Memory Host Controller Interface) — предполагаемый вариант нового интерфейса коммуникации между хостом и контроллером NAND. В том же году была сформирована рабочая группа для проработки NVMHCI во главе с Intel. Первая спецификация NVMHCI 1.0 была закончена в апреле 2008 года и размещена на сайте Intel.

Техническая проработка NVMe началась во второй половине 2009 года. Спецификации NVMe были разработаны рабочей группой «NVM Express Workgroup», в которую входило более 90 компаний, председателем группы была Эмбер Хаффмен из Intel. Первая версия спецификации NVMe была представлена 1 марта 2011 года. При работе над версией 1.1, появившейся 11 октября 2012 года, разработчики сфокусировались на добавлении функциональных возможностей для устройств корпоративного класса. В новом стандарте были добавлены многопутевой ввод-вывод с разделяемым доступом к пространствам имён NVMe и поддержка векторного ввода-вывода (англ. arbitrary-length scatter-gather I/O).

В дальнейшем работа над новыми версиями спецификации NVMe была продолжена:

  • NVMe 1.1b — 2 июля 2014 года;
  • NVMe 1.2 — 3 ноября 2014 года; для устройств потребительского класса: расширенное управление питанием и поддержка накопителей без динамической памяти; для устройств корпоративного класса: возможность обновления прошивки без остановки работы накопителя, снижение задержек в топологиях с большим количеством NVMe-накопителей и коммутаторами PCIe.
  • NVMe 1.2a — 23 ноября 2015 года.

NVMe 1.3c — 24 мая 2018 года.

Первые контроллеры и готовые накопители

Первые контроллеры SSD с поддержкой NVMe и эталонный дизайн флеш-накопителей в форм-факторе полнопрофильной платы PCIe были выпущены компанией Integrated Device Technology в августе 2012 года.

Первый серверный NVMe-накопитель Samsung XS1715 в форм-факторе U.2 (2.5″, разъём SFF-8639) был анонсирован в июле 2013 года. Основой для накопителя послужил контроллер, разработанный . Заявленные характеристики составили 3 ГБайт/с при последовательном чтении и 740000 IOPS при случайном доступе блоками 4 КиБ.

В июне 2014 года свои первые линейки серверных NVMe-накопителей представила компания Intel. Линейки DC P3700, DC P3600, DC P3500, отличающиеся между собой производительностью и ресурсом, выпускаются в форм-факторе U.2 и в виде низкопрофильных плат PCIe. В следующем, 2015 году Intel выпустила основанный на P3500 накопитель потребительского класса — Intel 750.

В июне 2015 года появился один из первых NVMe-накопителей потребительского класса в компактном форм-факторе M.2 — Samsung SM951-NVMe.

Появившиеся в сентябре 2015 смартфоны Apple iPhone 6s и iPhone 6s Plus стали первыми мобильными устройствами, оснащёнными встроенными NVMe-накопителями.

Специально для SSD

Простое внедрение благодаря передовым вариантам подключения

Анкета загружается…

Общие хранилища, в которых доступ к ресурсам предоставлен нескольким серверам сразу, достаточно часто построены на дисковых полках JBOF. При таком подходе объем хранилища может выделяться или перераспределяться сообразно потребностям приложений, и сложность организации такого общего использования бывает разной.

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

Описание

Как получить на свой сервер

Как использовать NVM

Есть несколько важных вещей которые нужно знать чтобы использовать NVM эффективно, ниже они будут описаны и будут приведены примеры как делать определенные задачи.

Установка разных версий Node.js

Менеджер версий делает установку разных версий Node.js очень простой с помощью одной команды. Просто запустите команду install и передайте ей параметром необходимую версию. Например, если вы хотите установить Node.js версии v6.5.0, выполните следующую команду:

Так как утилита следует SemVer, вы можете устанавливать патчи командой install с аргументом номера патча. Для получения списка доступных версий в Linux и OS X, выполните:

Если вы используете Windows, выполните следующую команду:

Если вам нужно удалить екземпляр Node, просто выполните nvm uninstall c нужным номером версии.

Глобальные npm пакеты

Стоит заметить то что глобально установленный npm пакеты не разделяются между разными версиями Node.js, потому что они могут причинить проблемы несовместимости. Поэтому, Node Version Manager одновременно устанавливает совместимую версию npm каждый раз когда вы устанавливаете какую то версию Node.js. Так как каждый экземпляр Node имеет собственную версию npm, вы можете запустить npm -v что-бы проверить какая версия сейчас используется. Также не нужно иметь sudo права при установке глобальных пакетов. Если вы хотите переустановить глобальные npm пакеты для определенной версии Node.js или при ее установке, сделайте так:

Команда выше устанавливает Node 6.5.0 и необходимую npm, потом переустанавливает все установленные пакеты в версии 4.2

Алиасы

Что облегчить процесс смены версий, NVM позволяет использовать псевдонимы для определения версий без указания номера. Примеры стандартных алиасов:— node: устанавливает самую последнюю стабильную версию Node.js— unstable: устанавливает самую последнюю стабильную версию Node.js— iojs: устанавливает самую последнюю стабильную версию io.js

Для установки последней стабильной версии Node.js выполните следующую команду

Также существует алиас по умолчанию. Для установки версии по умолчанию используйте такую команду

Кроме того, вы можете создавать собственные алиасы:

Для удаления алиаса, выполните команду unalias:

Переключения между версиями Node.js

Каждый раз как вы устанавливаете новую версию Node.js, она будет автоматически выбираться для использования. Для переключения между версиями используется команда, nvm use которая работает почти также как и команда install. Например если вы хотите переключиться на последнюю стабильную версию, выполните команду

Для получения списка всех установленных версий Node, используется команда nvm ls:

Активная версия будет помечена зеленым цветом и стрелочкой, также текущую версию можно получить с помощью команды:

Дополнительные команды

— Существует несколько дополнительных команд, которые могут вам когда-нибудь понадобиться. Чтобы запустить команду для установленной версии без переключений переменных node, используйте такой формат

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

— если вы хотите узнать путь к исполняемым файлам Node.js для какой-то версии Node, используйте следующий формат

— Также вы можете назначить желаемую версию Node.js для ваших проектов, создав .nvmrc файлы в репозитории проектов. Существует плагин avn https://github.com/wbyoung/avn, который позволяет автоматичски переключпаться между версиями при смене директорий.

Реализация NVMe в фабрике

SSD NVMe – что искать перед покупкой

Если посмотреть на спецификации твердотельных накопителей NVMe с разъемом M.2, имеющихся в магазинах, может показаться, что наиболее важным параметром этих носителей является последовательная скорость чтения и записи данных

И хотя это действительно важно, не стоит зацикливаться только на этом

Почему? Достижение заявленной производителем скорости, иногда превышающей 5000 МБ/с (в случае моделей, поддерживающих PCI Express 4.0), даже в случае использования компьютера на продвинутых уровнях затруднено, поскольку для этого требуется копирование больших файлов, состоящих из данных, которые легко сжимать. В обычной жизни следует ожидать значительно более низких скоростей. Но это не должно нас беспокоить, потому что даже последовательная передача данных со скоростью 3000 МБ/с является сенсационным результатом с точки зрения пользователя.

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

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

Тип памяти, используемой в SSD, также важен. Преимущество TLC-ячеек заключается в их более низкой цене, но по сравнению с MLC-ячейками, но их производительность может снизиться после того, как SSD заполнен, и они менее жизнеспособны (каждая полупроводниковая ячейка памяти может быть перезаписана ограниченное количество раз, затем она перестает работать – это связано с конструкцией этого типа памяти ). Хотя проблема более короткого срока службы не должна нас сильно беспокоить, потому что деградация, которая может привести к потере данных, прогрессирует очень медленно, и даже самый дешевый современный SSD может использоваться в течение многих лет.

Поэтому, если для вас важнее низкая цена, выберите модель TLC. Однако, если вы цените производительность, выберите носитель с модулями MLC.

Доступны также SSD NVMe с использованием ячеек QLC. Такие модели привлекают ценой, но вы должны помнить, что производительность ячеек QLC не так хороша, как в случае TLC и MLC, и резко снижается при длительной загрузке дисков большими объёмами данных, что делает SSD QLC не лучшим выбором для установки операционной системы. Тем не менее, они идеально подходят в качестве второго носителя данных на вашем компьютере, где вы можете хранить игры, программы или мультимедиа.

NVMe SSD с разъемом M.2, оснащенные радиатором, всё чаще встречаются в магазинах. Радиатор – это не просто причуда производителей, которые хотят таким образом повысить цену своего продукта, а способ эффективного отвода тепла от носителя. SSD NVMe, особенно под большой нагрузкой, может нагреваться до очень высоких температур. В таких ситуациях активируется дросселирование, чтобы предотвратить перегрев носителя, что замедляет память и ограничивает повышение температуры.

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

NVMe-oF: рабочие характеристики NVMe теперь и за пределами сервера

Хотя в условиях ЦОД NVMe SSD-накопители прекрасно справляются со своей задачей по ускорению рабочих нагрузок сервера, есть одна проблема. Чтобы полностью использовать скорость NVMe, SSD-накопитель должен находиться на шине PCIe, рядом с процессорами. Шину PCIe невозможно расширить за пределы сервера, и даже если каждый сервер в отдельности ускорить можно, в результате это приведет к возникновению мини-«башен» или «силосов» из SSD-накопителей, которые будет нелегко поделить между хостами.

NVMe-oF позволяет обеспечить скорость NVMe-хранилища даже при работе с несколькими хостами

Предпосылки появления

Ранние твердотельные накопители использовали для подключения параллельный SCSI и использовались в серверах и высокопроизводительных рабочих станциях. Проникновение SSD на массовый рынок пришлось на середину 2000-х и совпало по времени с вытеснением параллельного SCSI интерфейсами SATA и SAS. Со временем дальнейшему наращиванию производительности SSD стали мешать ограничения интерфейсов SATA и SAS, ориентированных в первую очередь на подключение традиционных механических жёстких дисков. Например, в отличие от жёстких дисков, скорость последовательного чтения для большинства современных SSD ограничивается пропускной способностью интерфейса SATA.

Высокопроизводительные SSD с подключением к шине PCI Express производились до NVMe, но либо использовали уникальные закрытые стандарты и технологии оптимизации работы с флеш-памятью, либо представляли собой SATA или SAS контроллер и несколько SSD с интерфейсами SATA/SAS, размещёнными на одной плате. Переход на NVMe позволяет стандартизировать интерфейс SSD — производителям больше не нужно тратить ресурсы на разработку уникальных драйверов, разъёмов и форм-факторов. Подобным образом принятие спецификаций позволило создать большое разнообразие USB-флеш-накопителей, которые смогли работать с любыми компьютерами, не требуя оригинальных драйверов для каждой модели.

Для эффективного использования накопителей NVMe в сетях хранения данных разрабатываются различные стандарты передачи команд NVMe через RDMA (поверх InfiniBand или Ethernet — и ) и Fibre Channel без трансляции в SCSI под общим названием NVMe over Fabrics.

Резюме — Стоит ли приобретать SATA 3 или NVMe?

На что влияет частое использование fsync?

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

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

  • Intel DC SSD S4500 480 GB, подключен по SATA 3.2, 6 Гбит/с;
  • Samsung 970 EVO Plus 500GB, подключен по PCIe 3.0 x4, ~31 Гбит/с.

Тесты проводятся на Intel Xeon W-2255 под управлением ОС Ubuntu 20.04. Для тестирования дисков используется sysbench 1.0.18. На дисках создан один раздел, отформатированный как ext4. Подготовка к тесту заключается в создании файлов объемом в 100 ГБ:

sysbench --test=fileio --file-total-size=100G prepare

Запуск тестов:

# Без fsync
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=0 run
# С fsync после каждой записи
sysbench --num-threads=16 --test=fileio --file-test-mode=rndrw --file-fsync-freq=1 run
Тест Intel S4500 Samsung 970 EVO+
Чтение без fsync, МиБ/с 5734.89 9028.86
Запись без fsync, МиБ/с 3823.26 6019.24
Чтение с fsync, МиБ/с 37.76 3.27
Запись с fsync, МиБ/с 25.17 2.18

Нетрудно заметить, что NVMe из клиентского сегмента уверенно лидирует, когда операционная система сама решает, как работать с дисками, и проигрывает, когда используется fsync. Отсюда возникает два вопроса:

  1. Почему в тесте без fsync скорость чтения превышает физическую пропускную способность канала?
  2. Почему SSD из серверного сегмента лучше обрабатывает большое количество запросов fsync?

Ответ на первый вопрос прост: sysbench генерирует файлы, заполненные нулями. Таким образом, тест проводился над 100 гигабайтами нулей. Так как данные весьма однообразны и предсказуемы, в ход вступают различные оптимизации ОС, и они значительно ускоряют выполнение.

Если ставить под сомнение все результаты sysbench, то можно воспользоваться fio.

# Без fsync
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=0 --filename=/dev/sdb


# С fsync после каждой записи
fio --name=test1 --blocksize=16k --rw=randrw --iodepth=16 --runtime=60 --rwmixread=60 --fsync=1 --filename=/dev/sdb
Тест Intel S4500 Samsung 970 EVO+
Чтение без fsync, МиБ/с 45.5 178
Запись без fsync, МиБ/с 30.4 119
Чтение с fsync, МиБ/с 32.6 20.9
Запись с fsync, МиБ/с 21.7 13.9

Тенденция к просадке производительности у NVMe при использовании fsync хорошо заметна. Можно переходить к ответу на второй вопрос.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий