2 ответа
13
Сначала проверьте диски, попробуйте запустить smart selftest
Это может занять несколько часов, но проверить состояние каждого диска каждые несколько минут, т. е.
Если состояние отчетов о диске не завершено из-за ошибок чтения, тогда этот диск следует считать небезопасным для повторной сборки md1. После самотестирования вы можете начать повторную сборку массива. При желании, если вы хотите быть более осторожным, переместите диски на другую машину, прежде чем продолжить (просто в случае плохой настройки /контроллера /etc).
Недавно у меня был случай, похожий на этот. Один диск получил неудачу, я снова добавлен в массив, но во время восстановления 3 из 4 дисков вообще не удалось. Содержимое /proc /mdadm было таким же, как ваше (возможно, не в том же порядке)
Но мне повезло и снова собрал массив с этим
Посмотрев на представленный вами вывод -examine, я могу сказать, что произошел следующий сценарий: sdd2 не удалось, вы удалили его и снова добавили, поэтому он стал запасным приводом, пытающимся перестроить. Но при восстановлении sda2 не удалось, а затем sdb2 не удалось. Таким образом, счетчик событий больше в sdc2 и sdd2, которые являются последними активными дисками в массиве (хотя sdd не имел возможности перестроить, и поэтому он является самым устаревшим из всех). Из-за различий в счетчиках событий необходимо будет —force. Таким образом, вы также можете попробовать это.
В заключение, я думаю, что если приведенная выше команда завершится неудачно, попробуйте воссоздать массив следующим образом:
Если вы выполните , важно, не пытайтесь добавить четвертый диск в массив, потому что тогда начнется строительство, и вы потеряете свои данные. Создание массива с отсутствующим диском не изменит его содержимое, и у вас будет возможность получить копию в другом месте (raid5 работает не так, как raid1)
Если это не удается запустить массив, попробуйте это решение (perl script) здесь
Если вам, наконец, удастся привести массив, файловая система будет нечиста и, возможно, повреждена. Если сбой при отказе диска во время перестройки, ожидается, что массив остановится и заморозится, не делая записи на другие диски. В этом случае два диска не удались, может быть система выполняла запросы на запись, которые не были выполнены, поэтому есть небольшая вероятность, что вы потеряли некоторые данные, но также шанс, что вы никогда ее не заметите : -)
edit: добавлено некоторое пояснение.
1
У меня возникло много проблем, в то время как я использовал , но никогда не терял данные.
Вам следует избегать опции или использовать ее очень осторожно, потому что вы можете потерять все свои данные.
Отправьте свой
[править] Дополнительная информация
Производительность программных RAID-массивов
Разные заметки, имеющие отношение к RAID
BIO_RW_BARRIER — what it means for devices, filesystems, and dm/md. (англ.)
|
---|
Сборка RAID
Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.
Подготовка носителей
Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):
mdadm —zero-superblock —force /dev/sd{b,c}
* в данном примере мы зануляем суперблоки для дисков sdb и sdc.
Если мы получили ответ:
mdadm: Unrecognised md component device — /dev/sdb
mdadm: Unrecognised md component device — /dev/sdc
… то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.
Далее нужно удалить старые метаданные и подпись на дисках:
wipefs —all —force /dev/sd{b,c}
Создание рейда
Для сборки избыточного массива применяем следующую команду:
mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где:
- /dev/md0 — устройство RAID, которое появится после сборки;
- -l 1 — уровень RAID;
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Мы должны увидеть что-то на подобие:
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
—metadata=0.90
mdadm: size set to 1046528K
Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:
Continue creating array? y
Мы увидим что-то на подобие:
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Вводим команду:
lsblk
… и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:
…
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
…
* в примере мы видим собранный raid1 из дисков sdb и sdc.
Информация о RAID
Посмотреть состояние всех RAID можно командой:
cat /proc/mdstat
В ответ мы получим что-то на подобие:
md0 : active raid1 sdc sdb
1046528 blocks super 1.2 [2/2]
* где md0 — имя RAID устройства; raid1 sdc sdb — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] — количество юнитов, которые на данный момент используются.
** мы можем увидеть строку md0 : active(auto-read-only) — это означает, что после монтирования массива, он не использовался для записи.
Подробную информацию о конкретном массиве можно посмотреть командой:
mdadm -D /dev/md0
* где /dev/md0 — имя RAID устройства.
Пример ответа:
Version : 1.2
Creation Time : Wed Mar 6 09:41:06 2019
Raid Level : raid1
Array Size : 1046528 (1022.00 MiB 1071.64 MB)
Used Dev Size : 1046528 (1022.00 MiB 1071.64 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Wed Mar 6 09:41:26 2019
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : proxy.dmosk.local:0 (local to host proxy.dmosk.local)
UUID : 304ad447:a04cda4a:90457d04:d9a4e884
Events : 17
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
* где:
- Version — версия метаданных.
- Creation Time — дата в время создания массива.
- Raid Level — уровень RAID.
- Array Size — объем дискового пространства для RAID.
- Used Dev Size — используемый объем для устройств. Для каждого уровня будет индивидуальный расчет: RAID1 — равен половине общего размера дисков, RAID5 — равен размеру, используемому для контроля четности.
- Raid Devices — количество используемых устройств для RAID.
- Total Devices — количество добавленных в RAID устройств.
- Update Time — дата и время последнего изменения массива.
- State — текущее состояние. clean — все в порядке.
- Active Devices — количество работающих в массиве устройств.
- Working Devices — количество добавленных в массив устройств в рабочем состоянии.
- Failed Devices — количество сбойных устройств.
- Spare Devices — количество запасных устройств.
- Consistency Policy — политика согласованности активного массива (при неожиданном сбое). По умолчанию используется resync — полная ресинхронизация после восстановления. Также могут быть bitmap, journal, ppl.
- Name — имя компьютера.
- UUID — идентификатор для массива.
- Events — количество событий обновления.
- Chunk Size (для RAID5) — размер блока в килобайтах, который пишется на разные диски.
Подробнее про каждый параметр можно прочитать в мануале для mdadm:
man mdadm
Также, информацию о разделах и дисковом пространстве массива можно посмотреть командой fdisk:
fdisk -l /dev/md0
Step 3. Reassemble the array with a new name
While we can use text names to better help identify the array, like piggywiggy, superdrive, or butterwax, let’s use the number 2 so we will have /dev/md2 as the second array on the system.
sudo mdadm --assemble --update=name --name=2 /dev/md2 /dev/sdh /dev/sdi
This has a number of important parts:
- –update=name – We are going to set the name of the array in the array’s superblock. Other fields exist, but name is the one that changes the name.
- –name=2 – The name to use. 2, in this example.
- /dev/md2 – The array’s device name is to be /dev/md2.
- /dev/sdh and /dev/sdi – The member drives. With more drives in the system, expect higher letters.
We are essentially assembling an array and specifying the new name in the process.
[править] Дальнейшая работа с массивом
Пометка диска как сбойного
Диск в массиве можно условно сделать сбойным, ключ --fail (-f):
%# mdadm /dev/md0 --fail /dev/hde1 %# mdadm /dev/md0 -f /dev/hde1
Удаление сбойного диска
Сбойный диск можно удалить с помощью ключа --remove (-r):
%# mdadm /dev/md0 --remove /dev/hde1 %# mdadm /dev/md0 -r /dev/hde1
Добавление нового диска
Добавить новый диск в массив можно с помощью ключей --add (-a)
и --re-add:
%# mdadm /dev/md0 --add /dev/hde1 %# mdadm /dev/md0 -a /dev/hde1
Сборка существующего массива
Собрать существующий массив можно с помощью mdadm --assemble.
Как дополнительный аргумент указывается,
нужно ли выполнять сканирование устройств, и если нет, то
какие устройства нужно собирать.
%# mdadm --assemble /dev/md0 /dev/hde1 /dev/hdf2 /dev/hdg1 %# mdadm --assemble --scan
Расширение массива
Расширить массив можно с помощью ключа --grow (-G).
Сначала добавляется диск, а потом массив расширяется:
%# mdadm /dev/md0 --add /dev/hdh2
Проверяем, что диск (раздел) добавился:
%# mdadm --detail /dev/md0 %# cat /proc/mdstat
Если раздел действительно добавился,
мы можем расширить массив:
%# mdadm -G /dev/md0 --raid-devices=4
Опция —raid-devices указывает новое количество дисков, используемое в массиве. Например, было 3 диска, а теперь расширяем до 4-х — указываем 4.
Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например добавить:
--backup-file=/var/backup
При необходимости можно регулировать скорость процесса расширения массива, указав нужное значение в файлах
/proc/sys/dev/raid/speed_limit_min /proc/sys/dev/raid/speed_limit_max
Убедитесь, что массив расширился:
%# cat /proc/mdstat
Нужно обновить конфигурационный файл с учётом сделанных
изменений:
%# mdadm --detail --scan >> /etc/mdadm/mdadm.conf %# vi /etc/mdadm/mdadm.conf
Возобновление отложенной синхронизации
Отложенная синхронизация:
Personalities : md0 : active(auto-read-only) raid1 sda1 sdb1 78148096 blocks [2/2] resync=PENDING
Возобновить:
echo idle > /sys/block/md0/md/sync_action
P.S.: Если вы увидели «» в файле , то возможно вы просто ничего не записывали в этот массив. К примеру, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется:
md0 : active raid1 sdc sdd
Создание массива
Перед созданием массива следует создать для него устройство-идентификатор (если оно отсутствует): mknod /dev/md1 b 9 1;
в данном случае создаётся идентификтор для массива с номером 1, что
указывается в имени устройства и его коде (9 — это код устройства всех
RAID-массивов, 1 — идентификатор).
Желательно,
чтобы разделы, из которых создаётся массив, имели одинаковый размер
(хотя они могут располагаться на физических дисках разного размера и
даже разного типа). При создании этих разделов следует присвоить им тип
fd («Linux raid autodetect»). Не следует создавать массив из разделов,
размещающихся на одном физическом диске — хотя это и возможно, это
совершенно бессмысленно и приведет к существенному снижению
быстродействия дисковой подсистемы. Интересной идеей является создание
массива из USB-флеш дисков с целью повышения скорости, но из-за низкой надёжности USB портов система будет менее надёжна, чем массив из жёстких дисков.
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda3 /dev/hdc3
Этот
пример создаёт массив RAID 1 из двух разделов: один из hda и второй из
hdc. Несколько дисков можно указывать с помощью шаблона, например /dev/sd2 или /dev/sd1.
- --create (или сокращённо -С): команда создания
- /dev/md0: имя устройства создаваемого виртуального раздела
- --level=1 (или сокращённо -l 1): уровень RAID. См. справочник по использованию mdadm (используйте «man mdadm» в командной строке)
- --raid-devices=2 (или сокращённо -n 2): количество устройств
- /dev/hda3: первый диск в массиве
- /dev/hdc3: второй диск
Если на момент создания массива диска нет (например, при переходе на RAID) вместо имени диска просто напишите missing. Команда завершается сразу, обычно выдавая сообщение mdadm: array /dev/mdХ started. При этом уже сразу можно использовать массив. Фактически массив строится в фоновом режиме, прогресс можно посмотреть в файле /proc/mdstat; там же указывается предположительное время завершения построения массива.
После
создания RAID-раздела можно создать на нем файловую систему как на
обычном разделе диска. Созданный и отформатированный RAID-раздел можно
использовать как корень файловой системы (но для этого поддержка RAID должна быть встроена в ядро, а не как загружаемый модуль). Не следует создавать RAID-массив для своп-раздела — система сама обнаружит своп-разделы на разных дисках и будет использовать их по принципу RAID-массива. Не забудьтедобавить соответствующую строку в файл конфигурации /etc/fstab, чтобы RAID-раздел монтировался автоматически при загрузке системы.
Получение информации о RAID-диске и его разделах[править]
Для определения того, является ли устройство массивом или его частью, можно использовать утилиту mdadm с ключом -Q (--query). Указанные в этом разделе операции относятся к группе прочих, но указывать ключ (--misc) не обязательно. Ключ -Q также можно не указывать — если в параметрах mdadm указано только дисковое устройства, то этот ключ подразумевается по умолчанию.
В примере ниже проверяются три устройства:
обычный раздел (не часть массива):
mdadm -Q /dev/sde3
mdadm: /dev/sde3 does not appear to be an md device
раздел, являющийся частью массива:
mdadm -Q /dev/sdb1
/dev/sdb1: device 0 in 3 device active raid5 /dev/md0. Use mdadm --examine for more detail.
раздел диска, снятого с другого компьютера, где он был частью массива:
mdadm -Q /dev/sde2
/dev/sde2: is not an md array /dev/sde2: device 6 in 8 device undetected raid5 /dev/md2. Use mdadm --examine for more detail.
массив целиком
mdadm -Q /dev/md0
/dev/md0: 467.51GiB raid5 3 devices, 0 spares. Use mdadm --detail for more detail.
Более подробную информацию о массиве в целом или его части можно получить используя соответственно ключи -D (—detail) и -E (—examine).
В обоих случаях выводится почти одинаковая информация, но с ключом -D нужно указывать имя массива, а с ключом -E указывается имя одного из разделов RAID-диска
Причем, массив должен быть запущен, а для раздела это не важно — главное, чтобы он был частью хоть какого-либо массива.. mdadm -D /dev/md0
mdadm -D /dev/md0
/dev/md0: Version : 00.90.03 Creation Time : Tue Jan 22 20:41:09 2008 Raid Level : raid5 Array Size : 490223232 (467.51 GiB 501.99 GB) Used Dev Size : 245111616 (233.76 GiB 250.99 GB) Raid Devices : 3 Total Devices : 3 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Tue Mar 25 10:52:30 2008 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : 3d40658b:58e8e3bb:f2dc72f0:8ce9d084 Events : 0.12 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 2 8 49 2 active sync /dev/sdd1
Восстановление RAID
Рассмотрим два варианта восстановлении массива.
Замена диска
В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее:
cat /proc/mdstat
Personalities :
md0 : active raid1 sdb
1046528 blocks super 1.2 [2/1]
* о наличии проблемы нам говорит нижнее подчеркивание вместо U — вместо .
Или:
mdadm -D /dev/md0
…
Update Time : Thu Mar 7 20:20:40 2019
State : clean, degraded
…
* статус degraded говорит о проблемах с RAID.
Для восстановления, сначала удалим сбойный диск, например:
mdadm /dev/md0 —remove /dev/sdc
Теперь добавим новый:
mdadm /dev/md0 —add /dev/sde
Смотрим состояние массива:
mdadm -D /dev/md0
…
Update Time : Thu Mar 7 20:57:13 2019
State : clean, degraded, recovering
…
Rebuild Status : 40% complete
…
* recovering говорит, что RAID восстанавливается; Rebuild Status — текущее состояние восстановления массива (в данном примере он восстановлен на 40%).
Если синхронизация выполняется слишком медленно, можно увеличить ее скорость. Для изменения скорости синхронизации вводим:
echo ‘10000’ > /proc/sys/dev/raid/speed_limit_min
* по умолчанию скорость speed_limit_min = 1000 Кб, speed_limit_max — 200000 Кб. Для изменения скорости, можно поменять только минимальную.
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm —assemble —scan
* данная команда сама найдет необходимую конфигурацию и восстановит RAID.
Также, мы можем указать, из каких дисков пересобрать массив:
mdadm —assemble /dev/md0 /dev/sdb /dev/sdc
Расширение массива (добавление и замена дисков)[править]
mdadm /dev/md0 --add /dev/hdd3
Эта команда добавляет новый «диск» (а вернее раздел) в массив md0. Добавленный диск считается пустым и резервным. Его можно использовать для расширения размера массива или он будет автоматически использован (в массивах, обеспечивающих отказоустойчивость) в качестве замены для вышедшего из строя диска.
Для расширения размера массива (если конечно тип массива допускает расширение) указывается ключ -G (--grow) и новое число дисков массива с помощью ключа -nX (--raid-devices=X).
mdadm -G /dev/md0 -n4
Процесс реструктурирования массива выполняется в фоновом режиме и обычно занимает много часов. Наблюдать за ходом процесса можно просматривая файл /proc/mdstat. В принципе можно расширять и смонтированные массивы — это не опасно, но это увеличивает время реструктуризации. По умолчанию, скорость реструктуризации ограничена, но ее можно изменить
cat /proc/sys/dev/raid/speed_limit_m* 200000 1000 echo 10000 >/proc/sys/dev/raid/speed_limit_min
Расширение массива не увеличивает автоматически размер файловой системы на ней находящийся. Поэтому затем нужно расширить файловую систему явно. Для того чтобы удостовериться, что расширение произошло без ошибок можно проверить целостность файловой системы.
[править] mdadm
Управление программным RAID-массивом в Linux
выполняется с помощью программы mdadm.
У программы mdadm есть несколько режимов работы.
- Assemble (сборка)
- Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам.
- Build (построение)
- Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.
- Create (создание)
- Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.
- Monitor (наблюдение)
- Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла.
- Grow (расширение или уменьшение)
- Расширение или уменьшение массива, включаются или удаляются новые диски.
- Incremental Assembly (инкрементальная сборка)
- Добавление диска в массив.
- Manage (управление)
- Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.
- Misc (разное)
- Действия, которые не относятся ни к одному из перечисленных выше режимов работы.
- Auto-detect (автоообнаружение)
- Активация автоматически обнаруживаемых массивов в ядре Linux.
Формат вызова
mdadm
Режимы:
- -A, --assemble — режим сборки
- -B, --build — режим построения
- -C, --create — режим создания
- -F, --follow, --monitor — режим наблюдения
- -G, --grow — режим расширения
- -I, --incremental — режим инкрементальной сборки
Сборка RAID
Перед сборкой, стоит подготовить наши носители. Затем можно приступать к созданию рейд-массива.
Подготовка носителей
Сначала необходимо занулить суперблоки на дисках, которые мы будем использовать для построения RAID (если диски ранее использовались, их суперблоки могут содержать служебную информацию о других RAID):
mdadm —zero-superblock —force /dev/sd{b,c}
* в данном примере мы зануляем суперблоки для дисков sdb и sdc.
Если мы получили ответ:
mdadm: Unrecognised md component device — /dev/sdb
mdadm: Unrecognised md component device — /dev/sdc
… то значит, что диски не использовались ранее для RAID. Просто продолжаем настройку.
Далее нужно удалить старые метаданные и подпись на дисках:
wipefs —all —force /dev/sd{b,c}
Создание рейда
Для сборки избыточного массива применяем следующую команду:
mdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}
* где:
- /dev/md0 — устройство RAID, которое появится после сборки;
- -l 1 — уровень RAID;
- -n 2 — количество дисков, из которых собирается массив;
- /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Мы должны увидеть что-то на подобие:
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store ‘/boot’ on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
—metadata=0.90
mdadm: size set to 1046528K
Также система задаст контрольный вопрос, хотим ли мы продолжить и создать RAID — нужно ответить y:
Continue creating array? y
Мы увидим что-то на подобие:
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Вводим команду:
lsblk
… и находим информацию о том, что у наших дисков sdb и sdc появился раздел md0, например:
…
sdb 8:16 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
sdc 8:32 0 2G 0 disk
??md0 9:0 0 2G 0 raid1
…
* в примере мы видим собранный raid1 из дисков sdb и sdc.
Создание файла mdadm.conf
В файле mdadm.conf находится информация о RAID-массивах и компонентах, которые в них входят. Для его создания выполняем следующие команды:
mkdir /etc/mdadm
echo «DEVICE partitions» > /etc/mdadm/mdadm.conf
mdadm —detail —scan —verbose | awk ‘/ARRAY/ {print}’ >> /etc/mdadm/mdadm.conf
Пример содержимого:
DEVICE partitions
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=1.2 name=proxy.dmosk.local:0 UUID=411f9848:0fae25f9:85736344:ff18e41d
* в данном примере хранится информация о массиве /dev/md0 — его уровень 1, он собирается из 2-х дисков.
Известные проблемы[править]
Частая ошибка при создании RAID устройств заключается в том, что dmraid-driver берет управление над всеми устройствами, которые должны были использоваться в новом RAID устройстве.
Будет выдано сообщение об ошибке такого вида
mdadm: Cannot open /dev/sdb1: Device or resource busy
Чтобы решить эту проблему, вы должны собрать новый образ initrd(initramfs) без dmraid-driver.
Пример для ядра «2.6.18-8.1.6.el5»-kernel:
mkinitrd --without-dmraid /boot/NO_DMRAID_initrd-2.6.18-8.1.6.el5.img 2.6.18-8.1.6.el5
После этого, система должна быть перезагружена с новым initrd(initramfs). Отредактируйте ваш /boot/grub/grub.conf чтобы указать новый initrd(initramfs).
Если по каким-то причинам собрать новый образ initrd(initramfs) нет возможности, может помочь команда
dmsetup remove_all
Если один из компонентов массива переходит в статус «Failed», то обычно помогает его ручное удаление из массива, а затем – добавление заново. Например:
mdadm --manage /dev/md1 --remove /dev/sdd1 mdadm --manage /dev/md1 --add /dev/sdd1
Чтобы отключить раздел диска из компонентов массива будет недостаточно выполнить команду:
mdadm --manage /dev/md0 --remove /dev/sda1
необходимо сначала пометить его как поврежденный
mdadm /dev/md0 -f /dev/sda1
после уже удалить его
mdadm /dev/md0 -r /dev/sda1
и вновь добавить
mdadm /dev/md0 -a /dev/sda1
При повторении этой ситуации следует проверить дисковый накопитель на исправность.
Невозможно удалить поврежденный диск, поскольку он отсутствует физически.
mdadm: cannot find /dev/sda1: No such file or directory
Решение: удалить все диски удаленные из системы.
mdadm /dev/md0 -r detached
Step 4. Edit mdadm.conf
We are not finished yet! If you reboot now, you will lose the changes and revert to /dev/md127. We need to edit mdadm’s configuration file located in /etc/mdadm/mdadm.conf. Open this file in a text editor with superuser privileges for editing.
sudo xed /etc/mdadm/mdadm.conf
(xed is used here, but use whatever text editor you like.)
There will be a line for each array on your system that looks something like this:
# definitions of existing MD arrays ARRAY /dev/md/1 metadata=1.2 UUID=b0435f6d:12345678:12b162f4:0d5995d2 name=sunbeam:1 ARRAY /dev/md/2 metadata=1.2 UUID=54b094ea:87654321:21b0ff87:0d7c817c name=pancakepower:2
We need to change the name here if it does not look like this. /dev/md/1 is array /dev/md1, and /dev/md/2 is /dev/md2. Make sure that /dev/md/2 (with the forward slash) contains the 2, the UUID matches that of the second array, and the name field contains a 2 after the colon at the end of the line.
Above, sunbeam and pancakepower are the names of two different Linux computers. Both arrays are present on a Linux system named sunbeam.
“Why are there two different array names?”
This happens when an array is created on one system and then physically installed to a different system. In this case, the second array was created using mdadm on a system named pancakepower. (Oh, yeah! Pancake Power!) The RAID array’s superblock stores the array name. Since the array was originally created on a system named pancakepower, this name was stored in the array’s superblock as the default system name. The array was moved to a system named sunbeam, but the superblock name remained the same.
When we see sunbeam:1, the first part, sunbeam, is the name of the computer, and the second part, 1, is the name of the array. thus, sunbeam:1 is the first RAID array on the computer named sunbeam — at least, that is the goal.
Regardless of where the arrays were created, change both ARRAY lines so that the computer name part is the same as the name of the system. Then, after the colon, use 1 for the array and 2 for the second array. It should read something like this:
# definitions of existing MD arrays ARRAY /dev/md/1 metadata=1.2 UUID=b0435f6d:12345678:12b162f4:0d5995d2 name=sunbeam:1 ARRAY /dev/md/2 metadata=1.2 UUID=54b094ea:87654321:21b0ff87:0d7c817c name=sunbeam:2
Note: If the the second array line does not appear, then you must add it manually. If it does exist and contains the /dev/md127 somewhere in some form, change it as shown above. This can vary by system.
Save the file, but before closing it, scroll to the top and note the comment that reads,
# !NB! Run update-initramfs -u after updating this file. # !NB! This will ensure that initramfs has an uptodate copy.
We will do this next. Close the file.
[править] Создание пустого массива без сихронизации данных
Не каноничный метод, применять на дисках без данных!
Смотрим информацию по массивам и выбираем жертву
%# cat /proc/mdstat
Предварительно разбираем массив
%# mdadm --stop /dev/md124
Создаём директорию для metadata файлов
%# mkdir /tmp/metadata
Снимаем дамп metadata с одного из raid дисков
%# mdadm --dump=/tmp/metadata /dev/sda1
Копируем метаданные
%# cp /tmp/metadata/sda1 /tmp/metadata/sdb1
Накатываем бекап
%# mdadm --restore=/tmp/metadata /dev/sdb1
Собираем массив
%# mdadm --create --verbose /dev/md124 --level=0 --raid-devices=2 /dev/sda /dev/sdb
Радуемся отсутствию синка и данных
%# cat /proc/mdstat
Собираем программный RAID в Linux
Так как я использую в качестве основной операционной системы Linux, то естественно, что и RAID будем собирать на работающем компьютере под управлением Linux
Собирать буду зеркальный RAID из двух дисков, но таким же способом можно собрать RAID с большим количеством дисков.
Перед сборкой массива, диски, в моем случае два диска по 1Tb, за ранее подключаем к компьютеру.
Для работы с массивами в Linux необходимо установить утилиту администрирования и контроля программного RAID — mdadm
Запускаем терминал.
Обновляем информацию о пакетах
Устанавливаем утилиту
Проверяем установлена ли утилита
если утилита стоит вы увидите примерно такой текст
Узнаем информацию о подключенных дисках
Проверяем идентификаторы дисков которые будем использовать, их принадлежность
В данном случае, видим два диска sdb и sdc.
Их идентификаторы будут /dev/sdb и /dev/sdc, соответственно.
Из этих дисков и будем создавать массив Raid-1.
Создаем RAID массив
/dev/md0 — имя нашего будущего рейда
—livel=1 — уровень рейда, в нашем варианте собираем RAID1, если собираете RAID2 то ставим =2, ну и так далее
—raid-devices=2 — количество дисков используемых в рейде, ну и далее перечисляются их имена
После ввода команды будет вопрос
Continue creating array ? — соглашаемся, введя Y и нажимаем Enter
Если сделали все правильно, начнется процесс зеркалирования дисков.
Проверить статус можно командой
Мониторинг процесса удобно отслеживать с помощью команды
Так вы в реальном времени сможете наблюдать процесс и знать время его завершения.
Желательно дождаться окончания процесса.
Создаем и монтируем файловую систему в нашем RAID
Созданный массив должен иметь свою файловую систему, так как в данном случае linux, очевидно, что это будет ext4
Создаем ее командой
/dev/md0 — имя нашего созданного массива.
Создаем точку в которую будем монтировать наш массив
/mnt/md0 — точка куда будем монтировать наш массив
Теперь можно смонтировать массив /dev/md0 в нашу ранее созданную директорию /mnt/md0
Проверить доступно ли новое пространство можно командой
В моем случае массив md0 смонтирован в /mnt/Arhiv использовано 10%
Сохраняем наш программный RAID
Если не сохранить все проделанное, после перезагрузки мы не увидим нашего рейда в наличии.
Настраиваем автоматическую сборку рейда при запуске системы.
Информацию, о нашем созданном рейде, необходимо записать в файл /etc/mdadm/mdadm.conf
Выполним команду которая сделает это автоматически
В результате в файл mdadm.conf будет сделана запись о сформированном RAID. Если открыть этот файл в блокноте то выглядеть это будет примерно так
Теперь необходимо обновить информацию о наших файловых системах для их автоматического распознования при запуске системы
Для автоматического монтирования нашего диска /dev/md0 в нашу ранее созданную директорию /mnt/md0, нам необходимо так же зделать запись в файл /etc/fstab
В результате будет сделана запись в файл fstab. Если открыть этот файл в блокноте то выглядеть это будет примерно так
Теперь можете перезагружать систему. После перезагрузки ваш RAID массив должен быть там куда вы его смонтировали.
Всем Удачи!