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

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

  1. Объемы данных сегодня больше, чем несколько лет назад. Соответственно, и вероятность возникновения временных ошибок тоже выше.
  2. Ранее массивы состояли из нескольких RAID-групп, в каждой из которых было по несколько дисковых томов. Если повреждение касалось одной RAID-группы, то все, что вы теряли, — эти тома. Современные массивы устроены иначе, в них высока вероятность повредить все тома одного массива даже если целостность данных будет потеряна в одной RAID-группе.

Как выходят из строя современные накопители

Одна из проблем хранения больших объемов данных на SSD – появление на накопителе по мере его эксплуатации все большего количества ошибок чтения, которые не поддаются исправлению. Это происходит независимо от используемой технологии NAND: в случае с SLC, eMLC, 3D MLC — все они ведут себя одинаково. При этом рост количества ошибок никак не связан с естественным износом и к концу четвертого года службы наблюдается, по крайней мере, у 20 % SSD. Это больше, чем у традиционных жестких дисков аналогичного возраста.

Почему это важно? Все дело в URE (Unrecoverable read errors) — неустранимых ошибках чтения, с которыми приходится иметь дело RAID. В большинстве случаев перед хранилищами стоит задача как можно сохранять целостность данных. То есть система хранения данных должна по умолчанию справляться со значительным ростом количества ошибок чтения на постепенно стареющих носителях даже на стадии минимального износа. А если URE-ошибки возникнут одновременно с другими ошибками, это сделает невозможным завершение восстановления диска или, что еще хуже, приведет к повреждению данных.

В зависимости от типа RAID по-разному справляются с ошибками. Например, в RAID6 допускается наличие двух неустранимых ошибок чтения, если все диски целые, и одна — если необходимо восстановить поврежденный диск. А уже в комбинации HPE Nimble Storage Triple+RAID допустимое число URE-ошибок может соответствовать количеству дисков в системе даже если три из них отказали. В любом случае минимальной степенью защиты системы хранения будет использование именно RAID6.

Надежность хранения данных: RAID5 – не всегда абсолютная защита

В некоторых системах RAID выполняется не для целых дисков, а для небольших сегментов данных. Тогда при восстановлении потребуются три вещи:

  • распределить защиту на несколько физических устройств;
  • достаточное количество четности для защиты от требуемого количества скоррелированных по времени ошибок;
  • место для перестройки сегментов после восстановления.

На рисунке ниже изображены 7 физических дисков и столько же сегментов, причем один из них — четный (обозначен буквой Р). На верхнем ряду сбои отсутствуют, а нижняя строка показывает, что происходит во время выхода диска из строя. Обратите внимание, как сегменты с первого диска перестроились на свободное пространство других дисков.

Восстановление RAID5 без URE

Восстановление RAID5 при условии, что отсутствуют ошибки чтения

А вот следующий пример. Здесь тоже «умирает» первый диск, но теперь на свободном пространстве появляются URE-сегменты (голубого цвета). При этом отмеченные голубым участки на верхнем рисунке становятся недоступными без надежды на ремонт. А так как мы их потеряли безвозвратно, проще очистить весь массив и восстановить его из резервной копии.

Восстановление RAID5 с URE-блоками

Восстановление RAID5 при наличии URE-сегментов

Скорость восстановления — не главное!

Известно, что для восстановления RAID5 нужно минимум времени. Тогда возникает вопрос в резонности использования RAID6 — так ли он нужен на самом деле? Можно ответить следующим образом: у вас есть сервер, который постоянно «глючит», и вы рискуете потерять данные, но при этом он перезагружается очень быстро! Быстрое восстановление дает только одно преимущество: позволяет сократить время, в течение которого снижается защита четности. Это может быть полезным, но точно не защищает от ошибок чтения при восстановлении диска.

Представим, что у вас есть диски емкостью 15 ТБ, защищенные массивом RAID5. В случае сбоя одного из них вы используете RAID5 и быстро его восстанавливаете. Неудобство лишь в том, что вам каждый раз придется восстанавливать все 15 ТБ. И если в процессе чтения данных будет обнаружена хотя бы одна URE-ошибка, это станет невозможным. Причем вероятность того, что события будут развиваться именно так, очень высока и никогда не стоит ее игнорировать. Поэтому плюс быстрого восстановления стоит рассматривать лишь с той точки зрения, что оно защищает от потери второго диска до того, как будет восстановлен первый.

На какую еще ловушку точно не стоит попадаться, так это на заверения производителей, что синхронная репликация делает RAID5 полностью безопасным. Скорее всего, производителю выгодно делать много продаж более дешевых продуктов. На практике получается совсем небезопасная и точно не беспроблемная ситуация. Обратимся к такому примеру: у вас есть два сайта — A и Б, синхронизирующиеся и реплицируемые, каждый со своей системой хранения, заполненной важными данными с использованием RAID5. Если вы столкнетесь с отказом пула на сайте A из-за ошибок, связанных с временной корреляцией, вам придется переключиться на сайт Б и продолжить работать на нем, помня о высоких рисках. Все это время вы подвергаете бизнес большой опасности, а репликация данных может занять несколько дней — вы точно согласны на подобные эксперименты? Если нет, то лучше изначально сделать сайты более устойчивыми к катастрофическим сценариям и грамотно выбрать RAID так, чтобы при каждом сбое не приходилось переключаться на копию.

Какие методы способствуют надежности хранения данных

Важно запомнить: самое полезное, что вы можете сделать — это использовать защиту минимум от двух временных коррелированных ошибок в одной системе, будь то облако, массив данных или HCI. Всегда узнавайте заранее, от скольких одновременных ошибок чтения защищен каждый фрагмент данных — их должно быть минимум две.

Все остальное небезопасно применимо к современным системам хранения даже там, где на второй чаше весов находится более привлекательная стоимость. Целостность данных — это не то, чем стоит жертвовать ради снижения затрат.