Кеширование в домашних NAS

Идея ускорения жестких дисков с помощью твердотельных накопителей не нова. «Гибридные» SSHD, решения для нескольких промышленных центров обработки данных и многоуровневые кэши в профессиональных серверах NAS существуют уже давно. Относительно недорогой домашний NAS также предлагает этот вариант. Но стоит ли прилагать усилия? Мы провели испытания и готовы поделиться результатами.

Домашний NAS всегда имел возможность создать кэш на быстром SSD, но требовал, чтобы SSD был установлен в один из доступных слотов для дисков. По этой причине он не пользовался особой популярностью. Ситуация начала меняться три года назад с выпуском Synology DS918 +. Эта модель имеет два выделенных слота для компактных и быстрых твердотельных накопителей формата M. Текущая линейка продуктов Synology для дома и энтузиастов (DS720 +, DS420 + и DS920 +) также включает слоты для кэш-памяти NVME. Учитывая относительно невысокую стоимость современных твердотельных накопителей NVME, трудно устоять перед соблазном заполнить два пустых слота.

Потенциальные проблемы

В большинстве статей раздел о потенциальных проблемах может быть расположен ближе к концу текста, если он вообще есть, но это явно не так. Технология кэширования с использованием NVME — палка о двух концах, которая может привести к внезапному перезапуску устройства, неожиданной потере записанных данных, ухудшению качества всего тома с последующим долгим восстановлением (и не очевидным) и чрезвычайно быстрое, не оправданное объемом записываемых данных, исчерпание ресурса кэширования перезаписываемых ячеек SSD. Однако большинства проблем можно избежать, правильно выбрав диски и правильно настроив кеш. К сожалению, большинство пунктов, описанных ниже, не отражены в документации Synology, поэтому пользователи снова и снова используют одни и те же грабли.

Спонтанные перезагрузки с потерей данных

При интенсив­ном исполь­зовании кеша в режиме r/w (для это­го тебе при­дет­ся соз­дать зер­каль­ный мас­сив из двух NVME-накопи­телей) некото­рые поль­зовате­ли отме­чали неожи­дан­ные перезаг­рузки устрой­ства, при­водив­шие к потере толь­ко что записан­ных дан­ных (воз­никно­вение так называ­емой write hole). К при­меру, поль­зователь DS918+ нас­тро­ил пару не самых дешевых дис­ков Samsung 970 Evo в качес­тве кеша, но от потери дан­ных его это не спас­ло. Ана­логич­ную проб­лему об­сужда­ют в сосед­ней вет­ке. С чем это свя­зано?

Дело здесь в том, что на некоторых моделях накопителей NVME на основе технологий TLC и QLC после того, как закончится кеш SLC, могут возникнуть задержки в обработке команды записи. Вот и готовый рецепт. Получите одни из самых дешевых твердотельных накопителей NVME с наименьшей емкостью. Включите кеш чтения и записи и не забудьте включить кеш последовательного прохода. Выделите все доступное пространство для хранения в кэш — и начните запись.

Все сов­ремен­ные SSD кеширу­ют опе­рации записи.Данные, которые записываются первыми, попадают в область псевдо-SLC, которая записывается очень быстро. Привод будет сжимать данные, перезаписывая ячейки TLC / QLC в спящем режиме.

Поток данных не прекращается. Через короткое время буфер SLC переполняется, и контроллер SSD должен одновременно получать новые данные и уплотнять уже записанные данные. Свободные блоки быстро заканчиваются, и к операции компактности добавляется операция удаления ранее записанных блоков — а в таких накопителях она выполняется очень медленно. Через короткое время контроллер переполняется, и следующая попытка записи приводит к таймауту.

Напомню, что накопители NVME подключаются не через контроллер SATA, который умеет самостоятельно обрабатывать ошибку, а напрямую к шине PCIe. Пользователи DS918 + отметили, что тайм-аут записи вызвал самопроизвольную перезагрузку устройства, за которой последовало ухудшение как кеша, так и всего тома (r /w кэш становится его неотъемлемой частью).

По­доб­ные ошиб­ки отме­чали поль­зовате­ли раз­ных моделей Kingston и ADATA с кон­трол­лерами SMI. Отдель­ные поль­зовате­ли жа­луют­ся на пери­оди­чес­кие ошиб­ки тайм‑аута с накопи­теля­ми WD Black; в то же вре­мя дис­ки Samsung 970 Evo в воз­никно­вении этой ошиб­ки не замече­ны (впро­чем, как и любые дру­гие дис­ки, эти модели так­же под­верже­ны преж­девре­мен­ному изно­су).

Честно говоря, я никогда не слышал о таких ошибках в устройствах поколения 2020.

Преждевременное исчерпание ресурса SSD

Пользователь DS918 + и пара Samsung 960 Evo 256 ГБ отмечают преждевременное исчерпание ресурса SSD. SSD содержит всего 30 ТБ данных, что даже отдаленно не близко к заявленному производителем ресурсу. Брак? Возможно, но маловероятно: это не единичный случай.

В этом и подоб­ных слу­чаях проб­лема в фак­торе коэф­фици­ента уси­ления записи (write amplification), а точ­нее — несов­падение опти­маль­ного для SSD сце­нария работы с фак­тичес­ким.

Как вы знаете, чтобы записать один байт информации на SSD, вам нужно записать целую страницу данных. Большинство современных SSD-накопителей работают с относительно большими страницами — иногда несколько мегабайт. В то же время кеширование подразумевает работу с множеством небольших блоков данных размером в десятки и сотни килобайт. Запись каждого такого блока требует перезаписи всей страницы, что заставляет контроллер перезаписывать гораздо большие (иногда на порядки) объемы данных, чем он получает извне. Резуль­тат более чем логичен: диск исчерпы­вает заяв­ленный про­изво­дите­лем ресурс, что и отоб­ража­ется в дан­ных S.M.A.R.T.; DSM прис­ваивает накопи­телю соот­ветс­тву­ющий ста­тус, сбра­сывая содер­жимое кеша на дис­ки и перево­дя кеширо­вание в режим read-only. Ситу­ация штат­ная и к потере дан­ных при­водить не дол­жна, но в реаль­нос­ти иног­да при­водит.

Кстати: Synology DSM не позволяет использовать диск, который, согласно S.M.A.R.T. полностью исчерпал свои ресурсы в качестве буферного диска, даже несмотря на то, что фактическое состояние ячеек NAND могло выдержать десятикратный объем записи.

Минимизируем риски

Как избе­жать опи­сан­ных выше проб­лем? Дос­таточ­но убрать фак­торы рис­ка.

  1. Ес­ли твой сетевой накопи­тель работа­ет в режиме 24/7, рекомен­дую исполь­зовать кеш в режиме «толь­ко для чте­ния». Это и безопас­нее для сох­раннос­ти тво­их дан­ных, и щадит ресурс накопи­теля. Если же ты пери­оди­чес­ки вык­люча­ешь NAS, то содер­жимое кеша «толь­ко для чте­ния» будет сбра­сывать­ся каж­дый раз при заг­рузке, что толь­ко добавит наг­рузки на SSD. В таком слу­чае может иметь смысл режим r/w, в котором содер­жимое кеша пережи­вает перезаг­рузку.
  2. При соз­дании кеша в режиме r/w раз­реши исполь­зовать под кеш не более 70–80% объ­ема накопи­теля. Кон­трол­лер SSD смо­жет под­менять «гряз­ные» бло­ки незаня­тыми, что замет­но уве­личит ско­рость цик­личес­кой переза­писи и умень­шит фак­тор write amplification.
  3. От­кажись от исполь­зования дис­ков с QLC в качес­тве кеширу­ющих накопи­телей. Да, QLC — самая дешевая тех­нология, но такие дис­ки спо­соб­ны под­держи­вать высокую ско­рость записи лишь в рам­ках дос­тупно­го объ­ема псев­до-SLC. При исчерпа­нии буфера ско­рость записи в ячей­ки рез­ко пада­ет. Кро­ме того, память QLC при пос­тоян­ной переза­писи изна­шива­ется замет­но быс­трее TLC, так что эко­номия в любом слу­чае ока­жет­ся липовой.
  4. Не исполь­зуй сквоз­ное кеширо­вание пос­ледова­тель­ных опе­раций сов­мес­тно с недоро­гими NVME SSD неболь­шого объ­ема. Оче­вид­ный совет, который тем не менее мно­гие успешно игно­риру­ют.
  5. По воз­можнос­ти исполь­зуй спе­циали­зиро­ван­ные накопи­тели Optane (кро­ме серии H). У таких накопи­телей проб­лемы с тайм‑аута­ми отсутс­тву­ют прин­ципи­аль­но. Дру­гой вари­ант — спе­циали­зиро­ван­ные NVME-накопи­тели Synology, о которых я рас­ска­жу даль­ше.

С под­водны­ми кам­нями разоб­рались; мож­но прис­тупать к экспе­римен­там.

Типы кеширования: неочевидная разница

В текущей версии DSM (Synology OS) вы можете выбрать один из двух типов кэширования: только чтение (r / o) и чтение-запись (чтение-запись — r / w). Кроме того, доступна настройка, позволяющая управлять кэшированием последовательных операций чтения-записи (например, при потоковой передаче видео или записи другой резервной копии на диск). По умолчанию он отключен: эффективность такого кеширования сомнительна, а ресурс SSD может исчерпать за считанные недели.

Каждый из двух типов кеша имеет очевидные и неочевидные подводные камни. Однако некоторые важные параметры в документации не упоминаются в принципе.

Кеш «только для чтения»

Все прос­то: один том — один NVME-накопи­тель (почему нель­зя исполь­зовать один NVME SSD или зер­каль­ную пару для кеширо­вания двух и более томов — загад­ка). Кеширу­ются дан­ные, которые счи­тыва­ются с дис­ка как внеш­ними поль­зовате­лями, так и запущен­ными на устрой­стве про­цес­сами (нап­ример, вир­туаль­ными машина­ми).

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

Приб­лизитель­но так выг­лядит КПД моего кеша «толь­ко для чте­ния» во вре­мя работы.

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

Вот харак­терис­тики сетевой пап­ки.

Пер­вый раунд тес­тирова­ния, NVME-кеш отсутс­тву­ет. Син­хро­низа­ция заняла 35 мин 23 с.

Вклю­чаю NVME-кеш, пов­торяю попыт­ку. 33 мин 7 с. Ожи­даемо: кеш пуст, запол­няет­ся в про­цес­се син­хро­низа­ции.

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

А что будет, если отклю­чить NVME-кеширо­вание? Отклю­чаю кеш, пов­торяю син­хро­низа­цию. 1 мин 39 с — раз­ница в пре­делах пог­решнос­ти. Дей­стви­тель­но, пре­дыду­щий тест ока­зал­ся бес­полез­ным — дан­ные сис­тема бра­ла в основном из опе­ратив­ной памяти, а не из кеша NVME.

В чем преимущество кэша только для чтения в этом сценарии? Практически нет: кеш не переживает перезагрузки. Сразу после включения синхронизация сетевой папки занимает 35 минут вместо полутора. Точно так же ведет себя кеш в оперативной памяти устройства, который проще и дешевле расширить, чем возиться с кешированием на NVME.

В каких сценариях имеет смысл кэш только для чтения? Особенно в тех, которые предполагают непрерывную работу NAS в режиме 24/7 с преобладанием операций произвольного доступа. Кэш также будет полезен, если к устройству одновременно обращаются несколько пользователей. Для меня кеш в этой конфигурации оказался совершенно бесполезным.

Кеш на чтение и запись

На­чиная тес­тирова­ние, я не ожи­дал, что кеш «толь­ко для чте­ния» будет сбра­сывать­ся каж­дый раз при заг­рузке устрой­ства. Этот момент не был отра­жен в докумен­тации, и я не пер­вый, кто с удив­лени­ем об­наружил эту осо­бен­ность. С моей точ­ки зре­ния, для «вре­мен­ного» кеширо­вания есть опе­ратив­ная память, а кеш на SSD дол­жен сох­ранять­ся меж­ду перезаг­рузка­ми. Одна­ко моя логика не сов­пада­ет с логикой раз­работ­чиков DSM, поэто­му для вклю­чения пос­тоян­ного кеша при­ходит­ся акти­виро­вать более опас­ный и менее ста­биль­ный режим кеширо­вания чте­ния‑записи.

Важно понимать, что при включении этого режима необходимо использовать два твердотельных накопителя NVME в зеркале (RAID 1); будет кэшироваться единственный выбранный том. Если ваша установка содержит только один том для хранения, вам повезло. Если имеется несколько томов, вам нужно будет выбрать, какой из них вы хотите ускорить.

Еще один важный момент: в режиме чтения / записи кэш на NVME становится частью тома. Если что-то случится с SSD или, например, вы захотите переместить жесткие диски на другое устройство без предварительного отключения кеша, основной том будет поврежден. И все это даже после выключения NAS. Поэтому перед выполнением таких дисковых операций необходимо отключить кеш.

Прис­тупа­ем к тес­тирова­нию. Чис­ло фай­лов успе­ло изме­нить­ся — перед получе­нием вто­рого NVME-накопи­теля прош­ло некото­рое вре­мя.

При соз­дании кеша я ука­зал воз­можность исполь­зовать в качес­тве кеша до 400 Гбайт (из 465 дос­тупных).

Пер­вый раунд син­хро­низа­ции с пус­тым кешем не отли­чает­ся по вре­мени от ситу­ации «без кеша»; я его про­пущу. Пос­ле того как кеш был запол­нен, син­хро­низа­ция сетевых папок заняла 1 мин 38 с — резуль­тат, ана­логич­ный пре­дыду­щему экспе­римен­ту.

Пе­резаг­ружаю устрой­ство, что­бы убе­дить­ся в сох­раннос­ти кеша. Сра­зу пос­ле заг­рузки запус­каю син­хро­низа­цию. 3 мин 12 с! Толь­ко в этом тес­те наконец уда­лось уви­деть раз­ницу меж­ду про­изво­дитель­ностью кеша в опе­ратив­ной памяти и кеша на NVME.

Месяц спустя

Я вни­матель­но наб­людал за работой устрой­ства в течение месяца. В моем сце­нарии исполь­зования NAS вклю­чает­ся три‑четыре раза в неделю с сес­сиями при­мер­но на час‑два. Впро­чем, ста­тис­тика SSD-кеша поз­воля­ет точ­но узнать и количес­тво сес­сий, и часы работы устрой­ства за этот месяц.

Постоянно используемый кэш чтения-записи достиг почти 24 ГБ — несмотря на то, что резервные копии и снятые фотографии последовательно сохранялись на устройстве в течение месяца. На снимке экрана показано текущее состояние кеша.

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

  1. Пе­риоди­чес­кая син­хро­низа­ция папок с целью резер­вно­го копиро­вания на порядок быс­трее, чем без кеша.
  2. Дос­туп к фай­лам ощу­тимо быс­трее не стал: я единс­твен­ный активный поль­зователь, и ско­рос­ти жес­тких дис­ков впол­не хва­тает.
  3. За­мет­но (в разы!) умень­шил­ся шум от позици­они­рова­ния головок дис­ков как при чте­нии, так и при записи дан­ных. Дис­ки ста­ли работать спо­кой­нее, пре­обла­дают опе­рации пос­ледова­тель­ного дос­тупа, а опе­рации слу­чай­ного дос­тупа перех­ватыва­ет и берет на себя кеш NVME.

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

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

Специализированные диски для кеширования

Как я уже упо­минал, DSM отклю­чает кеш на чте­ние‑запись (и не поз­воля­ет боль­ше исполь­зовать SSD для кеширо­вания), как толь­ко уро­вень оставше­гося ресур­са SSD по дан­ным S.M.A.R.T. дос­тига­ет нулево­го зна­чения. С уче­том того, что про­изво­дите­ли SSD весь­ма кон­серва­тив­ны, «ноль» по S.M.A.R.T. может озна­чать исчерпа­ние менее 10% реаль­ного ресур­са яче­ек памяти. Нераци­ональ­но? Воз­можно, но дру­гого спо­соба обес­печить целос­тность дан­ных у сис­темы нет.

DS918 + был отличным испытательным шаром. Армия невежественных бета-тестеров предоставила Synology отчеты о проблемах и данные телеметрии. Убедившись, что пользователи действительно не понимают специфику контроллеров SSD и принципы организации NAND (честно говоря, почему они должны понимать?), Компания решила выпустить выделенные твердотельные накопители NVME для кэширования под своим собственным именем.

Что они собой пред­став­ляют? Рас­смот­рим модель SNV3400-400G. Фак­тичес­ки серия SNV3400ODM-дис­ки на кон­трол­лере Phison PS5012-E12DC. Най­ди отли­чия.

SNV3400 от Synology

                                            SNV3400 от Synology

Дженерик от Phison

                                        Дже­нерик от Phison

Чем эти блоки кэширования отличаются от аналогичных решений ODM? Прежде всего, в смысле избыточного выделения ресурсов: емкость 400 ГБ предполагает наличие пула резервных ячеек просто гигантского размера. С наилучшими пожеланиями, пользователь не сможет «задушить» этот диск потоком данных — страницы замещающего фонда будут молча принимать новые данные и не будет никакого отказа в обслуживании тайм-аута. Кроме того, TBW диска 400 ГБ составляет 500 ТБ. В сочетании с низким коэффициентом усиления записи из-за большого запасного пула такой заявленный ресурс позволит такому специализированному диску работать как кэш чтения / записи намного дольше, чем альтернативные решения, даже с такой же реальной надежностью NAND.

Однако если вы все же понимаете принцип работы контроллеров памяти SSD и NAND и установите какой-нибудь Samsung Evo 970 с 500 ГБ в качестве кэша, а кеш создадите всего на 400, то результат, скорее всего, будет не хуже, а лучше специализированного хранилища (у Samsung более мощные контроллеры и очень выносливая память). Однако я не могу проверить это утверждение: статистика пока недоступна.

Еще один интересный вариант — использовать диски Intel Optane в качестве кеша (за исключением серии H, у которой есть два отдельных SSD — небольшой Optane и основной объем памяти QLC). Накопители Optane объемом 16 ГБ можно найти за копейки. Накопители такого размера мало кого интересуют, но использовать их так, как хотела Intel (как, обратите внимание, кеш для основного накопителя), пользователям десктопов это неинтересно. Современные твердотельные накопители NVME дают компактному Optane фору и по объему, и по производительности, и по цене за гигабайт.

Если кеш бесполезен

Мне уда­лось пе­рес­тать боять­ся и полюбить кеш, но если для тебя он ока­зал­ся бес­полезен, а SSD уже куп­лены и уста­нов­лены в сло­ты — что мож­но с ними сде­лать?

В устрой­ствах от кон­курен­тов ты мог бы соз­дать еще один том для хра­нения самых час­то исполь­зуемых дан­ных. Соот­ветс­тву­ющая фун­кция дав­но при­сутс­тву­ет в QNAP, а сов­сем недав­но появи­лась в про­шив­ке ADM 3.5.2.RAG2 (20 октября 2020-го) и для ус­трой­ств ASUSTOR с соот­ветс­тву­ющи­ми разъ­ема­ми.

В DSM 6.2 исполь­зовать накопи­тели NVME для соз­дания тома нель­зя. По слу­хам, в гря­дущем обновле­нии DSM 7.0 такая фун­кци­ональ­ность дол­жна появить­ся. Но сро­ки выхода это­го обновле­ния неиз­вес­тны. Сей­час тес­тиру­ется лишь пер­вая пред­варитель­ная вер­сия.

Впро­чем, если нель­зя, но очень хочет­ся, то мож­но. В статье Use NVME SSD as storage volume instead of cache in DS918 при­водят­ся под­робные инс­трук­ции, как соз­дать тома на таких накопи­телях. Нуж­но отме­тить, что решение име­ет огра­ничен­ную при­мени­мость: заг­ружать­ся с таких томов устрой­ство не будет.

Заключение

Кэширование NVME — одна из самых спорных функций NAS. Многочисленные программные ограничения. Потом иногда очень странная логика разработчика, сомнительная производительность кэша только для чтения. И еще потенциальный риск и износ SSD в режиме чтения-записи. Это будет удерживать многих, если не большинство, от использования этой функции. В то же время, если ваш вариант использования попадает в одну из нескольких узких ниш, для которых необходима буферизация, вы можете ускорить работу своего NAS и отключить его с минимальными усилиями.

Click to rate this post!
[Total: 3 Average: 5]

Leave a reply:

Your email address will not be published.