Mount linux raid autodetect

Содержание
  1. mdadm
  2. Материал из Xgu.ru
  3. Содержание
  4. [править] mdadm
  5. [править] Настройка программного RAID-массива
  6. [править] Создание разделов
  7. [править] Размонтирование
  8. [править] Изменение типа разделов
  9. [править] Создание RAID-массива
  10. [править] Проверка правильности сборки
  11. [править] Создание файловой системы поверх RAID-массива
  12. [править] Создание конфигурационного файла mdadm.conf
  13. [править] Создание точки монтирования для RAID-массива
  14. [править] Изменение /etc/fstab
  15. [править] Монтирование файловой системы нового RAID-массива
  16. [править] Проверка состояния RAID-массива
  17. [править] Проблема загрузки на многодисковых системах
  18. [править] Дальнейшая работа с массивом
  19. [править] Пометка диска как сбойного
  20. [править] Удаление сбойного диска
  21. [править] Добавление нового диска
  22. [править] Сборка существующего массива
  23. [править] Расширение массива
  24. [править] Возобновление отложенной синхронизации
  25. [править] Переименование массива
  26. [править] Удаление массива
  27. [править] Создание пустого массива без сихронизации данных
  28. IT миниблог
  29. О том что нужно не потерять
  30. Монтируем диск из NAS, или как смонтировать RAID-раздел в Linux
  31. Администрирование Ubuntu Server
  32. Страницы
  33. пятница, 28 декабря 2012 г.
  34. Перенос корня на raid (mdadm)
  35. Перенос корня на raid (mdadm)
  36. 1. Необходимые знания
  37. 2. Постановка задачи
  38. 3. Установка ПО и подготовка дисков
  39. 4. Создание массива и перенос данных на него
  40. 5. Настройка системы и загрузчика на использование массива в качестве корневого раздела системы, перезагрузка в новую систему
  41. 6. Подготовка и подключение исходного диска к массиву в качестве второго диска в зеркале
  42. 7. Доказательство выполнения поставленной задачи
  43. 8. Дополнение

mdadm

Материал из Xgu.ru

На этой странице рассматриваются вопросы создания и обслуживания программного RAID-массива в операционной системе Linux.

Содержание

[править] mdadm

Управление программным RAID-массивом в Linux выполняется с помощью программы mdadm.

У программы mdadm есть несколько режимов работы.

Assemble (сборка) Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам. Build (построение) Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются. Create (создание) Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве. Monitor (наблюдение) Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла. Grow (расширение или уменьшение) Расширение или уменьшение массива, включаются или удаляются новые диски. Incremental Assembly (инкрементальная сборка) Добавление диска в массив. Manage (управление) Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного. Misc (разное) Действия, которые не относятся ни к одному из перечисленных выше режимов работы. Auto-detect (автоообнаружение) Активация автоматически обнаруживаемых массивов в ядре Linux.

  • -A, --assemble — режим сборки
  • -B, --build — режим построения
  • -C, --create — режим создания
  • -F, --follow, --monitor — режим наблюдения
  • -G, --grow — режим расширения
  • -I, --incremental — режим инкрементальной сборки

[править] Настройка программного RAID-массива

Рассмотрим как выполнить настройку RAID-массива 5 уровня на трёх дисковых разделах. Мы будем использовать разделы:

В том случае если разделы иные, не забудьте использовать соответствующие имена файлов.

[править] Создание разделов

Нужно определить на каких физических разделах будет создаваться RAID-массив. Если разделы уже есть, нужно найти свободные (fdisk -l). Если разделов ещё нет, но есть неразмеченное место, их можно создать с помощью программ fdisk или cfdisk.

Просмотреть какие есть разделы:

Просмотреть, какие разделы куда смонтированы, и сколько свободного места есть на них (размеры в килобайтах):

[править] Размонтирование

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

[править] Изменение типа разделов

Желательно (но не обязательно) изменить тип разделов, которые будут входить в RAID-массив и установить его равным FD (Linux RAID autodetect). Изменить тип раздела можно с помощью fdisk.

Рассмотрим, как это делать на примере раздела /dev/hde1.

Аналогичным образом нужно изменить тип раздела для всех остальных разделов, входящих в RAID-массив.

[править] Создание RAID-массива

Создание RAID-массива выполняется с помощью программы mdadm (ключ --create). Мы воспользуемся опцией --level, для того чтобы создать RAID-массив 5 уровня. С помощью ключа --raid-devices укажем устройства, поверх которых будет собираться RAID-массив.

Если вы хотите сразу создать массив, где диска не хватает (degraded) просто укажите слово missing вместо имени устройства. Для RAID5 это может быть только один диск; для RAID6 — не более двух; для RAID1 — сколько угодно, но должен быть как минимум один рабочий.

[править] Проверка правильности сборки

Убедиться, что RAID-массив проинициализирован корректно можно просмотрев файл /proc/mdstat. В этом файле отражается текущее состояние RAID-массива.

Обратите внимание на то, как называется новый RAID-массив. В нашем случае он называется /dev/md0. Мы будем обращаться к массиву по этому имени.

[править] Создание файловой системы поверх RAID-массива

Новый RAID-раздел нужно отформатировать, т.е. создать на нём файловую систему. Сделать это можно при помощи программы из семейства mkfs. Если мы будем создавать файловую систему ext3, воспользуемся программой mkfs.ext3. :

Имеет смысл для лучшей производительности файловой системы указывать при создании количество дисков в рейде и количество блоков файловой системы которое может поместиться в один страйп ( chunk ), это особенно важно при создании массивов уровня RAID0,RAID5,RAID6,RAID10. Для RAID1 ( mirror ) это не имеет значения так как запись идёт всегда на один device, a в других типах рейдов дата записывается последовательно на разные диски порциями соответствующими размеру stripe. Например если мы используем RAID5 из 3 дисков, с дефолтным размером страйпа в 64К и используем файловую систему ext3 с размером блока в 4К то можно вызывать команду mkfs.ext вот так:

stripe-width обычно рассчитывается как stride * N ( N это дата диски в массиве — например в RAID5 — два дата диска и один parity ) Для не менее популярной файловой системы XFS надо указывать не количество блоков файловой системы соответствующих размеру stripe в массиве, а непосредственно размер самого страйпа

[править] Создание конфигурационного файла mdadm.conf

Система сама не запоминает какие RAID-массивы ей нужно создать и какие компоненты в них входят. Эта информация находится в файле mdadm.conf.

Строки, которые следует добавить в этот файл, можно получить при помощи команды

Вот пример её использования:

Если файла mdadm.conf ещё нет, можно его создать:

[править] Создание точки монтирования для RAID-массива

Поскольку мы создали новую файловую систему, вероятно, нам понадобится и новая точка монтирования. Назовём её /raid.

[править] Изменение /etc/fstab

Для того чтобы файловая система, созданная на новом RAID-массиве, автоматически монтировалась при загрузке, добавим соответствующую запись в файл /etc/fstab хранящий список автоматически монтируемых при загрузке файловых систем.

Если мы объединяли в RAID-массив разделы, которые использовались раньше, нужно отключить их монтирование: удалить или закомментировать соответствующие строки в файле /etc/fstab. Закомментировать строку можно символом #.

[править] Монтирование файловой системы нового RAID-массива

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

Если новая файловая система добавлена в файл /etc/fstab, можно смонтировать её командой mount -a (смонтируются все файловые системы, которые должны монтироваться при загрузке, но сейчас не смонтированы).

Читайте также:  Linux mint kvm настройка

Можно смонтировать только нужный нам раздел (при условии, что он указан в /etc/fstab).

Если раздел в /etc/fstab не указан, то при монтировании мы должны задавать как минимум два параметра — точку монтирования и монтируемое устройство:

[править] Проверка состояния RAID-массива

Информация о состоянии RAID-массива находится в файле /proc/mdstat.

Если в файле информация постоянно изменяется, например, идёт пересборка массива, то постоянно изменяющийся файл удобно просматривать при помощи программы watch:

Как выполнить проверку целостности программного RAID-массива md0:

Как посмотреть нашлись ли какие-то ошибки в процессе проверки программного RAID-массива по команде check или repair:

[править] Проблема загрузки на многодисковых системах

В некоторых руководствах по mdadm после первоначальной сборки массивов рекомендуется добавлять в файл /etc/mdadm/mdadm.conf вывод команды «mdadm —detail —scan —verbose»:

, в котором жёстко прописаны имена разделов (/dev/sda1, /dev/sda2 в приведённом примере).

Если после этого обновить образ начальной загрузки (в Debian вызвать ‘update-initramfs -u’ или ‘dpkg-reconfigure mdadm’), имена разделов запишутся в файл mdadm.conf образа начальной загрузки, и вы не сможете загрузиться с массива, если конфигурация жёстких дисков изменится (нужные разделы получат другие имена). Для этого не обязательно добавлять или убирать жёсткие диски: в многодисковых системах их имена могут меняться от загрузки к загрузке.

Решение: записывать в /etc/mdadm/mdadm.conf вывод команды «mdadm —detail —scan» (без —verbose).

При этом в файле mdadm.conf будут присутствовать UUID разделов, составляющих каждый RAID-массив. При загрузке системы mdadm находит нужные разделы независимо от их символических имён по UUID.

mdadm.conf, извлечённый из образа начальной загрузки Debian:

Результат исследования раздела командой ‘mdadm —examine'»

Раздел c UUID 147c5847:dabfe069:79d27a05:96ea160b войдёт в состав массива, даже если станет /dev/sdb1 при очередной загрузке системы.

Вообще, существует 2 файла mdadm.conf, влияющих на автоматическую сборку массивов:

  • один при загрузке системы, записывется в образ начальной загрузки при его обновлении;
  • другой находится в каталоге /etc/mdadm/ и влияет на автосборку массивов внутри работающей системы.

Соответственно, вы можете иметь информацию:

1) в образе начальной загрузки (ОНЗ) и в /etc/mdadm/mdadm.conf;

2) только в ОНЗ (попадает туда при его создании обновлении);

3) только в /etc/mdadm/mdadm.conf;

В том месте, где есть mdadm.conf, сборка происходит по правилам; где нет — непредсказуемо.

Примечание: если вы не обновили ОНЗ после создания RAID-массивов, их конфигурация всё равно в него попадёт — при обновлении образа другой программой / при обновлении системы (но вы не будете об этом знать со всеми вытекающими).

[править] Дальнейшая работа с массивом

[править] Пометка диска как сбойного

Диск в массиве можно условно сделать сбойным, ключ --fail (-f):

[править] Удаление сбойного диска

Сбойный диск можно удалить с помощью ключа --remove (-r):

[править] Добавление нового диска

Добавить новый диск в массив можно с помощью ключей --add (-a) и --re-add:

[править] Сборка существующего массива

Собрать существующий массив можно с помощью mdadm --assemble. Как дополнительный аргумент указывается, нужно ли выполнять сканирование устройств, и если нет, то какие устройства нужно собирать.

[править] Расширение массива

Расширить массив можно с помощью ключа --grow (-G). Сначала добавляется диск, а потом массив расширяется:

Проверяем, что диск (раздел) добавился:

Если раздел действительно добавился, мы можем расширить массив:

Опция —raid-devices указывает новое количество дисков, используемое в массиве. Например, было 3 диска, а теперь расширяем до 4-х — указываем 4.

Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например добавить:

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

Убедитесь, что массив расширился:

Нужно обновить конфигурационный файл с учётом сделанных изменений:

[править] Возобновление отложенной синхронизации

P.S.: Если вы увидели « active (auto-read-only) » в файле /proc/mdstat , то возможно вы просто ничего не записывали в этот массив. К примеру, после монтирования раздела и любых изменений в примонтированном каталоге, статус автоматически меняется:

[править] Переименование массива

Для начала отмонтируйте и остановите массив:

Затем необходимо пересобрать как md5 каждый из разделов sd[abcdefghijk]1

[править] Удаление массива

Для начала отмонтируйте и остановите массив:

Затем необходимо затереть superblock каждого из составляющих массива:

Если действие выше не помогло, то затираем так:

[править] Создание пустого массива без сихронизации данных

Не каноничный метод, применять на дисках без данных!

Смотрим информацию по массивам и выбираем жертву

Предварительно разбираем массив

Создаём директорию для metadata файлов

Снимаем дамп metadata с одного из raid дисков

Источник

IT миниблог

О том что нужно не потерять

Монтируем диск из NAS, или как смонтировать RAID-раздел в Linux

Многие из нас сейчас активно используют такие устройства как NAS. Полезно, удобно, компактно. Иногда эти устройства используются даже в небольших конторах как файловые накопители. И иногда они ломаются. Недавно такое произошло у коллеги работающего на аутсорсе в одной пиар-компаний. Тут-то мы и познакомились получше с тем что находится внтури этих NAS. Как правило, работают они под linux и если в системе используется несколько дисков, то они объединены в RAID. В нашем случае это был RAID1, то есть зеркало. Проблема заключалась в том, что к устройству не было доступа через web и ssh. Сбрасывать через RESET было боязно потерять содержимое дисков. Поэтому было решено вытащить один из дисков из RAID и забэкапить его перед сбросом.

Казалось бы, что может быть проще — загрузиться с LiveCD Linux и смонтировать линуксовый диск? Вообще-то оно действительно просто. Но надо помнить что у наc RAID и потомe монтируется диск несколько иначе, чем обычно.
Итак как смонтировать диск RAID1 в Linux?
Мы будем использовать популярный дистрибутив Linux — Ubuntu.

1. После загрузки установим программу mdadm:

2. Посмотрим разделы на нашем диске:

3. Создадим директорию для монтирования старого диска:

Если мы попытаемся смонтировать диск обычном образом:

то получим в результате следующее сообщение:

Поэтому:
4. Проверяем рейдовый разедл:

5. Cоздаем виртуальное md устройство используя утилиту mdadm:

6. Теперь монтируем созданное устройство в ранее созданную директорию:

Вуа ля и в директории /mnt/old_hdd/ содержимое нашего диска. Можно сделать бэкап и безболезненно сбросить NAS. Хотя как показали дальнейшие исследования обычный RESET не стирает содержимое дисков ?
Но всякий админ знает, что лучше перестраховаться. А то что здесь описано может пригодиться в каком-нибудь другом случае.

После завершения процесса копирования, размонтируем виртуальное устройство и остановим его:

Источник

Администрирование Ubuntu Server

Страницы

пятница, 28 декабря 2012 г.

Перенос корня на raid (mdadm)

Перенос корня на raid (mdadm)

1. Необходимые знания
2. Постановка задачи
3. Установка ПО и подготовка дисков
4. Создание массива и перенос данных на него
5. Настройка системы и загрузчика на использование массива в качестве корневого раздела системы, перезагрузка в новую систему
6. Подготовка и подключение исходного диска к массиву в качестве второго диска в зеркале
7. Доказательство выполнения поставленной задачи
8. Дополнение
9. Используемая литература

1. Необходимые знания

Для наилучшего понимания необходимо прочитать следующие статьи:
Установка программ, управление пакетами и системные обновления (apt, dpkg)
Инструменты администратора
Установка программ, управление пакетами и системные обновления (apt, dpkg)
Работаем с накопителями (fdisk, mount)
Программный RAID — шпаргалка (mdadm)

Читайте также:  Эмулятор sega dreamcast для linux

2. Постановка задачи

Дано: Есть система (ubuntu server), установленная на 1 жесткий диск с авторазбитием при установке ( /=ext4 + swap ). Имеется второй жесткий диск такого же объема. Пустой.
Цель: Перенести систему на raid-зеркало из двух дисков, попутно сменив файловую систему на reiserfs. При этом не переустанавливать систему, а именно перенести существующую со всеми настройками и данными, которые в ней могли бы быть.
Доказательством достижения цели будет демонстрация вывода команд:
mount — корень должен быть на /dev/md0, файловая система reiserfs
fdisk -l — разделы на обоих дисках будут Linux Raid Autodetect, наличие устройства /dev/md0
mdadm —detail /dev/md0 — в составе массива будут разделы с обоих дисков /dev/sda1 и /dev/sdb1, их состояние будет active sync
cat /proc/mdstat — уровень raid-массива будет raid1 (зеркало), целостность массива [UU] — не нарушена.
lsblk — наглядное интуитивнопонятное отображение
swapon -s — использование разделов на обоих дисках под своп
free — размер свопа равен сумме размеров своп-разделов обоих дисков

3. Установка ПО и подготовка дисков

Состояние дисков на начальном этапе:
# fdisk -l

Диск /dev/sda: 8589 МБ, 8589934592 байт
255 головок, 63 секторов/треков, 1044 цилиндров, всего 16777216 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x000c0f42

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 2048 15728639 7863296 83 Linux
/dev/sda2 15730686 16775167 522241 5 Расширенный
/dev/sda5 15730688 16775167 522240 82 Linux своп / Solaris

Диск /dev/sdb: 8589 МБ, 8589934592 байт
255 головок, 63 секторов/треков, 1044 цилиндров, всего 16777216 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00015df5

Устр-во Загр Начало Конец Блоки Id Система

# mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)

Устанавливаем утилиту, с помощью которой мы организуем программный raid-массив первого уровня (зеркало) — mdadm:
# apt-get install mdadm

При установке mdadm за ним как зависимость потянется postfix. Если это первая установка postfix, то система спросит о варианте настройки почты. Как бы вы ни ответили — это не отложит отпечаток на работу mdadm. Моя система не будет почтовой, а если и будет, то я вручную перенастрою postfix. По-этому я спокойно выбираю «без настройки». После этого postfix вообще можно удалить
# apt-get purge postfix
mdadm всё-равно будет работать.
Посмотрим состояние raid в системе
# mdadm —detail —scan
# cat /proc/mdstat
Personalities :
unused devices:

Разбиваем второй жесткий диск под собственные нужды
У нас будет зеркало из двух разделов (sda1+sdb1) и на каждом из дисков еще будет по 700мб свопа (sda2,sdb2). Swap-разделы не будут в зеркале — это не нужно.
Создаём таблицу разделов на втором диске
# fdisk -l /dev/sdb

Диск /dev/sdb: 8589 МБ, 8589934592 байт
255 головок, 63 секторов/треков, 1044 цилиндров, всего 16777216 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Идентификатор диска: 0x00015df5

Устр-во Загр Начало Конец Блоки Id Система
/dev/sdb1 2048 15362047 7680000 fd Автоопределение Linux raid
/dev/sdb2 15362048 16777215 707584 82 Linux своп / Solaris

Создаём swap на подготовленном разделе /dev/sdb2
# mkswap /dev/sdb2
Setting up swapspace version 1, size = 707580 KiB
без метки, UUID=2cd4e3cd-66d5-4f10-be20-e518b3641037

4. Создание массива и перенос данных на него

Хорошим тоном перед созданием массива или добавлением устройства в массив является удаление суперблока на устройстве
# mdadm —zero-superblock /dev/sdb1

Так как у нас только 1 свободный жесткий диск, то мы не сможем создать массив из двух дисков сразу. Вместо второго мы укажем missing, это будет означать «отсутствует». Потом, когда загрузимся в систему на массиве и освободим первый диск, мы его подключим к массиву.
mdadm —create /dev/md0 —level=1 —raid-devices=2 /dev/sdb1 missing
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
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

# mdadm —detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Dec 11 16:11:42 2012
Raid Level : raid1
Array Size : 7675840 (7.32 GiB 7.86 GB)
Used Dev Size : 7675840 (7.32 GiB 7.86 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent

Update Time : Tue Dec 11 16:11:42 2012
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0

Name : ubuntu:0 (local to host ubuntu)
UUID : ee15f1d8:f12fdd83:b3bcfbca:8d295a36
Events : 0

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 0 0 1 removed

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0]
7675840 blocks super 1.2 [2/1] [U_]

Подчеркнутые degraded, removed, [2/1] [U_] говорят о том, что целостность массива нарушена (из двух дисков только один присутствует). Это как раз и есть результат нашего missing.

Для форматирования раздела в reiserfs необходимо установить пакет reiserfsprogs
# apt-get install reiserfsprogs
После форматируем
# mkfs.reiserfs /dev/md0
mkfs.reiserfs 3.6.21 (2009 http://www.namesys.com)

A pair of credits:
Elena Gryaznova performed testing and benchmarking.

The Defense Advanced Research Projects Agency (DARPA, http://www.darpa.mil) is the
primary sponsor of Reiser4. DARPA does not endorse this project; it merely
sponsors it.

Guessing about desired format.. Kernel 3.2.0-23-generic-pae is running.
Format 3.6 with standard journal
Count of blocks on the device: 1918960
Number of blocks consumed by mkreiserfs formatting process: 8270
Blocksize: 4096
Hash function used to sort names: «r5»
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 6fc39ba1-9d56-4b8b-807f-605fcb703519
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
ALL DATA WILL BE LOST ON ‘/dev/md0’!
Continue (y/n):y
Initializing journal — 0%. 20%. 40%. 60%. 80%. 100%
Syncing..ok
ReiserFS is successfully created on /dev/md0.

Вот, что мы имеем после всех этих действий:
# blkid
/dev/sda1: UUID=»46462076-9e17-44d9-be3d-15eb8360b2d2″ TYPE=»ext4″
/dev/sda5: UUID=»b40e124a-380a-42ca-b774-695c03ff60f6″ TYPE=»swap»
/dev/sdb1: UUID=»ee15f1d8-f12f-dd83-b3bc-fbca8d295a36″ UUID_SUB=»0a545820-67e1-8d94-9723-b19cae648523″ LABEL=»ubuntu:0″ TYPE=»linux_raid_member»
/dev/sdb2: UUID=»2cd4e3cd-66d5-4f10-be20-e518b3641037″ TYPE=»swap»
/dev/md0: UUID=»6fc39ba1-9d56-4b8b-807f-605fcb703519″ TYPE=»reiserfs»

# mount /dev/md0 /mnt/
# df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/sda1 7,5G 956M 6,2G 14% /
.
/dev/md0 7,4G 33M 7,3G 1% /mnt

Копируем исходную систему с первого раздела жесткого диска №1 на зеркальный raid-массив, состоящий пока что только из первого раздела жесткого диска №2.
# cp -dprx / /mnt/
Это занимает некоторое время (от 3 минут)
# df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
/dev/sda1 7,5G 956M 6,2G 14% /
.
/dev/md0 7,4G 703M 6,7G 10% /mnt
Мне бросилось в глаза то, что размер различный.

5. Настройка системы и загрузчика на использование массива в качестве корневого раздела системы, перезагрузка в новую систему

Приводим файл /mnt/etc/fstab к виду
proc /proc proc nodev,noexec,nosuid 0 0
UUID=6fc39ba1-9d56-4b8b-807f-605fcb703519 / reiserfs notail,acl 0 1
UUID=2cd4e3cd-66d5-4f10-be20-e518b3641037 none swap sw 0 0
С опцией errors=remount-ro не монтирруется корень, соответственно не загружается система. Пишем туда notail,acl (первое, что пришло в голову из man mount).
Устанавливаем grub на второй диск
# grub-install /dev/sdb
Installation finished. No error reported.

Читайте также:  Отключение прав администратора windows 10

Добавляем информацию о массиве в конфиг
# mdadm —examine —scan >> /mnt/etc/mdadm/mdadm.conf

Перезагружаемся. grub2 не перенастроен на загрузку системы с массива. Но это не беда. Во время отображения меню загрузки нажмем ‘c’ и попадём в консоль. Далее ‘ls’ — grub не видит md-устройства (md/0)
c
ls
(hd0) (hd0,msdos1) (hd0,msdos5) (hd1) (hd1,msdos1) (hd1,msdos2)

Надо загрузить модуль mdraid1x
insmod mdraid1x
ls
(md/0) (hd0) (hd0,msdos1) (hd0,msdos5) (hd1) (hd1,msdos1) (hd1,msdos2)

Теперь вводим следующие команды (можно пользоваться табом [TAB] для завершения имён файлов vmlinuz и initrd). Так как целостность массива у нас нарушена, добавим опцию bootdegraded=true в конец строки linux, чтоб не было ошибок при загрузке. Обратите внимание на /dev/md127 — это и есть устройство нашего массива. Именно его нужно указывать.
set root=(md/0)
linux /boot/vmlinuz-3.2.0-23-generic-pae root=/dev/md127 bootdegraded=true
initrd /boot/initrd.img-3.2.0-23-generic-pae
boot
Пошла загрузка системы, расположенной на массиве.

6. Подготовка и подключение исходного диска к массиву в качестве второго диска в зеркале

Загрузился на md127, который уже на reiserfs. Смотрим
# mount
/dev/md127 on / type reiserfs (rw,notail,acl)
.

Копируем таблицу разделов с /dev/sdb на /dev/sda
# sfdisk -d /dev/sdb | sfdisk /dev/sda
Checking that no-one is using this disk right now .
OK

Disk /dev/sda: 1044 cylinders, 255 heads, 63 sectors/track
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System
/dev/sda1 * 0+ 979- 979- 7863296 83 Linux
/dev/sda2 979+ 1044- 66- 522241 5 Extended
/dev/sda3 0 — 0 0 0 Empty
/dev/sda4 0 — 0 0 0 Empty
/dev/sda5 979+ 1044- 66- 522240 82 Linux swap / Solaris
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sda1 2048 15362047 15360000 fd Linux raid autodetect
/dev/sda2 15362048 16777215 1415168 82 Linux swap / Solaris
/dev/sda3 0 — 0 0 Empty
/dev/sda4 0 — 0 0 Empty
Warning: partition 1 does not end at a cylinder boundary
Warning: partition 2 does not start at a cylinder boundary
Warning: partition 2 does not end at a cylinder boundary
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table

Re-reading the partition table .

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

Создаём swap-раздел на /dev/sda2
# mkswap /dev/sda2
Setting up swapspace version 1, size = 707580 KiB
no label, UUID=09050439-69a3-4eba-b39e-7f34c929e9af

добавляем его в /etc/fstab
proc /proc proc nodev,noexec,nosuid 0 0
UUID=6fc39ba1-9d56-4b8b-807f-605fcb703519 / reiserfs notail,acl 0 1
UUID=6aa1ddea-2cd6-4f7c-b0de-823eccccd8dd none swap sw 0 0
UUID=09050439-69a3-4eba-b39e-7f34c929e9af none swap sw 0 0

Подключаем раздел на первом жестком диске к массиву
# mdadm /dev/md127 -a /dev/sda1
mdadm: added /dev/sda1

Проверяем
# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sda1[2] sdb1[0]
7675840 blocks super 1.2 [2/1] [U_]
[=>. ] recovery = 5.5% (423424/7675840) finish=4.8min speed=24907K/sec

Идёт синхронизация. Нужно дождаться завершения. Устанавливаем grub на первый диск.
# grub-install /dev/sda
Installation finished. No error reported.

Обновляем конфигурацию grub, чтобы каждый раз не вводить set root. linux. initrd. boot.
# update-grub
Generating grub.cfg .
Found linux image: /boot/vmlinuz-3.2.0-23-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-23-generic-pae
Found memtest86+ image: /boot/memtest86+.bin
done

7. Доказательство выполнения поставленной задачи

Загрузились в систему. Проверяем.
mount — корень должен быть на /dev/md0, файловая система reiserfs
# mount
/dev/md127 on / type reiserfs (rw,notail,acl)
.

fdisk -l — разделы на обоих дисках будут Linux Raid Autodetect, наличие устройства /dev/md0
# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c0f42

Device Boot Start End Blocks Id System
/dev/sda1 2048 15362047 7680000 fd Linux raid autodetect
/dev/sda2 15362048 16777215 707584 82 Linux swap / Solaris

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x744af781

Device Boot Start End Blocks Id System
/dev/sdb1 2048 15362047 7680000 fd Linux raid autodetect
/dev/sdb2 15362048 16777215 707584 82 Linux swap / Solaris

Disk /dev/md127: 7860 MB, 7860060160 bytes
2 heads, 4 sectors/track, 1918960 cylinders, total 15351680 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/md127 doesn’t contain a valid partition table

mdadm —detail /dev/md0 — в составе массива будут разделы с обоих дисков /dev/sda1 и /dev/sdb1, их состояние будет active sync

# mdadm —detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Wed Dec 12 15:01:32 2012
Raid Level : raid1
Array Size : 7675840 (7.32 GiB 7.86 GB)
Used Dev Size : 7675840 (7.32 GiB 7.86 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Dec 12 15:50:25 2012
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Name : ubuntu:0 (local to host ubuntu)
UUID : 6fc39ba1-9d56-4b8b-807f-605fcb703519
Events : 281

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
2 8 1 1 active sync /dev/sda1

cat /proc/mdstat — уровень raid-массива будет raid1 (зеркало), целостность массива [UU] — не нарушена.

# cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md127 : active raid1 sdb1[0] sda1[2]
7675840 blocks super 1.2 [2/2] [UU]

# lsblk — наглядное интуитивнопонятное отображение

# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
├─sda1 8:1 0 7,3G 0 part
│ └─md127 9:127 0 7,3G 0 raid1 /
└─sda2 8:2 0 691M 0 part [SWAP]
sdb 8:16 0 8G 0 disk
├─sdb1 8:17 0 7,3G 0 part
│ └─md127 9:127 0 7,3G 0 raid1 /
└─sdb2 8:18 0 691M 0 part [SWAP]
sr0 11:0 1 1024M 0 rom

swapon -s — использование разделов на обоих дисках под своп
# swapon -s
Filename Type Size Used Priority
/dev/sda2 partition 707580 0 -1
/dev/sdb2 partition 707580 0 -2

free — размер свопа равен сумме размеров своп-разделов обоих дисков
# free
total used free shared buffers cached
Mem: 507536 87556 419980 0 4968 43896
-/+ buffers/cache: 38692 468844
Swap: 1415160 0 1415160

8. Дополнение

В случае, если наша система не грузится и необходимо загрузиться с live-cd, или из другой ОС и примонтировать нашу систему, не забудьте, загрузившись, установить mdadm
# apt-get install mdadm

выполнить
# mdadm —assemble —scan

удостовериться, что массив собран правильно
# cat /proc/mdstat

и только после этого монтировать
# mount /dev/md0 /mnt/somedir

Источник

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