Создание программного 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, что при этом диски в порядке и в автоматическом режиме массив обратно не собрать. Что дальше?
Дальше — действовать на свой страх и риск! Собственно всё, что остаётся сделать — это заново создать массив поверх старого.
Самое главное — указать диски в той же последовательности, что и при первичном создании массива. Я эту последовательность выцепил из вывода команды
Итак, пересоздаём массив:
Если всё прошло успешно — ваш массив безо всяких ошибок запустится и вам останется только смонтировать его содержимое. Если не успешно — то увы, придётся вам нести диски в фирму восстановления данных.
Создание программного RAID-массива на Linux-платформе
Важность надёжного хранения данных очевидна для пользователя любого уровня. Тем более сейчас, когда объёмы хранимых данных растут с угрожающей скоростью, вне зависимости от того, являются ли эти данные персональными (коллекции фотографий и видеозаписей) или корпоративными (финансовая и проектная документация, результаты научных исследований и т.п.). Одно из средств, помогающих в той или иной степени решить проблему надёжности хранения данных, основано на организации дискового RAID-массива.
Концепция RAID
RAID (англ. Redundant Array of Independent Disks — избыточный массив независимых дисков) (хотя более точной, возможно, будет «вольная интерпретация»: массив независимых дисков с избыточным ресурсом) — это аппаратная или программная подсистема, в которой хранимые данные распределяются (часто с дублированием) по нескольким жёстким дискам (физическим или виртуальным). Наиболее эффективной, как с точки зрения надёжности, так и с точки зрения производительности, является аппаратная RAID-подсистема. Тем не менее, программная реализация также может принести немалую пользу, и в Linux есть все необходимые компоненты для организации программного RAID-массива.
Более подробно об основных принципах организации RAID-систем можно узнать на соответствующей странице Wikipedia и на русскоязычной странице Wikipedia.
Различные типы RAID-массивов
Выше было отмечено, что помимо своей главной функции — обеспечение надёжности хранения данных — RAID может способствовать повышению производительности, разделяя данные на несколько потоков для одновременной записи на несколько дисков. Реализация RAID-подсистемы в Linux несколько отличается от общепринятой, но логическое деление на несколько уровней сохранено.
На уровне RAID 0 два или более диска используются только для повышения производительности, поскольку разделяют между собой данные при чтении/записи. Здесь «избыточность» фактически отсутствует.
Массив RAID 1 является первым уровнем, обеспечивающим избыточность. Этот режим часто называют «зеркалированием» (mirroring), поскольку данные дублируются на всех дисках массива. Степень надёжности возрастает, но производительность операции записи снижается, так как запись одних и тех же данных выполняется несколько раз. Для организации RAID 1 требуется не менее двух дисков.
Особенностью массива RAID 4 является отдельный диск для записи информации о контроле чётности данных. Таким образом, узким местом этой подсистемы становятся периоды ожидания при записи именно на этот диск. По этой причине рекомендуется пользоваться RAID 5 во всех случаях, кроме тех, в которых применение RAID 4 крайне необходимо и обосновано.
В массиве RAID 5 при записи разделяются и данные, и информация о контроле чётности. Поэтому RAID 5 считался наиболее эффективным и экономичным уровнем до появления новых разработок в этой области: RAID 5EE, RAID 6, RAID 10 и комбинированных уровней RAID 1+0, RAID 5+0, RAID 1+5. Для организации массива RAID 5 требуется не менее трёх дисков.
О дальнейшем развитии концепции RAID-массивов можно узнать на указанных выше страницах Wikipedia. Особый интерес представляет сравнение «RAID 10 versus RAID 5 in Relational Databases» на англоязычной странице.
Поддержка программной реализации RAID появилась в ядре Linux, начиная с версии 2.0, хотя для практического использования первая версия вряд ли годилась: возможности её были весьма ограничены, и содержала она изрядное количество ошибок. Начиная с ядер версии 2.4 ситуация улучшилась, и современные реализации RAID в Linux вполне пригодны для практического применения.
Создание и конфигурирование RAID-массива
Первые эксперименты с созданием RAID-массивов рекомендуется проводить в среде виртуальной машины, например, VirtualBox. Это более безопасно, к тому же не у каждого пользователя найдётся компьютер с двумя-тремя физическими дисками.
Для подробного рассмотрения выбрана организация RAID-массива уровня 1, поскольку это самый простой с архитектурной точки зрения и обладающий наибольшей избыточностью (с точки зрения надёжности) массив.
При создании RAID-массива на нескольких физических дисках, следует обратить особое внимание на то, чтобы диски имели одинаковый размер, а в идеальном варианте лучше всего использовать диски одной модели.
Итак, для начала в VirtualBox необходимо создать собственно виртуальную машину для Linux (с ядром версий 2.6), выбрать для неё подходящий размер памяти и создать три жёстких диска с одинаковым объёмом (по 20 Гб для каждого диска будет вполне достаточно). После загрузки Linux-системы (можно использовать любой live-DVD или его ISO-образ) для работы потребуется эмулятор терминала (текстовой консоли).
Для разметки разделов на диске можно воспользоваться утилитой fdisk, но более удобной является её «наследница» cfdisk с псевдографическим интерфейсом, которую можно запустить из консоли следующей командой:
После запуска следует создать раздел свопинга (например, размером 1ГБ), а оставшееся пространство (19 ГБ) отдать корневому разделу. При этом важно установить для обоих разделов тип Linux RAID (шестнадцатеричный код fd). После этого нужно обязательно записать сделанные изменения и выйти из cfdisk.
Теперь необходимо выполнить точно такую же разбивку разделов на двух других дисках. Эта операция без затруднений выполняется с помощью другой полезной утилиты, позволяющей управлять дисковыми разделами:
Ключ -d используется для создания дампа всех разделов указанного устройства в формате, который может служить входным для той же команды sfdisk, что позволяет создавать дубликаты разделов с сохранением всех свойств и атрибутов.
В результате будут получены три диска с одинаковыми разделами и установленным типом Linux RAID. Теперь можно приступать непосредственно к созданию RAID-массива.
Создание дисков RAID-массива
Для создания RAID-массива потребуется утилита mdadm из одноимённого пакета. Сама операция создания выполняется с помощью команд, приведенных в листинге 1.
Листинг 1. Создание дисков RAID-массива
Первый ключ команды обязательно должен определять основной режим функционирования mdadm. В данном случае используется ключ —create (краткая форма -C) — режим создания. После этого ключа указывается имя создаваемого RAID-устройства.
Ключ —metadata (краткая форма -e) определяет используемый для данного диска формат метаданных (суперблока). Значение 0.90 (а также его аналоги 0 и default) при создании RAID-массива используется по умолчанию, поэтому в приведённом примере его можно было бы и не включать в команду. Формат 0.90 допускает использование в RAID-массиве до 28 устройств-компонентов, а также определяет максимальный размер этих устройств (не более 2 ТБ).
Ключ —level=1 определяет уровень RAID-массива. Ключ —raid-devices=3 определяет количество устройств-компонентов в создаваемом RAID-массиве. Завершает командную строку список устройств, из которых будет сформирован RAID-массив.
Запуск в эксплуатацию
Дисковый массив успешно создан, но пока ещё пуст. Потребуется установить Linux-систему, чтобы проверить работу созданной RAID-подсистемы. Перед установкой следует позаботиться о том, чтобы раздел, выделенный для свопинга, корректно распознавался программой установки. Для этого используется следующая команда:
Установка Linux-системы выполняется в «штатном» режиме за исключением одной особенности: при выборе разделов вместо привычных /dev/sda1 и /dev/sda2 пользователю предлагаются /dev/md0 и /dev/md1 соответственно. Загрузчик, разумеется, должен быть установлен в MBR.
После завершения установки необходимо внести изменения в файл конфигурации загрузчика для того, чтобы система успешно загрузилась с RAID-устройства.
Если в установленной Linux-системе используется загрузчик grub, то в файл /boot/grub/grub.conf необходимо внести следующие изменения:
- в строке splashimage=. имя раздела (hd0,1) заменяется на имя (md0,1)
- в строке root (hd0,1) аналогичным образом выполняется замена на (md0,1)
Если система загружается с помощью lilo (этот загрузчик всё ещё используется в некоторых дистрибутивах), то потребуется отредактировать файл /etc/lilo.conf:
- добавить в начальной (общей) секции строку: raid-extra-boot = mbr-only
- заменить строку boot = /dev/sda на строку boot = /dev/md0
После сохранения и выхода из редактора обязательно нужно активизировать внесённые изменения командой lilo.
Теперь можно перезагрузить систему и проверить, как работает система на RAID-массиве.
Учёт и контроль
Текущее состояние RAID-подсистемы в структуре ядра отражает файл /proc/mdstat. Следует отметить, что для его просмотра требуются полномочия суперпользователя. Информация из этого файла особенно важна в тех случаях, когда в RAID-массив добавляется новый диск (или заменяется испорченный диск) или одно из устройств-компонентов удаляется из RAID-массива.
Команда mdadm сама по себе выполняет активизацию RAID-массива и в принципе не требует наличия файла конфигурации, но будет обращаться к нему, если в явной форме указано его имя («стандартное» имя — /etc/mdadm.conf). Использование файла конфигурации рекомендуется по двум причинам:
- исчезает необходимость писать длинные командные строки с множеством ключей, так как все характеристики берутся из указанного файла;
- файл конфигурации сам по себе является документацией по используемому RAID-массиву.
Команда mdadm —detail —scan позволяет получить значения текущих параметров настройки RAID-массива. Но для извлечения более подробной информации следует воспользоваться следующей комбинацией команд (опять же, потребуются права root):
Управление RAID-массивом
Преимущества избыточности при хранении данных в RAID-массиве можно оценить, если отключить один из дисков в конфигурации виртуальной машины, тем самым имитируя его отказ. После перезагрузки системы на RAID-массиве в виртуальной машине следует выполнить операцию копирования достаточно большого объёма данных. После этого в хост-системе можно будет увидеть, что размеры двух работающих дисков увеличились (в соответствии с объёмом скопированных данных), а размер третьего, отключённого диска остался неизменным.
Если третий диск снова подключить и ещё раз перезагрузить систему в виртуальной машине, то вновь подключённый диск будет обнаружен, но синхронизация с первыми двумя RAID-дисками не будет выполнена. Дело в том, что эта операция должна выполняться вручную. Для продолжения «эксперимента» теперь следует полностью удалить третий диск из виртуальной машины и создать точно такой же новый, чтобы имитировать замену испорченного физического жёсткого диска на исправный.
Текущее состояние RAID-массива проверяется по содержимому вышеупомянутого файла /proc/mdstat. После удаления третьего диска содержимое этого файла будет выглядеть приблизительно так, как на рисунке 1.
Рисунок 1. Фрагмент файла /proc/mdstat — один из дисков отсутствует
Из показанного фрагмента понятно, что в настоящий момент функционируют только два RAID-диска из трёх, а о том, какое именно устройство-компонент отсутствует, сообщает параметр [UU_] — первые два устройства задействованы, на месте последнего — символ подчёркивания.
Если предположить, что третий диск в конфигурации виртуальной машины вновь создан, то необходимо скопировать разделы со всеми их характеристиками с одного из работающих RAID-дисков с помощью уже описанной выше команды:
После этого подготовленный «новый» диск добавляется в существующий RAID-массив:
Теперь система продолжает функционировать в нормальном режиме — все три RAID-устройства-компонента подключены и работают. В этом можно убедиться, снова просмотрев содержимое файла /proc/mdstat.
Дополнительные замечания
Имитировать отказ одного из RAID-дисков можно и с помощью специальных ключей команды mdadm, как показано ниже:
После того, как диск объявлен «неработающим», его можно удалить из RAID-массива:
Сразу после логического удаления устройства-компонента его можно заменить физически. Ещё раз следует отметить, что «аппаратные» жёсткие диски настоятельно рекомендуется заменять только идентичными устройствами, а компоненты в виде логических разделов непременно должны быть заменены разделами точно такого же размера.
Когда замена устройства-компонента проведена, можно добавить обновлённый компонент в RAID-массив с помощью упоминавшейся выше команды:
Заключение
Программная реализация RAID-массива в системе Linux позволяет пользователю без особых затруднений создавать дисковые массивы нескольких уровней с применением как физических дисков, так и логических разделов. Предоставляемых этой подсистемой возможностей вполне достаточно, чтобы организовать хранение данных, ориентированное и на надёжность, и на производительность.
Ресурсы для скачивания
Комментарии
Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.