Программный raid для linux

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

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

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

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

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

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

Итак, если вы решили создать RAID массив, вам понадобятся как минимум несколько винчестеров. Но кроме того вам придётся выбрать технологию управления вашим массивом. Существуют три основных возможности: аппаратный RAID -массив, аппаратно-программный RAID -массив и программный RAID -массив. Первые два способа требуют наличия достаточно дорогих RAID -контроллеров и имеют один немаловажный недостаток: если у вас сгорит не винчестер, а RAID -контроллер, то восстановить массив обычно можно будет только достав ровно такой же контроллер. А поскольку нет никаких гарантий, что лет через 5 на рынке всё ещё будет нужное железо, то иногда использование аппаратных RAID -массивов нежелательно. С другой стороны, полностью аппаратный массив никак не зависит от программной начинки компьютера.

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

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

Для создания и управления RAID массивом вам потребуется утилита mdadm , она есть в репозиториях и её можно поставить через Synaptic или командой

sudo aptitude install mdadm

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

В качестве примера будет использоваться RAID -5 массив на дисках sdb1 , sdc1 и sde1 . Кстати, как уже упоминалось — для создания массива вам нужны не винчестеры целиком, а лишь логические диски (желательно — одинакового объёма, в противном случае размер массива будет рассчитываться исходя из размера диска с минимальным объёмом), но использовать два диска на одном винчестере — очень плохая идея, ибо это уничтожает весь смысл применения RAID .

Читайте также:  Создать загрузочный usb создать linux

Итак, для начала нужно подготовить разделы, которые вы хотите включить в RAID , присвоив им тип fd (Linux RAID Autodetect) Это не обязательно, но желательно. В Ubuntu 9.10 это можно легко сделать с помощью Дисковой утилиты, которую можно найти в меню Система→Администрирование. Она же называется palimpsest . В консоли поменять тип раздела можно с помощью программы fdisk , но её использование не совсем тривиально.

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

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

mdadm --create --verbose /dev/md0 --level=5 \ --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

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

mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 64K mdadm: /dev/sdb1 appears to contain an ext2fs file system size=48160K mtime=Sat Jan 27 23:11:39 2007 mdadm: /dev/sdc1 appears to contain an ext2fs file system size=48160K mtime=Sat Jan 27 23:11:39 2007 mdadm: /dev/sde1 appears to contain an ext2fs file system size=48160K mtime=Sat Jan 27 23:11:39 2007 mdadm: size set to 48064K Continue creating array? y mdadm: array /dev/md0 started.

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

FIXME

To be continued…

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

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

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

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

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

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

Читайте также:  Задан недействительный url linux mint

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

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

sudo apt-get install mdadm

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

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

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

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

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

$ cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : inactive sdd1[2](S) sdb1[1](S) sdc1[0](S) sde1[3](S) 2930287616 blocks unused devices:

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

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

sudo mdadm --assemble --scan --force

Если имел место серьёзный сбой массива, например, «вылет» чрезмерного количества дисков, то массив тоже перейдёт в состояние inactive , но в этом случае простой его пересборкой восстановить работоспособность не получится, мало того, она может даже навредить. Так что будьте внимательны и в случае возникновения проблем в первую очередь смотрите на состояние массива и всех его компонентов.

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

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

Как бы мы не надеялись на технологию RAID , 100% гарантии она, увы, не даёт. Иногда случаются критические невосстановимые сбои. Например, когда одновременно вылетают 2 винчестера из RAID -5 массива. Это приводит к полной неработоспособности массива и с первого взгляда к невозможности его восстановить.

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

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

# mdadm -E /dev/sdc1 /dev/sdc1: Magic : a92b4efc Version : 00.90.00 UUID : 22de433d:78efb608:be909337:4a7ae5f9 (local to host malamut-desktop) Creation Time : Tue Jan 5 21:26:49 2010 Raid Level : raid5 Used Dev Size : 732571904 (698.64 GiB 750.15 GB) Array Size : 2197715712 (2095.91 GiB 2250.46 GB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Update Time : Mon May 17 23:07:51 2010 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Checksum : 10e9baf9 - correct Events : 154438 Layout : left-symmetric Chunk Size : 64K Number Major Minor RaidDevice State this 0 8 33 0 active sync /dev/sdc1 0 0 8 33 0 active sync /dev/sdc1 1 1 8 17 1 active sync /dev/sdb1 2 2 8 49 2 active sync /dev/sdd1 3 3 8 65 3 active sync /dev/sde1
# mdadm -E /dev/sde1 /dev/sde1: Magic : a92b4efc Version : 00.90.00 UUID : 22de433d:78efb608:be909337:4a7ae5f9 (local to host malamut-desktop) Creation Time : Tue Jan 5 21:26:49 2010 Raid Level : raid5 Used Dev Size : 732571904 (698.64 GiB 750.15 GB) Array Size : 2197715712 (2095.91 GiB 2250.46 GB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Update Time : Mon May 17 23:26:35 2010 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 1 Spare Devices : 0 Checksum : 10e9bfab - correct Events : 154447 Layout : left-symmetric Chunk Size : 64K Number Major Minor RaidDevice State this 3 8 65 3 active sync /dev/sde1 0 0 0 0 0 removed 1 1 8 17 1 active sync /dev/sdb1 2 2 0 0 2 faulty removed 3 3 8 65 3 active sync /dev/sde1

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

Читайте также:  Linux check file info

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

# mdadm --assemble --scan mdadm: /dev/md0 assembled from 2 drives - not enough to start the array

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

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

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

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

# mdadm --create --verbose /dev/md0 --assume-clean --level=raid5 --raid-devices=4 --spare-devices=0 /dev/sdc1 /dev/sdb1 /dev/sdd1 /dev/sde1 mdadm: layout defaults to left-symmetric mdadm: chunk size defaults to 64K mdadm: /dev/sdc1 appears to contain an ext2fs file system size=-2097251584K mtime=Mon May 17 19:33:06 2010 mdadm: /dev/sdc1 appears to be part of a raid array: level=raid5 devices=4 ctime=Tue Jan 5 21:26:49 2010 mdadm: /dev/sdb1 appears to be part of a raid array: level=raid5 devices=4 ctime=Tue Jan 5 21:26:49 2010 mdadm: /dev/sdd1 appears to be part of a raid array: level=raid5 devices=4 ctime=Tue Jan 5 21:26:49 2010 mdadm: /dev/sde1 appears to contain an ext2fs file system size=-1828816128K mtime=Mon May 17 19:33:03 2010 mdadm: /dev/sde1 appears to be part of a raid array: level=raid5 devices=4 ctime=Tue Jan 5 21:26:49 2010 mdadm: size set to 732571904K Continue creating array? Continue creating array? (y/n) y mdadm: array /dev/md0 started.

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

Источник

Оцените статью
Adblock
detector