Sata raid on linux

Как на Linux настроить RAID 10 для достижения высокой производительности и отказоустойчивости дискового ввода / вывода

Массив RAID 10, т. е. RAID 1 + 0 или чередование с зеркалированием, обеспечивает высокую производительность и отказоустойчивость дисковых операций ввода / вывода за счет объединения функций из RAID 0, в котором операции чтения / записи выполняются параллельно на нескольких дисках, и RAID 1, в котором данные записываются идентично на двух или более дисках.

В настоящем руководстве я покажу, как создать программный массив RAID 10, используя для этого пять одинаковых дисков по 8 ГБ. Хотя минимальное количество дисков для создания массива RAID 10 равно четырем (например, комплект с чередованием из двух зеркал), мы добавим дополнительный запасной диск на случай, если один из главных дисков выйдет из строя. Мы также будем пользоваться некоторыми инструментальными средствами, которые в дальнейшем можно будет применить для анализа производительности вашего массива RAID.

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

Как работает массив RAID 10?

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

Представьте себе файл, который состоит из блоков данных A, B, C, D, E и F так, как это показано на рисунке выше. Каждый набор зеркал RAID-1 (например, Зеркало 1 или 2) реплицирует блоки на каждом из его двух устройств. Из-за такой конфигурации скорость записи уменьшается, поскольку каждый блок должен быть записан два раза, по одному разу для каждого диска, тогда как производительность по чтению остается неизменной по сравнению с чтением из отдельных дисков. Преимущество состоит в том, что при такой настройке обеспечивается избыточность, так что если произойдет сбой более чем с одним из дисков в каждом зеркале, будет сохранена поддержка выполнения обычных операций дискового ввода / вывода.

Чередование в RAID 0 представляет собой деление данных на блоки и одновременная запись блока A в зеркале 1, блока B в зеркале 2 (и так далее), что улучшает общую производительность чтения и записи. С другой стороны, ни в одном из зеркал не содержится вся информация любой части данных, если рассматривать весь основной набор данных. Это означает, что если сбой произойдет в одном из зеркал, то весь набор RAID 0 (и, следовательно, набор RAID 10) станет неработоспособным с безвозвратной утратой данных.

Настройка массива RAID 10

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

Читайте также:  Windows активация тестового режима

Предполагается, что вы установили пакет mdadm и в вашей системе работает демон. Подробности смотрите в следующем руководстве . Также предполагается, что на каждом диске был создан первичный раздел sd[bcdef]1. Таким образом, команда:

должна выдать следующий результат:

Давайте пойдем дальше и создадим массив RAID 10 с помощью следующей команды:

Когда массив создан (на это должно пойти более нескольких минут), то команда:

должна выдать следующий результат:

Прежде, чем мы продолжим, необходимо отметить следующее.

  1. Used Dev Space указывает для каждого устройства емкость, используемую под массив.
  2. Array Size указывает общий размер массива. Для массива RAID 10, это значение равно (N*C)/M, где N — количество активных устройств, C — емкость активных устройств, M — количество устройств в каждом зеркале. Таким образом, в данном случае (N*C)/M равно (4*8ГБ)/2 = 16ГБ.
  3. В Layout указываются конкретные особенности размещения данных. Возможные значения здесь следующие.
    • n (параметр, используемый по умолчанию): означает near copies (близко расположенные копии). Различные копии одного и того же блока данных имеют в различных устройствах аналогичные смещения. Такая компоновка позволяет получить аналогичные скорости чтения и записи, как и в массиве RAID 0.

o означает offset copies (смещение копий). Вместо того, чтобы дублировать куски данных в отдельной полосе, дублируются целые полосы, но они на каждом устройстве сдвинуты, так что дублируемые блоки находятся на разных устройствах с разными смещениями. Т.е. следующая копия на следующем диске находится на один фрагмент данных дальше. Чтобы использовать эту компоновку в вашем массиве RAID 10, добавьте параметр —layout=o2 в команду, с помощью которой создается массив.

f означает far copies (копии с сильно различающимися смещениями). Такая компоновка обеспечивает более высокую производительность чтения, но худшую производительность записи. Таким образом, это самый лучший вариант для систем, в которых операции чтения должны выполняться гораздо чаще операций записи. Чтобы использовать эту компоновку в вашем массиве RAID 10, добавьте параметр —layout=f2 в команду, с помощью которой создается массив.

Число, которое расположено за n, f и o в параметре —layout, указывает какое количество копий необходимо для каждого блока данных. Это значение по умолчанию равно 2, но оно может быть в диапазоне от 2 и до числа, равному количеству устройств в массиве. Указывая правильное количество копий, вы можете минимизировать влияние операций ввода/вывода на каждый отдельный диск.

  • Величина Chunk Size, согласно определению из вики Linux RAID, представляет собой наименьшую порцию данных, которые могут записываться на диски. Оптимальный размер порции зависит от скорости операций ввода / вывода и размеров файлов. В случае наличия больших файлов накладные расходы будут меньшими при довольно больших размерах порций, тогда как для массивов, в которых в основном небольшие файлы, преимущество может быть достигнуто при небольших размерах порции данных. Чтобы указать конкретный размер порции данных для вашего массива RAID 10, добавьте параметр —chunk=desired_chunk_size в команду, которая используется при создании массива.
  • К сожалению, нет формулы расчета размера порции данных, которая бы позволила повысить производительность во всех случаях. Ниже приводится несколько рекомендаций, которые нужно учитывать.

    • Файловая система: обычно считают, что лучшей является файловая система XFS, но хорошим выбором будет и EXT4.
    • Оптимальная компоновка: когда порции данных расположены далеко друг от друга, то это улучшает производительность при чтении, но ухудшает производительность при записи.
    • Количество копий: большее количество копий минимизирует влияние операций ввода / вывода, но увеличивает издержки, поскольку необходимо больше дисков.
    • Аппаратура: SSD, скорее всего, будет обеспечивать большую производительность (при одних и тех же условиях), чем традиционные (шпиндельные) диски.

    Тестируем производительность RAID при помощи DD

    Для проверки производительности нашего массива RAID 10 (/dev/md0) можно использовать следующие тесты.

    1. Операция записи

    На устройство записывается один файл размером 256 МБ:

    1000 раз записываются 512 байта:

    Когда установлен флаг dsync, то команда dd не использует кэш файловой системы и выполняет синхронизированную запись в массив RAID. Этот флаг используется для устранения эффекта кэширования во время тестирования производительности RAID.

    2. Операция чтения

    256KiB*15000 (3.9 GB) копируются из массива в /dev/null:

    Тестируем производительность RAID при помощи Iozone

    Iozone является инструментальным средством тестирования, с помощью которого можно измерять различные дисковые операции ввода/вывода, в том числе чтение/запись в случайном порядке, последовательное чтение/запись и повторное чтение/повторную запись. Он позволяет экспортировать результаты в файл Microsoft Excel или LibreOffice Calc.

    Установка пакета Iozone на CentOS/RHEL 7

    Установка пакета Iozone на Debian 7

    Команда iozone, указанная ниже, выполнит все тесты с массивом RAID-10:

    • -R: генерирует результат в виде отчета в формате, совместимом с Excel.
    • -a: запускает команду iozone в полностью автоматическом режиме с выполнением всех тестов и с записью записей/файлов всех необходимых размеров. Размеры записей: 4k-16M; и размеры файлов: 64k-512М.
    • -b /tmp/md0.xls: указывает сохранять результаты тестирования в определенном файле.

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

    Источник

    Создание программного RAID массива в Ubuntu

    Содержание

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

    Небольшое вступление

    Вообще говоря, существуют много способов сохранить нажитое непосильным путём. Самый ненадёжный из них, несмотря на многие заверения об обратном — это запись данных на CD или DVD диски. Если вы уж что-то хотите сохранить на дисках, то обязательно записывайте важную информацию как минимум на два диска разных производителей, кроме того, пишите на минимальной доступной скорости привода. Но всё равно вас это не спасёт, лет через 5 с большим шансом вы можете обнаружить, что оба ваших диска полностью или частично перестали читаться.

    Утилита управления программными RAID массивами mdadm

    Создание массива

    Если у вас ещё нет нужных разделов — можете создать их с помощью gparted или cfdisk , обе эти утилиты необходимо доустанавливать отдельно.

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

    Вы должны увидеть примерно такой вывод:

    Если вы хотите сразу же создать массив с отсутствующим диском (degraded), просто укажите вместо имени устройства слово missing . Учтите, что в RAID -5 может быть не более одного отсутствующего диска, в RAID -6 — не более двух, а в RAID -1 должен быть хотя бы один рабочий.

    To be continued…

    Изменение конфигурационного файла

    Если вам вдруг потребуется после создания массива производить какие-нибудь операции с его блочным устройством, которые изменят UUID, то обязательно необходимо изменить конфигурационный файл /etc/mdadm/mdadm.conf .

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

    Для получения текущей работающей конфигурации выполните

    Эта команда выведет по строчке конфигурации для каждого массива. Именно такие строчки должны быть записаны в файле /etc/mdadm/mdadm.conf за исключением того, что в строчках в файле не должно быть параметра metadata .

    Если реальная конфигурация не совпадает с той, которая записана в /etc/mdadm/mdadm.conf , то обязательно приведите этот файл в соответствие с реальной конфигурацией до перезагрузки, иначе в следующий раз массив не запустится.

    Работа с программным RAID с LiveCD

    LiveCD диски Ubuntu по умолчанию не включают в себя утилиту mdadm, поэтому чтобы работать с RAID массивами с LiveCD вам необходимо сначала её установить:

    После этого нужно запустить все ваши массивы, сделать это можно командой

    Проверить статус массивов можно как всегда с помощью файла /proc/mdstat :

    Устранение возникающих проблем и восстановление массивов

    Массив внезапно перешёл в состояние inactive

    Иногда из-за каких-то сбоев оборудования массив переходит в состояние inactive безо всяких ошибок на дисках. При этом все диски помечаются как неактивные. Выглядит это примерно так:

    Ничего страшного в этом нет, вам надо всего лишь остановить массив командой

    И затем пересобрать командой

    Только потом не забудьте примонтировать файловую систему, при перезапуске массива это не будет сделано автоматически. Если у вас массив прописан в /etc/fstab , то для его примонтирования обычно достаточно выполнить команду

    Критическая фатальная ошибка при полной работоспособности винчестеров

    Если случилась такая беда, то:

    В первую очередь посмотрите состояние всех компонент массива командой

    Вместо sdc1 нужно поочерёдно поставить все компоненты. Обратите особое внимание на последний блок каждого вывода, вот, например, как выглядел один из выводов у меня:

    Тут вроде всё нормально, а вот тут уже нет:

    Собственно тут вас должен интересовать порядок следования компонент. В моём случае его можно «выцепить» из первого вывода и он выглядит так:

    Теперь попробуйте собрать массив как описано в предыдущем параграфе. У меня не получилось:

    Как видно, у меня mdadm считал, что есть только 2 рабочих компоненты массива, а изначально их было 4. И для работы необходимо иметь 3, поскольку у меня был RAID -5.

    Итак, вы убедились, что возникла непоправимая ошибка mdadm, что при этом диски в порядке и в автоматическом режиме массив обратно не собрать. Что дальше?

    Дальше — действовать на свой страх и риск! Собственно всё, что остаётся сделать — это заново создать массив поверх старого.

    Самое главное — указать диски в той же последовательности, что и при первичном создании массива. Я эту последовательность выцепил из вывода команды

    Итак, пересоздаём массив:

    Если всё прошло успешно — ваш массив безо всяких ошибок запустится и вам останется только смонтировать его содержимое. Если не успешно — то увы, придётся вам нести диски в фирму восстановления данных.

    Источник

    Читайте также:  Потерян профиль пользователя windows
    Оцените статью