Диски выделенного сервера: RAID 1, RAID 10 или зеркало ZFS

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

ИкИнженерная команда CheapServАвтор 7 мин чтения
Зеркальные диски на пьедестале, между ними светящаяся связь
На этой странице7
  1. Конфигурации
  2. Зеркало: вариант по умолчанию и почему
  3. Страйп: когда ёмкость важнее
  4. RAID 10: четыре диска, когда важна запись
  5. ZFS: контрольные суммы, снапшоты, репликация
  6. Таблица решений
  7. Когда диск выходит из строя

Каждый выделенный сервер, который мы продаём, поставляется с двумя NVMe-дисками, и форма заказа спрашивает, как именно вы хотите их собрать. Вариант по умолчанию — зеркало — подходит почти всем, поэтому он и выбран по умолчанию. Эта статья — для тех случаев, когда это не так: когда ёмкость важнее избыточности, когда узкое место — запись и когда вам нужны контрольные суммы и снапшоты, которые даёт только ZFS.

Конфигурации

КонфигурацияДисковПолезная ёмкостьВыдерживаетСкорость чтенияСкорость записи
RAID 1 (зеркало)21 дискотказ 1 диска~2× одного диска1× одного диска
RAID 0 (страйп)22 дисканичего~2×~2×
RAID 1042 дискапо 1 диску в каждой зеркальной паре~4×~2×
Зеркало ZFS21 диск, минус ~3%отказ 1 диска, а также скрытое повреждение данных~2×~0.9× одного диска
ZFS RAIDZ13+n − 1 дисковотказ 1 дискахорошаяниже на мелких случайных записях

«Скорость» здесь указана относительно одного серверного NVMe-диска, который и сам выдаёт сотни тысяч IOPS; для большинства нагрузок конфигурация не меняет того, что вы ощущаете. Важны столбцы о ёмкости и о том, что случится, когда диск умрёт.

Зеркало: вариант по умолчанию и почему

Два диска, и каждый хранит всё. Когда один выходит из строя, сервер продолжает работать на другом, мы заменяем вышедший из строя диск в ближайшее окно обслуживания (или раньше, если вы попросите), а зеркало перестраивается в фоне примерно за двадцать минут для диска на 2 TB. Без простоя и без восстановления из копии. Чтение обслуживается с обоих дисков, поэтому нагрузки с преобладанием чтения, такие как базы данных и раздача веб-страниц, работают чуть быстрее, чем на одном диске. Вы отдаёте половину сырой ёмкости, что на сервере с двумя дисками по 2 TB означает 2 TB полезного объёма.

По умолчанию для зеркала мы используем программный RAID Linux (mdadm): нет аппаратного контроллера, который может отказать или скрыть от вас ошибки, а cat /proc/mdstat в любой момент показывает правду. Вкладка Хранилище в панели показывает то же состояние и присылает вам письмо, когда диск деградирует.

Страйп: когда ёмкость важнее

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

RAID 10: четыре диска, когда важна запись

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

ZFS: контрольные суммы, снапшоты, репликация

Дополнение ZFS on root устанавливает базовую систему на зеркало ZFS вместо mdadm. Вместе с ним вы получаете три возможности, которых не даёт ни одна другая конфигурация:

  • Сквозные контрольные суммы. Каждый блок проверяется при чтении. Диск, который молча возвращает неверные данные (а это случается чаще, чем громкий отказ), обнаруживается, после чего исправная копия с другого диска используется и перезаписывается. mdadm не может определить, какая сторона зеркала верна, а ZFS может.
  • Снапшоты, которые ничего не стоят. zfs snapshot rpool/data@before-upgrade выполняется за миллисекунды и не занимает места, пока данные не изменились. Идея та же, что у снапшота в панели, но этот снапшот в вашем распоряжении: его можно автоматизировать скриптами, делать отдельно для каждого датасета, а откат занимает секунду.
  • Репликация. zfs send | ssh other-server zfs receive отправляет инкрементальные снапшоты на второй сервер — это самый дешёвый из известных нам способов держать «тёплую» копию выделенного сервера на другой площадке.

Цена — около 5% сырой пропускной способности на мелких записях и порядка 1 GB RAM на терабайт, чтобы кэш был полезен; на сервере с 64 GB это пустяк. Единственное правило: никогда не ставьте ZFS поверх тома аппаратного RAID, и мы так не делаем — дополнение отдаёт ZFS «сырые» диски.

Таблица решений

  • Веб, приложение, база данных, всё, что вам было бы жаль потерять: зеркало (по умолчанию) или зеркало ZFS, если нужны снапшоты и контрольные суммы.
  • Временные данные, кэши, реплики, узлы рендеринга: страйп, с пониманием того, что эти данные не жалко потерять.
  • Базы данных с интенсивной записью на серверах с четырьмя дисками: RAID 10.
  • Хранилища резервных копий, файловые серверы, всё, где много дисков: ZFS RAIDZ1 или пул из зеркал, выбирается вместе с нами через тикет.

Когда диск выходит из строя

Сервер отправляет вам письмо и помечает массив в панели как деградировавший. Для зеркала и RAID 10 больше ничего не меняется. Откройте тикет или дождитесь нашего: мы заменим диск в ближайшее окно, а перестроение запустится само. Для страйпа сервер лежит, пока мы не заменим диск, а вы не переустановите систему, — и именно в этот момент люди жалеют, что не прочли эту статью. Весь смысл выбора конфигурации при заказе в том, что на случай отказа решение принимается, пока он ещё гипотетический.

Ик
Инженерная команда CheapServ

Те, кто создаёт конвейер развёртывания, панель управления и слой хранения данных.

Разверните первый сервер меньше чем за минуту.

Пополните баланс от $25 в BTC, ETH, XMR или USDT. Баланс не сгорает, а неиспользованные средства можно вернуть.

Создать аккаунт