Mdadm

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. (англ.)

Дисковая подсистемаLinux | FreeBSD
Диски и разделы
Файлы устройств: Блочное устройство | Символьное устройство | Raw-устройство | loop-устройство
Диски: IDE | SATA (SATA hotplug) | SCSI | USB
RAID-массивы: Аппаратный RAID | Linux RAID | FreeBSD RAID
Дисковые разделы: Раздел | MBR | fdisk | parted | disklabel | GPT
Управление томами
Логический том | Физический том | Группа томов | Снимок | Клон
device-mapper | dm-ioband | dm-crypt | dm-userspace | multipath
Системы управления томами: LVM | CLVM | EVMS | Btrfs* | ZFS* | AdvFS* | Zumastor
Сетевые хранилища и репликация
Отказоустойчивость: DRBD | Xen + DRBD | ggate + gmirror | HAST
Сетевые хранилища: AoE | iSCSI | FCoE | GNBD
Файловые системы
Монтирование | Проверка целостности | Дефрагментация | Суперблок | inode | Журнал | Кэш | VFS | UUID | FUSE
Локальные: ext3 | ext3cow | ext4 | JFS | Reiser4 | XFS | ZFS | Btrfs | AdvFS | ISO | aufs
Сетевые: NFS | CIFS | AFS | POHMELFS
Кластерные: GFS | OCFS2 | CXFS | VMFS | GPFS
Распределенные: Lustre | PVFS | Ceph | Coda
* Btrfs, ZFS и AdvFS — это файловые системы с возможностями управления томами

Сборка 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 массив должен быть там куда вы его смонтировали.

Всем Удачи!

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: