Найти в Дзене
Народный ДОобЗОР

Что такое RAID-контроллер и нужен ли он дома? Немного про XFS,ZFS и BTRFS

Приветствую Вас, мои дорогие подписчики! (а если ещё не подписчики - самое время это исправить :-) Тема сегодняшней статьи - RAID. Сегодня мы узнаем, что вообще такое RAID и зачем он нужен, разберёмся о назначении RAID-контроллера, а также вскользь затронем тему файловой системы ZFS, которая позволяет отказаться от использования RAID-контроллеров. Что такое RAID (рейд) RAID (Redundant Array of Independent Disks — избыточный массив самостоятельных (независимых) дисков. Простыми словами, RAID - это способ организации хранилища данных, в состав которого входит больше одного HDD/SSD. Когда у Вас возникает требование к надёжному хранению данных на жёстких дисках или ssd, необходимо выполнить требование отказоустойчивости. В общем случае, всё сводится к тому, чтобы хранить полезные данные не на единственном носителе, а сразу на нескольких. Одним из самых простых методов (как с точки зрения архитектуры, так и с точки зрения принципа работы) является зеркалирование (mirror, или RAID-1): В слу
Оглавление

Приветствую Вас, мои дорогие подписчики! (а если ещё не подписчики - самое время это исправить :-)

Тема сегодняшней статьи - RAID. Сегодня мы узнаем, что вообще такое RAID и зачем он нужен, разберёмся о назначении RAID-контроллера, а также вскользь затронем тему файловой системы ZFS, которая позволяет отказаться от использования RAID-контроллеров.

Что такое RAID (рейд)

RAID (Redundant Array of Independent Disks — избыточный массив самостоятельных (независимых) дисков. Простыми словами, RAID - это способ организации хранилища данных, в состав которого входит больше одного HDD/SSD.

Когда у Вас возникает требование к надёжному хранению данных на жёстких дисках или ssd, необходимо выполнить требование отказоустойчивости. В общем случае, всё сводится к тому, чтобы хранить полезные данные не на единственном носителе, а сразу на нескольких. Одним из самых простых методов (как с точки зрения архитектуры, так и с точки зрения принципа работы) является зеркалирование (mirror, или RAID-1):

RAID1 - зеркалирование дисков. Все данные (блоки) хранятся одновременно на двух носителях
RAID1 - зеркалирование дисков. Все данные (блоки) хранятся одновременно на двух носителях

В случае, если из строя выходит Disk1, все данные остаются на Disk2. Вам лишь требуется осуществить замену вышедшего из строя Disk1 на новый, после чего начнётся процедура восстановления информации (процесс копирования данных с Disk2 на свежеустановленный Disk1). Но надо понимать, что если мы возьмём два 1Тб диска и организуем RAID-1, доступный объём будет всего 1Тб.

Если нам не требуется обеспечить отказоустойчивость, а нужно всего лишь расширить доступное место для пользователя, на помощь приходит RAID-0 (stripe):

RAID 0 позволяет "размазать" данные между двумя дисками, увеличивая тем самым доступный объём дискового пространства
RAID 0 позволяет "размазать" данные между двумя дисками, увеличивая тем самым доступный объём дискового пространства

Вы спросите, а почему просто не использовать два независимых жёстких диска? Можно. Но RAID-0 даёт практически двукратный прирост скорости записи и чтения. Это может быть очень полезно, если организуемое хранилище планируется использовать в качестве директории, с которой будет работать программа видеомонтажа.

Но следует понимать, что если из строя выйдет DRIVE 1, то все данные будут утеряны: Блок 1, 3, 5, 7 хранятся лишь на первом носителе.

Для того, чтобы обеспечить отказоустойчивость совместно с расширением доступного пространства, используют, например, RAID-5:

RAID-5 помимо блоков данных (A1-A5), хранит также контрольные суммы блоков (Ap).
RAID-5 помимо блоков данных (A1-A5), хранит также контрольные суммы блоков (Ap).

На картинке мы можем наблюдать RAID-5, собранный из 6 дисков (их может быть от 3 и больше). При записи одного большого файла А (условно) он разделится на 5 кусков: А1, А2, А3, А4, А5, которые будут записаны на первые 5 дисков. А на шестом диске будет записана контрольная сумма Ар этих пяти блоков. RAID-5 позволяет выйти из строя лишь одному диску, сохраняя целостность информации. После замены вышедшего из строя диска на новый, начнётся процесс восстановления информации. Давайте подробнее рассмотрим, как это может выглядеть.

Как происходит восстановление информации в RAID-массивах

Давайте рассмотрим процесс вычисления контрольных сумм и восстановления информации в RAID-массивах на примере RAID5:

RAID-5, состоящий из 4 дисков. Полезная информация распределяется между 3 дисками, а 4й хранит контрольную сумму
RAID-5, состоящий из 4 дисков. Полезная информация распределяется между 3 дисками, а 4й хранит контрольную сумму

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

Один большой файл А был разбит на 3 составных файла со следующими значениями (естественно, в двоичной системе счисления): А1 - 01, А2 - 01, А3 - 00. Если мы сложим между собой эти значения, получим 10:

Пример вычисления контрольной суммы в RAID-массиве
Пример вычисления контрольной суммы в RAID-массиве

Будем считать именно 10 контрольной суммой всех блоков данных А1-А3.

Конечно, в реальных RAID-массивах вычисление контрольной суммы не сводится лишь к математическому сложению. Однако, в качестве примера это вполне подойдёт.

Естественно, RAID-контроллер знает, на каком диске расположена контрольная сумма, а на каких сами данные. Если мы предположим, что Disk2 вышел из строя, то чтобы узнать значение блока А2 нам нужно выполнить следующую операцию:

Обратное вычисления значения блока А2
Обратное вычисления значения блока А2

Аналогично происходят вычисления для других блоков. Метод вычисления демонстрирует нам, что в RAID 5 можно потерять лишь 1 диск. При потере 2 восстановить информацию будет невозможно.

Какие бывают виды RAID-массивов

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

  • повышение отказоустойчивости (вы можете зеркалировать хоть 5 дисков);
  • увеличение скорости чтения/записи, без отказоустойчивости (RAID-0);
  • комбинированные методы.

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

RAID 0 - чередование (striping). Избыточность отсутствует, нельзя потерять ни один диск.

RAID 1 - зеркалирование. Можно потерять 1 диск из 2, 2 из 3. В общем, N-1, где N - общее количество дисков в массиве.

RAID 0 и RAID 1
RAID 0 и RAID 1

RAID 5 - чередование с контрольной суммой (чётностью). Потерять можно только 1 диск, но доступное пространство намного выше, чем в RAID 0.

RAID 6 - чередование с двойной контрольной суммой (чётностью). Аналогичен RAID 5, только для хранения контрольных сумм используется уже 2 диска. Потерять можно, соответственно, 2 диска.

RAID 6
RAID 6

Все остальные варианты RAID - это комбинации из вышеизложенных:

RAID 10 (RAID 1 + RAID 0): потерять можно по 1 диску из каждого RAID 1

-9

RAID 50 (RAID 5 + RAID 0): потерять можно по одному диску из каждого RAID5, но доступно больше свободного места, в сравнении с RAID10.

Организация RAID 50 - по сути, два страйпируемых RAID 5
Организация RAID 50 - по сути, два страйпируемых RAID 5

Про RAID-контроллер: программный против аппаратного

В предыдущей части статьи мы бегло ознакомились с RAID-массивами, а также их основными видами. И ведь кто-то же должен контролировать процесс разделения записываемой информации на блоки и заниматься вычислением контрольных сумм, а после замены вышедшего из строя HDD организовать процесс восстановления информации. Именно этим и занимается RAID-контроллер. Он берёт на себя связующую функцию между дисковой подсистемой и процессором. Если не вдаваться в детали, то по сути процессор не знает "чё там и куда" отправляется на хранение, а работает напрямую с RAID-контроллером. А вот задача по распределению данных при записи, а также организация процесса чтения информации лежит на самом контроллере.

В промышленных серверных системах используются, как правило, дорогие аппаратные RAID-контроллеры (посудите сами, за одну "платку" можно выложить от 20 000р):

Аппаратный контроллер RAID 5
Аппаратный контроллер RAID 5

Для домашнего использования производители материнских плат предлагают программные решения.

Внимание! Организация программных RAID-массивов на "бытовых" материнских платах чревата потерей данных!

Это объясняется принципом их работы - основную функцию выполняет процессор, в связке с программной частью, реализованной в BIOS материнской платы. Вполне понятно, что если произойдёт какое-то фатальное событие (отключение электричества, зависание процессора, выход из строя батарейки BIOS и т.п.) - всё пойдёт коту под хвост. Самое страшное, что не получится подключить Ваш массив к другому, работающему компьютеру, чтобы получить доступ к информации.

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

Но как быть рядовому пользователю, который хочет организовать дома свой отказоустойчивый RAID-массив (хоть в домашнем ПК, хоть в своём сервере), не неся дополнительных затрат на покупку дорогостоящих серверных узкоспециализированных приблуд? А очень просто! Нужно использовать файловую систему, которая позволит реализовать такой массив надёжным способом.

Выбор файловой системы для организации RAID-массива: ZFS и аналоги

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

Базовые понятия файловой системы и файла

Файловая система - это способ хранения и организации информации на каком-нибудь носителе. От файловой системы зависит, как файлы будут кодироваться и храниться на диске. Если говорить простыми словами, то любой файл - это коробка, внутри которой может что-то лежать.

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

Папка - это коробка побольше, которая может вмещать в себя несколько коробок поменьше (ну если уж совсем грубо выражаться).

Когда мы копируем папки и файлы с флешки на компьютер, этот рабочий процесс можно рассмотреть как разгрузку грузовой машины, которая прибыла на склад: ответственный кладовщик проверяет содержимое коробок на соответствие товарно-транспортной накладной (ТТН), удостоверяется в том, что количество коробок соответствует тому, что написано в ТТН, а затем распределяет эти коробки на склад, в определённые секторы и ячейки, не забывая сделать пометку о том, что и где лежит. Так вот, файловая система - это кладовщик. Обратившись к нему в любой момент времени можно узнать, где и в каком количестве лежат те или иные файлы и папки.

Если продолжать эту аллегорию относительно RAID-контроллера, то наша файловая система (кладовщик) только принимает коробки на этапе разгрузки машины и передаёт их другому кладовщику, просто отдавая указания положить на склад. То есть, в случае с RAID-контроллером, файловая система не знает как именно размотало наши файлы между несколькими дисками. Это знает только контроллер. А если мы используем диски напрямую, тогда вся информация о файлах и их месте расположения находится в ведении ФС (файловой системы).

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

Продвинутые файловые системы. Кратко про ZFS

Помимо всем известных NTFS, FAT16 и FAT32 (их можно встретить в качестве стандартных в Windows), существует большое множество других файловых систем. В unix-системах (Linux) любят использовать ext3 и ext4 в качестве дефолтной (основной).

Но мы с Вами сегодня поговорим про 3 самые интересные файловые системы, с точки зрения организации отказоустойчивого хранилища без применения RAID-контроллеров.

Упорядочить эти файловые системы мне бы хотелось в порядке простоты их использования с точки зрения начинающего пользователя.

XFS на операционной системе UnRaid

Первой в списке файловых систем будет XFS, но не сама по себе, а в связке с операционной системой Unraid. Дело в том, что сама по себе XFS не является средством для новичков, но именно благодаря ОС UnRaid, использование сводится к простым действиям со стороны пользователя. UnRaid - это платная операционная система, предназначенная как для установки на обычные персональные компьютеры, так и на домашние серверные сборки.

Как можно догадаться из названия, операционка не использует RAID-массив в буквальном его смысле, чтобы организовать пространство в дисковой подсистеме. Вместо этого, она сама распределяет данные по дискам таким образом, что получается некоторое подобие RAID-массива.

Принцип организации хранилища в операционной системе UnRaid
Принцип организации хранилища в операционной системе UnRaid

Самый большой по объёму диск используется в качестве диска чётности. В структуре "под ним" располагается любое количество дисков любого объёма. Это является главной фишкой этой операционной системы, её достоинством. В то же время, если проглядеть момент выхода из строя одного из жёстких дисков, и дождаться выхода из строя ещё одного - капут. Такой массив никогда не восстановить, так как разобраться в реальном количестве секторов пары вышедших из строя хардов не получится. Зато ОС имеет весьма дружелюбный интерфейс и требует минимальных знаний Linux.

ZFS (Open ZFS) - моя любимая файловая система

Но, надо понимать как её готовить. Фишек у этой ФС очень много, рассмотрим самые главные для нас:

  • создание RAID-Z - массивов (полный аналог аппаратных RAID, но силами самой файловой системы);
  • наличие "бесплатных" снапшотов (снимок состояния файловой системы, всех файлов и каталогов (в мире unix-систем папки называются каталогами));
  • самовосстановление и самоконтроль целостности.

Теперь кратенько по этим трём пунктам.

ZFS позволяет создавать программные RAID-массивы, но в отличие от программных реализаций в бытовых компьютерах, здесь всё реализовано с умом: все служебные данные о самом массиве, информация о каких-то изменениях хранится на самих дисках, которые принадлежат этому массиву. В случае выхода из строка ПК/сервера, Вы можете физически подключить все Ваши диски к другому ПК/серверу (который поддерживает ZFS) и импортировать ваш пул RAID-Z. Иными словами, вся необходимая информация содержится на самих дисках, отказоустойчивость всей системы обеспечивается самими дисками.

Напомню, что если в обычном ПК, в котором использовался программный RAID средствами материнской платы, что-то пойдёт не так, переподключить такие диски в любой другой ПК не получится. Для ZFS это не проблема.

Снапшот - это "фотография" вашего склада с коробками (файловой системы с файлами). Очень полезная вещь, если нужно восстановить удалённые файлы и данные. Своего рода бэкап, но речь идёт не столько о самих файлах, сколько о состоянии файловой системы.

Давайте предположим, что в некоторый момент времени в вашей ФС располагалось несколько файлов, общим объёмом 48Кб:

несколько файлов внутри файловой системы
несколько файлов внутри файловой системы

В этот момент времени мы сделаем снимок - снапшот, который почти ничего не "весит" (пусть его размер будет 7Байт - по количеству файлов). До тех пор, пока в нашей файловой системе ничего не изменяется, размер снапшота будет оставаться 7 Байт. Но как только мы удалим любой из файлов, размер снапшота увеличится на размер удалённого файла (ну, если очень грубо). Если мы удалим все файлы из нашей ФС, размер снапшота станет 48Кб.

Снапшот затрагивает только ту область памяти, в которой производились какие-либо изменения.

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

Инструменты ZFS позволяют запустить процедуру Scrub - когда происходит проверка целостности файловой системы (грубо говоря, сравнивается значение всех блоков, на которые разбит файл, с контрольной суммой). Если что-то не соответствует, ZFS "починит" битые файлы.

BTRFS - ещё одна файловая система с "блэкджэком и снапшотами"

Так как эта статья ориентирована на начинающих, позволю себе мнение, что BTRFS во многих моментах аналогична ZFS, но несколько сложнее в понимании принципов работы, из-за чего в случае факапа придётся не так сладко.

Так как основные плюсы BTRFS практически полностью совпадают с ZFS (на уровне начинающих юзеров), то дополнить мне здесь нечего. Интересующихся могу уже сейчас направить в гугл, статей на эту тему предостаточно. К сожалению, их не всегда легко изучить начинающему специалисту. Если Вы к относитесь к этой категории - обязательно подписывайтесь на мой канал, впереди будет огромное множество статей по этой тематике.

Заключение

Сегодня мы разобрались с Вами что такое RAID-массив, зачем нужен RAID-контроллер и какие ещё бывают средства организации дисковых массивов.

От себя добавлю, что в рамках домашнего использования, я отдаю предпочтение именно RAID-массиву, который реализуется на уровне файловой системы ZFS, так как с этим проще работать,а в большинстве случаев имеет более высокую отказоустойчивость (опять же, применительно к домашнему сценарию использования, либо в рамках небольшого предприятия до 50 человек), по сравнению с аппаратной реализацией.

ZFS можно эксплуатировать на разных операционных системах. Если говорить про сервер, я использую ОС TrueNas Scale, где ZFS (а точнее, Open ZFS) является нативной (поддерживается из коробки).

На этом у меня пока всё, с Вами был Народный ДОобЗОР, всем пока!)