Меню

Как проверить raid массив на ошибки

Содержание

Эта страница целиком списана с исходной, где рассматриваются вопросы создания и обслуживания программного RAID-массива в операционной системе Linux. К сожалению, исходная страница недоступна, приходится держать копию на этом wiki.

Краткое описание mdadm

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

Assemble(сборка)

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

Build(построение)

Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.

Create(создание)

Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.

Monitor(наблюдение)

Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла.

Grow (расширение или уменьшение)

Расширение или уменьшение массива, включаются или удаляются новые диски.

Incremental Assembly (инкрементальная сборка)

Добавление диска в массив.

Manage (управление)

Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.

Misc (разное)

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

Auto-detect (автоообнаружение)

Активация автоматически обнаруживаемых массивов в ядре Linux.

Формат вызова

mdadm [mode] [array] [options]

Режимы:

  • -A, –assemble — режим сборки

  • -B, –build — режим построения

  • -C, –create — режим создания

  • -F, –follow, –monitor — режим наблюдения

  • -G, –grow — режим расширения

  • -I, –incremental — режим инкрементальной сборки

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

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

 /dev/sda1
 /dev/sdb1
 /dev/sdc1
 /dev/sdd1   

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

Создание разделов

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

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

 %# fdisk -l
 Disk /dev/hda: 12.0 GB, 12072517632 bytes
 255 heads, 63 sectors/track, 1467 cylinders
 Units = cylinders of 16065 * 512 = 8225280 bytes
 Device Boot    Start       End    Blocks   Id  System
 /dev/hda1   *         1        13    104391   83  Linux
 /dev/hda2            14       144   1052257+  83  Linux
 /dev/hda3           145       209    522112+  82  Linux swap
 /dev/hda4           210      1467  10104885    5  Extended
 /dev/hda5           210       655   3582463+  83  Linux
 ...
 ...
 /dev/hda15         1455      1467    104391   83  Linux

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

 %# df -k
 Filesystem           1K-blocks      Used Available Use% Mounted on
 /dev/hda2              1035692    163916    819164  17% /
 /dev/hda1               101086      8357     87510   9% /boot
 /dev/hda15              101086      4127     91740   5% /data1
 ...
 ...
 ...
 /dev/hda7              5336664    464228   4601344  10% /var

Размонтирование

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

 %# umount /dev/sda1
 %# umount /dev/sdb1
 %# umount /dev/sdc1
 %# umount /dev/sdd1

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

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

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

  %# fdisk /dev/hde
  The number of cylinders for this disk is set to 8355. 
  There is nothing wrong with that, but this is larger than 1024,
  and could in certain setups cause problems with:
  1) software that runs at boot time (e.g., old versions of LILO)
  2) booting and partitioning software from other OSs
  (e.g., DOS FDISK, OS/2 FDISK)
  Command (m for help):
  Use FDISK Help
  Now use the fdisk m command to get some help:
  Command (m for help): m
  ...
  ...
  p   print the partition table
  q   quit without saving changes
  s   create a new empty Sun disklabel
  t   change a partition's system id
  ...
  ...
  Command (m for help):
  Set The ID Type To FD
  Partition /dev/hde1 is the first partition on disk /dev/hde. 
  Modify its type using the t command, and specify the partition number 
  and type code. 
  You also should use the L command to get a full listing 
  of ID types in case you forget.
  Command (m for help): t
  Partition number (1-5): 1
  Hex code (type L to list codes): L
  ...
  ...
  ...
  16  Hidden FAT16    61   SpeedStor       f2  DOS secondary
  17  Hidden HPFS/NTF 63  GNU HURD or Sys fd  Linux raid auto
  18  AST SmartSleep  64  Novell Netware  fe  LANstep
  1b  Hidden Win95 FA 65  Novell Netware  ff  BBT
  Hex code (type L to list codes): fd
  Changed system type of partition 1 to fd (Linux raid autodetect)
  Command (m for help):
  Make Sure The Change Occurred
  Use the p command to get the new proposed partition table:
  Command (m for help): p
  Disk /dev/hde: 4311 MB, 4311982080 bytes
  16 heads, 63 sectors/track, 8355 cylinders
  Units = cylinders of 1008 * 512 = 516096 bytes
  Device Boot    Start       End    Blocks   Id  System
  /dev/hde1             1      4088   2060320+  fd  Linux raid autodetect
  /dev/hde2          4089      5713    819000   83  Linux
  /dev/hde4          6608      8355    880992    5  Extended
  /dev/hde5          6608      7500    450040+  83  Linux
  /dev/hde6          7501      8355    430888+  83  Linux
  Command (m for help):
  Save The Changes
  Use the w command to permanently save the changes to disk /dev/hde:
  Command (m for help): w
  The partition table has been altered!
  Calling ioctl() to re-read partition table.
  WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
  The kernel still uses the old table.
  The new table will be used at the next reboot.
  Syncing disks.

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

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

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

  mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1
  mdadm: layout defaults to left-symmetric
  mdadm: chunk size defaults to 64K
  mdadm: /dev/hde1 appears to contain an ext2fs file system
      size=48160K  mtime=Sat Jan 27 23:11:39 2007
  mdadm: /dev/hdf2 appears to contain an ext2fs file system
      size=48160K  mtime=Sat Jan 27 23:11:39 2007
  mdadm: /dev/hdg1 appears to contain an ext2fs file system
      size=48160K  mtime=Sat Jan 27 23:11:39 2007
  mdadm: size set to 48064K
  Continue creating array? y
  mdadm: array /dev/md0 started.

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

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

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

  %# cat /proc/mdstat
  Personalities : [raid5]
  read_ahead 1024 sectors
  md0 : active raid5 hdg1[2] hde1[1] hdf2[0]
      4120448 blocks level 5, 32k chunk, algorithm 3 [3/3] [UUU]
  unused devices: <none>

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

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

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

  %# mkfs.ext3 /dev/md0
  mke2fs 1.39 (29-May-2006)
  Filesystem label=
  OS type: Linux
  Block size=1024 (log=0)
  Fragment size=1024 (log=0)
  36144 inodes, 144192 blocks
  7209 blocks (5.00%) reserved for the super user
  First data block=1
  Maximum filesystem blocks=67371008
  18 block groups
  8192 blocks per group, 8192 fragments per group
  2008 inodes per group
  Superblock backups stored on blocks: 
          8193, 24577, 40961, 57345, 73729
  Writing inode tables: done                            
  Creating journal (4096 blocks): done
  Writing superblocks and filesystem accounting information: done
  This filesystem will be automatically checked every 33 mounts or
  180 days, whichever comes first.  Use tune2fs -c or -i to override.

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

 
    %# mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/md0

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

    %# mkfs.xfs -d su=64k,sw=3 /dev/md0

Создание конфигурационного файла mdadm.conf

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

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

mdadm –detail –scan –verbose

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

  %# mdadm --detail --scan --verbose
  ARRAY /dev/md0 level=raid5 num-devices=4 
  UUID=77b695c4:32e5dd46:63dd7d16:17696e09
  devices=/dev/hde1,/dev/hdf2,/dev/hdg1

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

  %# echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
  %# mdadm --detail --scan --verbose | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

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

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

  %# mkdir /raid

Изменение /etc/fstab

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

 /dev/md0      /raid     ext3    defaults    1 2

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

  #/dev/hde1       /data1        ext3    defaults        1 2
  #/dev/hdf2       /data2        ext3    defaults        1 2
  #/dev/hdg1       /data3        ext3    defaults        1 2

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

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

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

 %# mount -a

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

 %# mount /raid

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

 %# mount /dev/md0 /raid

Проверка состояния RAID-массива

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

  %# raidstart /dev/md0
  %# cat /proc/mdstat
  Personalities : [raid5]
  read_ahead 1024 sectors
  md0 : active raid5 hdg1[2] hde1[1] hdf2[0]
      4120448 blocks level 5, 32k chunk, algorithm 3 [3/3] [UUU]
  unused devices: <none>

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

%$ watch cat /proc/mdstat

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

echo ‘check’ >/sys/block/md0/md/sync_action

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

cat /sys/block/md0/md/mismatch_cnt

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

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

ARRAY /dev/md/1 level=raid1 num-devices=2 metadata=1.2 name=linuxWork:1 UUID=147c5847:dabfe069:79d27a05:96ea160b

devices=/dev/sda1

ARRAY /dev/md/2 level=raid1 num-devices=2 metadata=1.2 name=linuxWork:2 UUID=68a95a22:de7f7cab:ee2f13a9:19db7dad

devices=/dev/sda2

, в котором жёстко прописаны имена разделов (/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:

DEVICE partitions
HOMEHOST <system>
ARRAY /dev/md/1 metadata=1.2 UUID=147c5847:dabfe069:79d27a05:96ea160b name=linuxWork:1
ARRAY /dev/md/2 metadata=1.2 UUID=68a95a22:de7f7cab:ee2f13a9:19db7dad name=linuxWork:2

Результат исследования раздела командой ‘mdadm –examine’«

/dev/sda1:

       Magic : a92b4efc
     Version : 1.2
 Feature Map : 0x0
  Array UUID : 147c5847:dabfe069:79d27a05:96ea160b
        Name : linuxWork:1

Creation Time : Thu May 23 09:17:01 2013

  Raid Level : raid1
Raid Devices : 2

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

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

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

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

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

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

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

4) нигде.

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

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

Диск в массиве можно условно сделать сбойным, ключ –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.

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

  1. -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 : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active(auto-read-only) raid1 sda1[0] sdb1[1]
    78148096 blocks [2/2] [UU]
      resync=PENDING

Возобновить:

echo idle > /sys/block/md0/md/sync_action

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

md0 : active raid1 sdc[0] sdd[1]

Переименование массива

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

  %# umount /dev/md0
  %# mdadm --stop /dev/md0

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

  %# mdadm --assemble /dev/md5 /dev/sd[abcdefghijk]1 --update=name

или так

  %# mdadm --assemble /dev/md5 /dev/sd[abcdefghijk]1 --update=super-minor

Удаление массива

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

  %# umount /dev/md0
  %# mdadm -S /dev/md0

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

  %# mdadm --zero-superblock /dev/hde1
  %# mdadm --zero-superblock /dev/hdf2

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

  %# dd if=/dev/zero of=/dev/hde1 bs=512 count=1
  %# dd if=/dev/zero of=/dev/hdf2 bs=512 count=1

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

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

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

  %# 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

Дополнительная информация

  man mdadm (англ.)
  man mdadm.conf (англ.)
  Linux Software RAID (англ.)
  Gentoo Install on Software RAID (англ.)
  HOWTO Migrate To RAID (англ.)
  Remote Conversion to Linux Software RAID-1 for Crazy Sysadmins HOWTO (англ.)
  Migrating To RAID1 Mirror on Sarge (англ.)
  Настройка программного RAID-1 на Debian Etch (рус.), а также обсуждение на ЛОРе
  Недокументированные фишки программного RAID в Linux (рус.) 

Производительность программных RAID-массивов

  Adventures With Linux RAID: Part 1, Part 2 (англ.)
  Параметры, влияющие на производительность программного RAID (рус.) 

Разные заметки, имеющие отношение к RAID

  BIO_RW_BARRIER - what it means for devices, filesystems, and dm/md. (англ.) 

Содержание

  1. Как проверить raid массив windows
  2. Поиск и замена диска поврежденного диска в Raid-1
  3. Главная > Восстановление Данных при помощи R-Studio > Наборы Томов и RAID > Проверка Целостности Данных RAID
  4. Элементы управления окна Проверка корректности RAID
  5. Мониторинг raid массивов в Windows Core
  6. Объединение 2-х дисков в 1: настройка RAID-массива на домашнем компьютере (просто о сложном)
  7. Настройка RAID
  8. Основы, какими могут быть RAID массивы (т.е. то, как будем объединять диски)
  9. Пару слов о дисках и мат. плате
  10. Пример настройки RAID 0 в BIOS
  11. Как создать RAID 0, RAID 1 программно (в ОС Windows 10)

Как проверить raid массив windows

moderator

Сообщения: 26925
Благодарности: 3917

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

contributor

Сообщения: 8627
Благодарности: 2126

А посмотреть в Диспетчере Устройств?

Возможно что CrystalDiskInfo сможет показать состояние SMART винчестеров, входящих в ваш RAID: при контроллерах Intel он это уже несколько лет позволяет.

Ну а утилита контроля и обслуживания RAID (или у вас такая не установлена?) позволяет хотя бы качественно оценить состояние дисков, а также произвести анализ и исправление ошибок, связанных с проблемами самого RAID (у них бывают собственные проблемы, не зависящие от входящих в них дисков и их состояния).

» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″> » width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>

contributor

Сообщения: 8627
Благодарности: 2126

Видимо у вас там два RAID-1 по два диска. И вы видите не физические диски, а фиктивные, которыми и являются RAID (видимо те самые два «Intel MegaSR SCSI Disk Device» – и пускай вас не смущают слова SCSI и SAS).

Источник

Поиск и замена диска поврежденного диска в Raid-1

Рассмотрим порядок действий проверки дисков выделенного сервера, с которого пришла ошибка SMART, выявления и замены неисправного диска в массиве Raid-1.

raidcheck

в данном примере всё с raid всё в порядке. Если бы было так: [U_], то диск sdb неисправен, если так: [_U], то sda (смотрим порядок в md-устройствах, например: md2 : active raid1 sda3[2] sdb3[3])

[X] меняем на a или b в зависимости от диска, список дисков можно посмотреть командой:

Оцениваем состояние диска по параметрам и выявляем неисправный, смотрим:

smart

В зависимости от количества разделов выполняем соответственно для разных разделов:

Далее команда на удаление из RAID

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

на не замененном диске

После этого выполнить команду:

(для MBR), и

(структура разделов в этой команде копируется из /dev/sda в /dev/sdb)

(для GPT)

Источник

Главная > Восстановление Данных при помощи R-Studio > Наборы Томов и RAID > Проверка Целостности Данных RAID

Вы можете проверить целостность данных RAID (правильность блоков четности на RAID).

Чтобы проверить целостность данных RAID

* Щелкните правой кнопкой мыши по RAID и выберите пункт Проверить корректность RAID. контекстного меню
> Откроется окно Проверка корректности RAID, в котором будет отображаться ход выполнения (прогресс) операции.

raidconsistency rus zoom15

Окно Проверка корректности RAID

После окончания проверки можно просмотреть ее результаты.

Блок четности RAID корректен.

Блок четности RAID некорректен.

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

hmtoggle plus1 Элементы управления окна Проверка корректности RAID

Номер первого сектора в ряде.

Переход к предыдущей/следующей порции данных.

Источник

Мониторинг raid массивов в Windows Core

917d3cf70556cfe481256125da2edab7

За последние годы мы привыкли что можно и нужно все мониторить, множество инструментов начиная от простых логов, заканчивая Zabbix и все можно связать. Microsoft в свою очередь тоже дала нам отличный инструмент WinRM, с помощью которого мы можем отслеживать состояние операционных систем и не только. Но как всегда есть ложка дегтя, собственно об «обходе» этой ложки дегтя и пойдет речь.

Как выше было сказано, мы имеем все необходимые инструменты для мониторинга IT структуры, но так сложилось что мы не имеем «автоматизированный» инструмент для мониторинга состояния Intel raid массивов в Windows core. Обращаю Ваше внимание на то, что речь идет об обычном «желтом железе».

Все мы знаем что есть софт от Intel, rapid и matrix storage, но к сожалению на стандартном Windows core он не работает, также есть утилита raidcfg32, она работает в режиме командной строки, умеет обслуживать в ручном режиме и показывать статус, тоже в ручном режиме. Думаю Америку не для кого не открыл.

Постоянно в ручном режиме проверять состояние raid или ждать выхода из строя сервера виртуализации не самый лучший выбор.

Для реализации коварного плана по автоматизации мониторинга Intel raid мы используем
основные инструменты:

Копируем raidcfg32.exe в c:raidcfg32

Проверяем корректно ли установлен драйвер:
cmd.exe C:raidcfg32raidcfg32.exe /stv

Если получаем состояние raid и дисков, то все ок.

Создаем источник в журнале application:

*Дальше все выполняется в powershell

Выполняем запрос состояния raid, удаляем кавычки для упрощения парсинга, подключаем содержимое файла.

Ищем ключевые слова, если одно из слов ниже будет найдено, то в файле errorRAID.txt появится значение true, это будет говорить о наличии ошибки, если совпадений не найдено, то будет записано значение false.

Подключаем файл с записаными true и false, ищем в файле true, если true найдено то заменяем его на Error, заменяем false на Information.

Записывам результат в EntryType.txt

Записываем в EventLog сообщение, где в случае если будут найдены ключевые слова, уровень сообщения будет Error, если не будут найдены, то Information.

Сохраняем код в *.ps1

Создаем в планировщике задание на запуск скрипта, я запускаю задание 1 раз в сутки и при каждой загрузке.

Если будет производится сбор логов другой Windows ОС в Eventlog, то на коллекторе логов необходимо создать источник «RAID», пример есть выше.

Мы транспортируем логи в rsyslog через Adison rsyslog для Windows.

На выходе получается вот такая картинка:

image loader

UPD.
По поводу использования store space, все сервера с windows core на борту используются в филиалах, в филиале установлен только 1 сервер и для получения «бесплатного» гипервизора и уменьшения стоимости лицензии используется именно core.

Источник

Объединение 2-х дисков в 1: настройка RAID-массива на домашнем компьютере (просто о сложном)

RAID massivДоброго дня!

Согласитесь, звучит заманчиво?! Однако, многим пользователям слово «RAID» — либо вообще ничего не говорит, либо напоминает что-то такое отдаленное и сложное (явно-недоступное для повседневных нужд на домашнем ПК/ноутбуке). На самом же деле, все проще, чем есть. 👌 (разумеется, если мы не говорим о каких-то сложных производственных задачах, которые явно не нужны на обычном ПК)

Собственно, ниже в заметке попробую на доступном языке объяснить, как можно объединить диски в эти RAID-массивы, в чем может быть их отличие, и «что с чем едят».

uskwin

Настройка RAID

Основы, какими могут быть RAID массивы (т.е. то, как будем объединять диски)

Обратите внимание также на табличку ниже.

RAID 0

RAID 1

Разумеется, видов RAID-массивов гораздо больше (RAID 5, RAID 6, RAID 10 и др.), но все они представляют из себя разновидности вышеприведенных (и, как правило, в домашних условиях не используются).

Пару слов о дисках и мат. плате

Не все материнские платы поддерживают работу с дисковыми массивами RAID. И прежде, чем переходить к вопросу объединению дисков, необходимо уточнить этот момент.

Как это сделать : сначала с помощью спец. утилит (например, AIDA 64) нужно узнать точную модель материнской платы компьютера.

Далее найти спецификацию к вашей мат. плате на официальном сайте производителя и посмотреть вкладку «Хранение» (в моем примере ниже, мат. плата поддерживает RAID 0, RAID 1, RAID 10).

Spetsifikatsiya materinskoy platyi

Спецификация материнской платы

Если ваша плата не поддерживает нужный вам вид RAID-массива, то у вас есть два варианта выхода из положения:

RAID kontroller v kachestve primera

RAID-контроллер (в качестве примера)

Важная заметка : RAID-массив при форматировании логического раздела, переустановки Windows и т.д. — не разрушится. Но при замене материнской платы (при обновлении чипсета и RAID-контроллера) — есть вероятность, что вы не сможете прочитать информацию с этого RAID-массива (т.е. информация не будет недоступна. ).

Что касается дисков под RAID-массив :

Пример настройки RAID 0 в BIOS

Важно : при этом способе информация с дисков будет удалена!

Примечание : создать RAID-массив можно и из-под Windows (например, если вы хотите в целях безопасности сделать зеркальную копию своего диска).

1) И так, первым делом необходимо подключить диски к компьютеру (ноутбуку). Здесь на этом не останавливаюсь.

2) Далее нужно зайти в BIOS и установить 2 опции:

Затем нужно сохранить настройки (чаще всего это клавиша F10) и перезагрузить компьютер.

Nastroyki BIOS RAID

Intel Rapid Storage Technology

Intel Rapid Storage Technology

Create RAID Volume

Create RAID Volume

5) Теперь нужно указать:

После нажатия на кнопку Create Volume — RAID-массив будет создан, им можно будет пользоваться как обычным отдельным накопителем.

Create Volume

Nezanyatoe prostranstvo na diske ustanovka OS Windows 101

Как создать RAID 0, RAID 1 программно (в ОС Windows 10)

Рассмотрю ниже пару конкретных примеров.

2) Открываете управление дисками (для этого нужно: нажать Win+R, и в появившемся окне ввести команду diskmgmt.msc).

3) Теперь действия могут несколько отличаться.

Вариант 1 : допустим вы хотите объединить два новых диска в один, чтобы у вас был большой накопитель для разного рода файлов. В этом случае просто кликните правой кнопкой мышки по одному из новых дисков и выберите создание чередующегося тома (это подразумевает RAID 0). Далее укажите какие диски объединяете, файловую систему и пр.

Sozdat chereduyushhiysya ili zerkalnyiy tom

Создать чередующийся или зеркальный том

Svoystva diska

Вариант 2 : если же вы беспокоитесь за сохранность своих данных — то можно подключенный к системе новый диск сделать зеркальным вашему основному диску с ОС Windows, причем эта операция будет без потери данных (прим.: RAID 1).

Dobavit zerkalo

4) После Windows начнет автоматическую синхронизацию накопителей: т.е. с выбранного вами раздела все данные будут также скопированы на новый диск.

Resinhronizatsiya

5) В общем-то, всё, RAID 1 настроен — теперь при любых изменениях файлов на основном диске с Windows — они автоматически будут синхронизированы (перенесены) на второй диск.

6) Удалить зеркало, кстати, можно также из управления дисками : пример на скрине ниже.

Источник

Adblock
detector

RAID 0 (распределение) RAID 1 (зеркалирование)

mdadm – утилита для работы с программными RAID-массивами в Linux. В статье мы рассмотрим, как работать с утилитой mdadm (multiple disks admin) для создания массива, добавления дисков, управления дисками, добавление hot-spare и много другой полезной информации.

Содержание:

  • Установка утилиты управления программным RAID — mdadm
  • Создание RAID из 2-х дисков
  • Создание файловой системы на RAID, монтирование
  • Просмотр состояния, проверка целостности RAID массива
  • Восстановление RAID при сбое, замена диска
  • Добавление и удаление дисков в RAID массив на Linux
  • Добавление Hot-Spare диска в RAID массив
  • Удаление массива
  • Mdmonitor: Мониторинг состояния RAID и email оповещения
  • RAID массив в состоянии inactive

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

Чтобы установить утилиту mdadm, запустите команду установки:

  • Для Centos/Red Hat используется yum/dnf:
    yum install mdadm
  • Для Ubuntu/Debian:
    apt-get install mdadm

В резульатте в системе будет установлена сама утилита mdadm и необходимые библиотеки:

Running transaction Installing : libreport-filesystem-2.1.11-43.el7.centos.x86_64 1/2 Installing : mdadm-4.1-1.el7.x86_64 2/2 Verifying : mdadm-4.1-1.el7.x86_64 1/2 Verifying : libreport-filesystem-2.1.11-43.el7.centos.x86_64 2/2 Installed: mdadm.x86_64 0:4.1-1.el7 Dependency Installed: libreport-filesystem.x86_64 0:2.1.11-43.el7.centos Complete!

Создание RAID из 2-х дисков

У меня на сервере установлены два дополнительных диска и я хочу содать на низ програмное зеркало (RAID1). Диски пустые, данные на них не писались. Для начала, нужно занулить все суперблоки на дисках, которые мы будем добавлять в RAID-массив:

# mdadm --zero-superblock --force /dev/vd{b,c}

У меня два есть два чистых диска vdb и vdc. mdadm --zero-superblock - очистка дисков передо добавлением в raid

mdadm: Unrecognised md component device - /dev/vdb
mdadm: Unrecognised md component device - /dev/vdc

Данный листинг означает, что ни один из дисков ранее не был добавлен в массив.

Чтобы собрать программный RAID1 из двух дисков в устройстве /dev/md0, используйтк команду:

# mdadm --create --verbose /dev/md0 -l 1 -n 2 /dev/vd{b,c}

Где «-l 1» — это тип массива, в нашем случае RAID1

А «-n 2«- это количество дисков, которое добавляется в массив.

Если нужно создать RAID0 в режиме страйп (stripe) для увеличения скорости чтения/записи данных за счет распараллеливания команд между несколькими физическими дисками, используйте команду:

# mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/vdb /dev/vdc

RAID 5 из трех или более дисков:

# mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/ vdс /dev/vdd

После запуска команды, нужно подтвердить действия и массив будет создан:

mdadm - создать raid1 из 2-х дисков в Linux

Теперь при просмотре информации о дисках, мы видим наш массив:

# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 20G 0 disk
├─vda1 253:1 0 512M 0 part /boot
└─vda2 253:2 0 19.5G 0 part /
vdb 253:16 0 20G 0 disk
└─md0 9:0 0 20G 0 raid1
vdc 253:32 0 20G 0 disk
└─md0 9:0 0 20G 0 raid1

Создание файловой системы на RAID, монтирование

Чтобы создать файловую систему ext4 на нашем RAID1 массиве из двух дисков, используйте команду:

# mkfs.ext4 /dev/md0

создать файловую систему ext4 на raid томе

Создадим директорию backup и примонтируем к ней RAID устройство:

# mkdir /backup
# mount /dev/md0 /backup/

# df -h

Filesystem Size Used Avail Use% Mounted on
 devtmpfs 485M 0 485M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 44M 452M 9% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda2 20G 1.4G 19G 7% /
/dev/vda1 488M 100M 353M 23% /boot
tmpfs 100M 0 100M 0% /run/user/0
/dev/md0 20G 45M 19G 1% /backup

Массив смонтировался без ошибок. Чтобы не монтировать устройство каждый раз вручную, внесем изменения в fstab:

# nano /etc/fstab

/dev/md0 /backup ext4 defaults 1 2

fstab - авто-монтирование raid устройства в каталог

Просмотр состояния, проверка целостности RAID массива

Чтобы проверить целостность данных в массиве, используйте команду:

#echo 'check' > /sys/block/md0/md/sync_action

После чего, нужно посмотреть вывод файла:

#cat /sys/block/md0/md/mismatch_cnt

Если в результате вы получаете 0, то с вашим массивом все в порядке:

проверка целостности raid в linux

Чтобы остановить проверку, используйте команду:

#echo 'idle' > /sys/block/md0/md/sync_action

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

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 vdc[1] vdb[0]
20954112 blocks super 1.2 [2/2] [UU]

В листинге команды, видим информацию о нашем ранее созданном raid.

Более подробную информацию о конкретном raid-массиве, можно посмотреть командой:

# mdadm -D /dev/md0

mdadm -D /dev/md0 - получить информацию о raid массиве в linux

Разберем основные пункты листинга команды:

  • Version – версия метаданных;
  • Creation Time – дата и время создания raid-массива;
  • Raid Level – уровень raid-массива;
  • Array Size – объем дискового пространства для raid-массива;
  • Used Dev Size – используемый объем для устройств;
  • Raid Device – количество дисков в raid-массиве;
  • Total Devices – количество добавленных в raid-массив дисков;
  • State – текущее состояние (clean – все ОК);
  • Active Devices — количество активных дисков в raid-массиве;
  • Working Devises — количество рабочих дисков в raid-массиве;
  • Failed Devices – количество устройств со сбоями в raid-массиве;
  • Spare Devices – количество запасных дисков в raid-массиве;
  • Consistency Policy — параметр задающий тип синхронизации после сбоя в raid-массиве, rsync — полная синхронизация после восстановления raid-массива (доступны режимы bitmap, journal, ppl);
  • UUID – идентификатор raid-массива

Краткую информацию можно посмотреть с помощью утилиты fdisk:

# fdisk -l /dev/md0

Disk /dev/md0: 21.5 GB, 21457010688 bytes, 41908224 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

Восстановление RAID при сбое, замена диска

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

# cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 vdb[0]
20954112 blocks super 1.2 [2/1] [U_]

Из листинга команды, вы видим, что только один диск активен. Так же о проблеме говорит [U_]. Когда оба диска рабочие, вывод будет [UU].

Подробная информация о RAID-массиве также показывает, что естт проблемы:

# mdadm -D /dev/md0

/dev/md0:
Version : 1.2
Creation Time : Tue Oct 29 12:39:22 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Oct 29 14:41:13 2019
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1

State : clean, degraded
– данная строка указывает на то, что диск в raid-массиве поврежден.

В нашем случае нужно заменить неисправный диск /dev/vdc. Для восстановления массива, нужно удалить нерабочий диск и добавить новый.

Удаляем неиспраный диск:

# mdadm /dev/md0 --remove /dev/vdc

Добавляем в массив новый диск :

# mdadm /dev/md0 --add /dev/vdd

Восстановление диска запустится автоматически после добавления нового диска:

# mdadm -D /dev/md0

/dev/md0:
Version : 1.2
Creation Time : Tue Oct 29 12:39:22 2019
Raid Level : raid1
Array Size : 20954112 (19.98 GiB 21.46 GB)
Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Oct 29 14:50:20 2019
State : clean, degraded, recovering
Active Devices : 1
Working Devices : 2
Failed Devices : 0
Spare Devices : 1
Consistency Policy : resync
Rebuild Status : 69% complete
Name : server.vpn.ru:0 (local to host server.vpn.ru)
UUID : 9d59b1fb:7b0a7b6d:15a75459:8b1637a2
Events : 42
Number Major Minor RaidDevice State
0 253 16 0 active sync /dev/vdb
2 253 48 1 spare rebuilding /dev/vdd

rebuild Status : 69% complete
— показывает текущее состояние восстановления массива.

spare rebuilding /dev/vdd
— показывает какой диск добавляется к массиву.

После восстановления массива, листинг по дискам выглядит так:

State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Добавление и удаление дисков в RAID массив на Linux

Чтобы разобрать ранее созданный массив, нужно отмонтировать его :

# umount /backup

И выполнить команду:

# mdadm -S /dev/md0

mdadm: stopped /dev/md0

После разбора массива, он не должен определяться как устройство:

# mdadm -S /dev/md0

mdadm: error opening /dev/md0: No such file or directory

Чтобы собрать массив, который мы ранее разобрали вручную, запустите команду:

# mdadm --assemble —scan

mdadm --assemble —scan пересборка массива

Данная команда просканирует диски из разобранного или развалившегося RAID массива и по метаданным попробует собрать из них RAID.

Если вам нужно удалить рабочий диск из массива и заменить его на другой, нужно для начала пометить рабочий диск как нерабочий:

# mdadm /dev/md0 --fail /dev/vdc

После чего диск можно будет удалить командой::

# mdadm /dev/md0 --remove /dev/vdc

Добавляется новый диск, так же как и в случае с нерабочим диском:

# mdadm /dev/md0 --add /dev/vdd

Добавление Hot-Spare диска в RAID массив

Вы можете добавит в массив hot-spare диск для горячей замены при выходе из строя одного из активных дисков. Добавьте свободный диск в нужный массив:

# mdadm /dev/md0 --add /dev/vdc

После чего проверив статус raid-массива, мы увидим данный диск как spare:

mdadm - добавить hot-spare диск в raid массив

Чтобы проверить, сработает ли «горячая замена» диска, пометим любой из дисков как нерабочий и проверим статус raid-массива:

# mdadm /dev/md0 --fail /dev/vdb

После чего при проверке статуса массива, будет видно, что началась пересборка массива:

mdadm - faulty - сбойный диск

Диск /dev/vdb помечен как нерабочий, а hot-spare диск стал одним из активных дисков RAID и запустился процесс восстановления.

Чтобы добавить дополнительный рабочий диск в RAID, нужно выполнить два шага.

Добавить пустой диск массиву:

# mdadm /dev/md0 --add /dev/vdb

Теперь данный диск будет отображаться как hot-spare, чтобы сделать его рабочим, расширим raid-массив:

# mdadm -G /dev/md0 —raid-devices=3

После чего запустится процесс пересборки массива:

mdadm - програмный raid linux spare rebuilding

После выполнения пересборки, все диски стали активны:

Number Major Minor RaidDevice State
3 253 32 0 active sync /dev/vdc
2 253 48 1 active sync /dev/vdd
4 253 16 2 active sync /dev/vdb

Удаление массива

Если вы хотите безвозвратно удалить raid-массив, используйте следующую схему:

# umount /backup
– отмонтируем массив от директории

# mdadm -S /dev/md0
— останавливаем RAID устройство

После чего очищаем все суперблоки на дисках, из которых он был собран:

# mdadm --zero-superblock /dev/vdb
# mdadm --zero-superblock /dev/vdc

Mdmonitor: Мониторинг состояния RAID и email оповещения

Для мониторинга состояния RAID массива можно использовать службу mdmonitor. Сначала нужно создать файл /etc/mdadm.conf с конфигурацией текущего массива:

# mdadm –detail –scan > /etc/mdadm.conf

Конфигурационный файл mdadm.conf не создается автоматически. Его нужно создавать и актуализировать вручную.

В конце файла /etc/mdadm.conf добавьте email адрес администратора, на который нужно слать оповещения о проблемах с RAID:

MAILADDR [email protected]

Останолось перезапустить службу mdmonitor через systemctl:

# systemctl restart mdmonitor

После этого система будет оповещать вас по email об ошибках в mdadm и неисправных дисках.

RAID массив в состоянии inactive

При сбоях оборудования или аварийного выключения по питанию, массив может перейти в состояние inactive. Все диски помечаются как неактивные, но ошибок на дисках нет.

# cat /proc/mdstat

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive vdc[1] vdb[0]
20954112 blocks super
unused devices: <none>

В этом случае нужно остановить массив командой:

# mdadm --stop /dev/md0

И пересобрать его:

# mdadm --assemble --scan –force

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

# mount -a

Есть способы создания программного RAID на уже установленной ОС. В этом случае вам придется вручную скопировать таблицы всех разделов на новый диск, и вручную переместить содержимое системного диска на RAID из одного диска, очистить первый диск и добавить его в RAID, после чего поправить initramfs и загрузик GRUB. Поэтому все-таки лучше, если вы выберите режим установите CentOS на программный RAID при развертывании сервера.

Утилита mdadm упрощает работу с raid-массивами в Linux. В данной статье я описал основные моменты работы с данной утилитой, а также затронул самые частые вопросы, которые возникают при работе с raid-массивами через утилиту mdadm.

Соберу в одном месте список полезных команд для mdadm.

mdadm — утилита для управления программными RAID-массивами в Linux.

С помощью mdadm можно выполнять следующие операции:

  • mdadm —create, C Создать новый массив на основе указанных устройств. Использовать суперблоки размещённые на каждом устройстве.
  • mdadm —assemble, -A Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам.
  • mdadm —build, -B Собрать массив из компонентов, у которых нет суперблоков. Не выполняются никакие проверки, создание и сборка массива в принципе ничем не отличаются.
  • mdadm —manage Разнообразные операции по управлению массивом, такие как замена диска и пометка как сбойного.
  • mdadm —misc Действия, которые не относятся ни к одному из других режимов работы.
  • mdadm —grow, G Расширение или уменьшение массива, включаются или удаляются новые диски.
  • mdadm —incremental, I Добавление диска в массив.
  • mdadm —monitor, —follow, -F Следить за изменением состояния устройств. Для RAID0 этот режим не имеет смысла.

И другие: mdadm —help.

Формат вызова:

mdadm [mode] [array] [options]

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

Для создания массива нужно использовать не смонтированные разделы. Убедитесь в этом, при необходимости демонтируйте и уберите из fstab.

Пример создания RAID5 массива из трёх дисков:

  • /dev/nvme0n1
  • /dev/nvme1n1
  • /dev/nvme2n1

Я использую NVMe диски, у вас названия дисков будут другие.

Желательно изменить тип разделов на FD (Linux RAID autodetect). Это можно сделать с помощью fdisk (t).

Занулить суперблоки дисков:

mdadm --zero-superblock --force /dev/nvme0n1
mdadm --zero-superblock --force /dev/nvme1n1
mdadm --zero-superblock --force /dev/nvme2n1

Стереть подпись и метаданные:

wipefs --all --force /dev/nvme0n1
wipefs --all --force /dev/nvme1n1
wipefs --all --force /dev/nvme2n1

С помощью ключа —create создать RAID5 массив:

 mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1

где:

  • /dev/md0 — массив, который мы создаём;
  • —level 5 — уровень RAID;
  • —raid-devices=3 — количество дисков, из которых собирается массив;
  • /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 — диски.

Для примера RAID1 из двух дисков /dev/sdb и /dev/sdc можно создать так:

mdadm --create --verbose /dev/md2 -l 1 -n 2 /dev/sd{b,c}

где:

  • /dev/md2 — массив, который мы создаём;
  • -l 5 — уровень RAID;
  • -n 2 — количество дисков, из которых собирается массив;
  • /dev/sd{b,c} — диски sdb и sdc.

    Состояние массива

    Посмотреть инициализацию массива и текущее состояние можно с помощью команды:

    cat /proc/mdstat

    Пример 1:

    root@ch01:~# cat /proc/mdstat
    Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
    md127 : active raid1 nvme1n1[1] nvme0n1[0]
          3750607192 blocks super 1.2 [2/2] [UU]
    
    unused devices: <none>

    mdadm

    Пример 2:

    [root@dbk00 ~]# cat /proc/mdstat
    Personalities : [raid1] [raid0]
    md10 : active raid0 sdb1[1] sda1[0]
          70319335424 blocks super 1.2 512k chunks
    
    md20 : active raid0 sdc1[0] sdd1[1]
          70319335424 blocks super 1.2 512k chunks
    
    md126 : active raid1 sde[1] sdf[0]
          927881216 blocks super external:/md127/0 [2/2] [UU]
    
    md127 : inactive sdf[1](S) sde[0](S)
          10402 blocks super external:imsm
    
    unused devices: <none>

    Подробный статус выбранного массива

    mdadm --detail /dev/md2

    Пример:

    root@ch01:~# mdadm --detail /dev/md127
    /dev/md127:
               Version : 1.2
         Creation Time : Wed May  6 16:39:32 2020
            Raid Level : raid1
            Array Size : 3750607192 (3576.86 GiB 3840.62 GB)
         Used Dev Size : 3750607192 (3576.86 GiB 3840.62 GB)
          Raid Devices : 2
         Total Devices : 2
           Persistence : Superblock is persistent
    
           Update Time : Fri Aug 14 17:09:47 2020
                 State : clean
        Active Devices : 2
       Working Devices : 2
        Failed Devices : 0
         Spare Devices : 0
    
    Consistency Policy : resync
    
                  Name : VirtualDisk01
                  UUID : 1728ebed:ad0b0000:faad83b7:37070000
                Events : 173
    
        Number   Major   Minor   RaidDevice State
           0     259        0        0      active sync   /dev/nvme0n1
           1     259        1        1      active sync   /dev/nvme1n1

    mdadm

    Список массивов

    mdadm --detail --scan --verbose

    Пример:

    root@ch01:~# mdadm --detail --scan --verbose
    ARRAY /dev/md/VirtualDisk01 level=raid1 num-devices=2 metadata=1.2 name=VirtualDisk01 UUID=1728ebed:ad0b0000:faad83b7:37070000
       devices=/dev/nvme0n1,/dev/nvme1n1
    

    bash

    Создание файловой системы

    Файловую систему в массиве можно создать с помощью mkfs, например:

    mkfs.ext4 -m 0 /dev/md0

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

    mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/md0

    stripe-width обычно рассчитывается как

    stride * N

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

    mkfs.xfs -d su=64k,sw=3 /dev/md0

    Создание mdadm.conf

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

    mkdir /etc/mdadm
    echo "DEVICE partitions" > /etc/mdadm/mdadm.conf
    mdadm --detail --scan | awk '/ARRAY/ {print}' >> /etc/mdadm/mdadm.conf

    В интернете советуют применять команду mdadm —detail —scan —verbose, но я не рекомендую, т.к. она пишет в конфигурационный файл названия разделов, а они в некоторых случаях могут измениться, тогда RAID-массив не соберётся. А mdadm —detail —scan записывает UUID разделов, которые не изменятся.

    Проверка целостности массива

    echo 'check' >/sys/block/md0/md/sync_action

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

    cat /sys/block/md0/md/mismatch_cnt

    Работа с дисками

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

    mdadm /dev/md0 --fail /dev/nvme0n1
    mdadm /dev/md0 -f /dev/nvme0n1

    Удалить из массива отказавший диск:

    mdadm /dev/md0 --remove /dev/nvme0n1
    mdadm /dev/md0 -r /dev/nvme0n1

    Добавить в массив заменённый диск:

    mdadm /dev/md0 --add /dev/nvme0n1
    mdadm /dev/md0 -a /dev/nvme0n1

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

    Собрать существующий массив можно с помощью mdadm —assemble:

    mdadm --assemble /dev/md0 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1
    mdadm --assemble --scan

    Расширение массива

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

    mdadm /dev/md0 --add /dev/nvme3n1

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

    mdadm --detail /dev/md0
    cat /proc/mdstat

    Если диск добавился, расширяем массив:

    mdadm -G /dev/md0 --raid-devices=4

    Опция —raid-devices указывает новое количество дисков в массиве с учётом добавленного. Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например, добавить опцию:

    --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

    Возобновление отложенной синхронизации resync=PENDING

    Если синхронизации массива отложена, состояние массива resync=PENDING, то синхронизацию можно возобновить:

    echo idle > /sys/block/md0/md/sync_action

    или

    mdadm --readwrite /dev/md0

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

    Останавливаем массив:

    umount /dev/md0
    mdadm --stop /dev/md0

    Собираем массив с новым именем:

    mdadm --assemble /dev/md3 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 --update=name

    Или для старых версий:

    mdadm –assemble /dev/md3 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 –update=super-minor

    Удаление массива

    Останавливаем массив:

    umount /dev/md0
    mdadm --stop /dev/md0

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

    mdadm --zero-superblock --force /dev/nvme0n1
    mdadm --zero-superblock --force /dev/nvme1n1
    mdadm --zero-superblock --force /dev/nvme2n1

    Или с помощью dd:

    dd if=/dev/zero of=/dev/nvme0n1 bs=512 count=1
    dd if=/dev/zero of=/dev/nvme1n1 bs=512 count=1
    dd if=/dev/zero of=/dev/nvme2n1 bs=512 count=1

    Привет, %хабрачитатель%!

    Несколько месяцев назад у нас возникли проблемы с одной виртуальной машиной, запущенной на сервере Dell PowerEdge R720 с ESXi 5.5. Перезагрузка этой VM длилась довольно долго и вызвала сильное падение производительности на самом хосте.
    Lifecycle-лог на сервере был наполнен сообщениями вида:

    PDR47
    A block on Disk 0 in Backplane 1 of Integrated RAID Controller 1 was
    punctured by the controller.

    PDR64
    An unrecoverable disk media error occurred on Disk 0 in Backplane 1 of
    Integrated RAID Controller 1.

    Гугление привело к неутешительному выводу: рейд-массив поврежден и восстановить его невозможно. А именно — повредились данные, относящиеся к одному блоку (страйпу), сразу на нескольких дисках (double fault):

    К счастью, делловские RAID-контроллеры обладают фичей продолжать работу, несмотря на неконсисентное состояние массива — puncture (https://www.dell.com/support/Article/us/en/04/438291/EN#Unique-Hyphenated-Issue-Here-2), что позволяет сохранить хотя бы ту часть данных, которая не повредились. Это, конечно, не никак отменяет необходимость последующей замены дисков и пересборки рейд-массива «с нуля».
    Для предотвращения подобных ситуаций Dell рекомендует запускать проверку целостности массива не реже одного раза в месяц. Увы, но мы об этом узнали слишком поздно.

    Такую проверку можно запускать как через веб-интерфейс Dell OpenManage Server Administrator (http://www.dell.com/support/contents/us/en/19/article/Product-Support/Self-support-Knowledgebase/enterprise-resource-center/Enterprise-Tools/OMSA/), так и через утилиты omconfig/omreport, входящие в OMSA. И, если бы разработчики из Dell не «забыли» включить эти утилиты в OpenManage для ESXi, то проблем с автоматизацией бы не возникло, т.к. понятно, что ручная проверка целостности массива на каждом сервере, совершенно не IT-way. Не говоря уже о том, что интерфейс OMSA очень медленный и работать с ним удовольствие еще то.
    Ребята из Dell «поработали на славу» и простым способом автоматизировать проверку (например, через открытие в cURL заранее подготовленной ссылки) невозможно, т.к. веб-интерфейс генерируется динамически и постоянные ссылки в нем отсутствуют.

    Что же делать?

    Пришлось немного повозиться и написать утилиту проверки самому. Встречайте: Consistency Check Task Automation Tool for Dell servers with iDRAC (https://github.com/jazzl0ver/dell_raid_cc). Утилита написана с помощью фреймворка CasperJS, который позволяет автоматизировать работу как раз с подобными динамическими сайтами.

    Для использования dell_raid_cc необходимо:
    1. Сервер с установленным OMSA (см. ссылку выше)
    2. Скачать и установить phantomjs (http://phantomjs.org/download.html)
    3. Скачать и установить casperjs (http://docs.casperjs.org/en/latest/installation.html)
    4. Вытащить утилиту из git:
    git clone https://github.com/jazzl0ver/dell_raid_cc
    5. Создать файл с параметрами доступа (например, creds.txt):
    export OMSAHOST=192.168.1.191
    export OMSAPORT=1311
    export USERNAME=root
    export PASSWORD=password
    export DELLHOST=192.168.1.30

    6. Загрузить его и можно запускать утилиту или ставить ее запуск в кронтаб:
    source creds.txt
    casperjs --ignore-ssl-errors=true --cookies-file=/tmp/dell_raid_cc_cookie.jar dell_raid_cc.js

    Если все в порядке, то вывод будет примерно такой:

    Found: Virtual Disk 0 [state: Ready; layout: RAID-10; size: 1,862.00GB]
    CC for Virtual Disk 0 has been started
    Found: Virtual Disk 1 [state: Ready; layout: RAID-1; size: 931.00GB]
    CC for Virtual Disk 1 has been started

    Если запустить еще раз, можно увидеть прогресс проверки, например:

    Found: Virtual Disk 0 [state: Resynching; layout: RAID-6; size: 5,026.50GB]
    CC for Virtual Disk 0 is still running, progress: 19% complete

    Стоит сказать, что утилита не поддерживает многоконтроллерные системы (у меня просто таких нет и протестировать, соответственно, не на чем).

    Надеюсь, утилита окажется полезной не только мне.

    UPD. Как подсказали коллеги в комментариях, более правильно настроить запуск проверки на целостность по расписанию с помощью утилиты megacli. Например:

    ./MegaCli -AdpCcSched -SetStartTime 20140822 04 -aALL

    Инструкции по установке на сервер с CentOS/RedHat — здесь
    Настройка расписания CC — здесь

    Под ESXi также легко устанавливается. Можно поставить vib напрямую, либо сделать из него bundle и поставить в качестве обновления через vCenter.

    UPD. #2 Контроллеры Perc5 не поддерживают настройку расписания через MegaCli:

    cd /opt/lsi/MegaCLI; ./MegaCli -AdpCcSched -Info -aALL

    Adapter 0: Scheduled Chceck Consistency is not supported.

    Exit Code: 0x01

    Для них использование dell_raid_cc — единственный способ автоматизации.

    Рассмотрим порядок действий проверки дисков выделенного сервера, с которого пришла ошибка SMART, выявления и замены неисправного диска в массиве Raid-1.

    1. Вводим команду для проверки состояния raid

    cat /proc/mdstat

    1. Если в выводе в квадратных скобках стоит знак _ (например [U_]) — диск требуется заменить (он выпал из рейда).

    в данном примере всё с raid всё в порядке. Если бы было так: [U_], то диск sdb неисправен, если так: [_U], то sda (смотрим порядок в md-устройствах, например: md2 : active raid1 sda3[2] sdb3[3])

    1. Если raid в порядке, то нужно проверить каждый диск отдельно следующей командой: 

    smartctl -a /dev/sd[X]

    [X] меняем на a или b в зависимости от диска, список дисков можно посмотреть командой:

    ls -l /dev/ | grep sd

    Оцениваем состояние диска по параметрам и выявляем неисправный, смотрим:

    • количество перераспределенных секторов (Reallocated Sector)
    • количество часов работы
    • наличие ошибок смарт (сделайте коротки и расширенный тест SMART)
    • нагрузка на диск в atop
    • и другие параметры, определение неисправного диска по параметрам SMART, это тема отдельной статьи, поищите подробную информацию в интернете.
    1. Узнаём серийный номер неисправного диска командой:

    smartctl -a /dev/sd[X]

    1. Перед заменой диска крайне желательно необходимо сделать резервную копию данных
    2. Отключаем поврежденный диск от рейда. Для этого нужно пометить разделы диска как сбойные и изъять их из массива, для этого воспользуемся командой:

    mdadm /dev/md0 -f /dev/sdb1 &&mdadm /dev/md0 -r /dev/sdb1

    В зависимости от количества разделов выполняем соответственно для разных разделов:

    mdadm /dev/md1 -f /dev/sdb2 &&mdadm /dev/md1 -r /dev/sdb2
    mdadm /dev/md2 -f /dev/sdb3 &&mdadm /dev/md2 -r /dev/sdb3

    Далее команда на удаление из RAID

    mdadm /dev/md0 --remove /dev/sdb1
    mdadm /dev/md1 --remove /dev/sdb2
    mdadm /dev/md2 --remove /dev/sdb3

    1. Отправляем в дата-центр запрос на замену, к запросу также прикладываем модель и серийный номер исправного диска, узнать их можно командой:

    hdparm -i /dev/

    1. После замены диска новый диск нужно разбить, в зависимости от типа разбиения диска (MBR или GPT).

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

    gdisk -l /dev/sda

    на не замененном диске

    После этого выполнить команду:

    sfdisk -d /dev/sda | sfdisk /dev/sdb

    (для MBR), и

    sgdisk -R /dev/sdb /dev/sda

    (структура разделов в этой команде копируется из /dev/sda в /dev/sdb)

    sgdisk -G /dev/sdb

    (для GPT)

    1. Добавить новый диск в массив командами:

    mdadm /dev/md0 -a /dev/sdb1
    mdadm /dev/md1 -a /dev/sdb2
    mdadm /dev/md2 -a /dev/sdb3

    1. Добавить загрузчик командой:

    grub-install /dev/sdb

    Обновлено Обновлено: 10.12.2022
    Опубликовано Опубликовано: 08.03.2019

    Тематические термины: RAID, Linux

    mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

    Установка утилиты mdadm
    Создание RAID
        Подготовка носителей
        Сборка отказоустойчивого массива
    Файл mdadm.conf
    Создание файловой системы и монтирование
    Получение информации о RAID
    Проверка целостности массива
    Восстановление RAID
        Заменой диска
        Пересборка массива
    Использование Hot Spare
    Добавление диска к массиву
    Удаление массива

    Установка mdadm

    Утилита mdadm может быть установлена одной командой.

    Если используем CentOS / Red Hat:

    yum install mdadm

    Если используем Ubuntu / Debian:

    apt-get install mdadm

    Сборка 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-х дисков.

    Создание файловой системы и монтирование массива

    Создание файловой системы для массива выполняется также, как для раздела, например:

    mkfs.ext4 /dev/md0

    * данной командой мы создаем на md0 файловую систему ext4.

    или:

    mkfs.xfs /dev/md0

    * для файловой системы xfs.

    Примонтировать раздел можно командой:

    mount /dev/md0 /mnt

    * в данном случае мы примонтировали наш массив в каталог /mnt.

    Чтобы данный раздел также монтировался при загрузке системы, добавляем в fstab.

    Сначала смотрим идентификатор раздела:

    blkid

    Мы увидим что-то на подобие:

    /dev/md0: UUID=»ffa7c082-7613-4dbc-ae62-3f5508652cf6″ TYPE=»ext4″

    * в моем примере мы будем использовать идентификатор ffa7c082-7613-4dbc-ae62-3f5508652cf6.

    Открываем теперь fstab и добавляем строку:

    vi /etc/fstab

    UUID=»ffa7c082-7613-4dbc-ae62-3f5508652cf6″    /mnt    ext4    defaults    0 0

    Если ранее мы монтировали раздел в каталог /mnt, вводим:

    umount /mnt

    И после: 

    mount -a

    Мы должны увидеть примонтированный раздел md, например:

    df -h

    /dev/md0               990M         2,6M  921M            1% /mnt

    Информация о RAID

    Посмотреть состояние всех RAID можно командой:

    cat /proc/mdstat

    В ответ мы получим что-то на подобие:

    md0 : active raid1 sdc[1] sdb[0]
          1046528 blocks super 1.2 [2/2] [UU]

    * где md0 — имя RAID устройства; raid1 sdc[1] sdb[0] — уровень избыточности и из каких дисков собран; 1046528 blocks — размер массива; [2/2] [UU] — количество юнитов, которые на данный момент используются.
    ** мы можем увидеть строку 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

    Проверка целостности

    Для проверки целостности вводим:

    echo ‘check’ > /sys/block/md0/md/sync_action

    Результат проверки смотрим командой:

    cat /sys/block/md0/md/mismatch_cnt

    * если команда возвращает 0, то с массивом все в порядке.

    Остановка проверки:

    echo ‘idle’ > /sys/block/md0/md/sync_action

    Восстановление RAID

    Рассмотрим два варианта восстановлении массива.

    Замена диска

    В случае выхода из строя одного из дисков массива, команда cat /proc/mdstat покажет следующее:

    cat /proc/mdstat

    Personalities : [raid1] 
    md0 : active raid1 sdb[0]
          1046528 blocks super 1.2 [2/1] [U_]

    * о наличии проблемы нам говорит нижнее подчеркивание вместо U — [U_] вместо [UU].

    Или:

    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

    Запасной диск (Hot Spare)

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

    Диском Hot Spare станет тот, который просто будет добавлен к массиву:

    mdadm /dev/md0 —add /dev/sdd

    Информация о массиве изменится, например:

    mdadm -D /dev/md0


        Number   Major   Minor   RaidDevice State
           0       8       16        0      active sync   /dev/sdb
           2       8       48        1      active sync   /dev/sdc

           3       8       32        —      spare   /dev/sdd

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

    mdadm /dev/md0 —fail /dev/sdb

    И смотрим состояние:

    mdadm -D /dev/md0


        Rebuild Status : 37% complete

        Number   Major   Minor   RaidDevice State
           3       8       32        0      spare rebuilding   /dev/sdd
           2       8       48        1      active sync   /dev/sdc

           0       8       16        —      faulty   /dev/sdb

    * как видим, начинается ребилд. На замену вышедшему из строя sdb встал hot-spare sdd.

    Добавить диск к массиву

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

    Добавляем диск к массиву:

    mdadm /dev/md0 —add /dev/sde

    Новый диск мы увидим в качестве spare:

    4       8       16        —      spare   /dev/sde

    Теперь расширяем RAID:

    mdadm -G /dev/md0 —raid-devices=3

    * в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.

    Удаление массива

    При удалении массива внимателнее смотрите на имена массива и дисков и подставляйте свои значения.

    Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:

    umount /mnt

    * где /mnt — каталог монтирования нашего RAID.

    mdadm -S /dev/md0

    * где /dev/md0 — массив, который мы хотим разобрать.
    * если мы получим ошибку mdadm: fail to stop array /dev/md0: Device or resource busy, с помощью команды lsof -f — /dev/md0 смотрим процессы, которые используют раздел и останавливаем их.

    Затем очищаем суперблоки на всех дисках, из которых он был собран:

    mdadm —zero-superblock /dev/sdb

    mdadm —zero-superblock /dev/sdc

    mdadm —zero-superblock /dev/sdd

    * где диски /dev/sdb/dev/sdc/dev/sdd были частью массива md0.

    А также удаляем метаданные и подпись:

    wipefs —all —force /dev/sd{b,c,d}

    Управление дисковым массивом работающего на аппаратном контроллере LSI MegaRAID, мы рекомендуем производить с помощью консольного клиента MegaCLI

    Установка MegaCLI:

    wget http://www.lsi.com/downloads/Public/RAID%20Controllers/RAID%20Controllers%20Common%20Files/.zip
    unzip 8.07.07_MegaCLI.zip
    cd 8.07.07_MegaCLI/
    chmod +x MegaCli
    Основные команды для работы:

    Получить статус и конфигурацию всех адаптеров

    megacli -AdpAllInfo -aAll
    Cтатус и параметры всех логических дисков

    megacli -LDInfo -LAll -aAll
    Статус и параметры физических устройств

    megacli -PDList -a0
    Статус и параметры диска в 4-м слоте

    megacli -pdInfo -PhysDrv[252:4] -a0
    Создание RAID6 массив MegaCLI

    Давайте предположим, что у нас есть сервер с MegaRAID SAS

    Получим список физических дисков:

    megacli -PDlist -a0 | grep -e ‘^Enclosure Device ID:’ -e ‘^Slot Number:’
    Enclosure Device ID: 29
    Slot Number: 0
    Enclosure Device ID: 29
    Slot Number: 1
    Enclosure Device ID: 29
    Slot Number: 2
    Enclosure Device ID: 29
    Slot Number: 3
    Enclosure Device ID: 29
    Slot Number: 4
    Enclosure Device ID: 29
    Slot Number: 5
    Enclosure Device ID: 29
    Slot Number: 6
    Enclosure Device ID: 29
    Slot Number: 7
    Enclosure Device ID: 29
    Slot Number: 8
    Enclosure Device ID: 245
    Slot Number: 12

    Пример конфигурирования JBOD на LSI 2208 (Supermicro X9DRH-7TF) При загрузке BIOS эти команды можно выполнить если зайти в preboot CLI по комбинации клавиш Ctrl+Y

    Команды megacli и preboot CLI различаются по виду.

    Например команда проверки поддержки JBOD для BIOS preboot CLI будет выглядеть так:

    AdpGetProp enablejbod -aALL
    А для megacli это используется как набор опций и параметров:
    megacli -AdpGetProp enablejbod -aALL
    Включить поддержку JBOB
    megacli -AdpSetProp EnableJBOD 1 -aALL
    Список доступных физических устройств:

    megacli -PDList -aALL -page24
    В списке надо найти значения полей Enclosure Device ID (например 252), Slot Number и Firmware state
    Нужно отметить каждое из устройств которое надо сделать JBOD, как Good в поле Firmware state .

    megacli -PDMakeGood -PhysDrv[252:0] -Force -a0
    Или сразу много устройств:

    megacli -PDMakeGood -PhysDrv[252:1,252:2,252:3,252:4,252:5,252:6,252:7] -Force -a0
    Теперь можно создавать JBOD

    megacli -PDMakeJBOD -PhysDrv[252:0] -a0
    megacli -PDMakeJBOD -PhysDrv[252:1,252:2,252:3,252:4,252:5,252:6,252:7] -a0
    Создать виртуальный диск RAID

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

    megacli -CfgLdDel -Lall -aAll
    Для того чтобы удалить всё (в том числе политику кэша) используйте «Очистку конфигурации»

    megacli -CfgClr -aAll
    Настройка RAID-0, 1 или 5. Вместо «r0» введите соответственно «r1» или «r5» (диски находятся в Enclosure 29, на портах 0 и 1, WriteBack включен, ReadCache адаптивный, Cache также включен без BBU)

    megacli -CfgLdAdd -r0 [29:0,29:1] WB ADRA Cached CachedBadBBU -sz196GB -a0
    Создать RAID10 Получить список дисков

    megacli -PDList -aAll | egrep «Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state»

    Создать массив из 6 дисков

    megacli -CfgSpanAdd -r10 -Array0[252:0,252:1] -Array1[252:2,252:4] [-Array2[252:5,252:6] -a0
    Показать как диски были определены в RAID-массиве:

    megacli -CfgDsply -a0
    Удалить массив с ID=2

    MegaCli –CfgLDDel -L2 -a0
    Инициализация массива Начать полную инициализацию для массива с ID=0

    MegaCli -LDInit -Start -full -L0 -a0
    Проверить текущий статус инициализации:

    MegaCli -LDInit -ShowProg -L0 -a0
    Управление CacheCade

    Создать и назначить CacheCade для массива 0 (-L0) из зеркала (-r1) в режиме обратной записи (WB) на основе SSD дисков в слотах 6 и 7 (-Physdrv[252:6,252:7])

    megacli -CfgCacheCadeAdd -r1 -Physdrv[252:6,252:7] WB -assign -L0 -a0
    Включить

    megacli -Cachecade -assign -L0 -a0
    Отключить

    megacli -Cachecade -remove -L0 -a0
    Successfully removed VD from Cache
    Просмотреть состояние:

    megacli -CfgCacheCadeDsply -a0
    megacli -LDInfo -LAll -a0
    Замена неисправного диска

    Отключить писк:

    megacli -AdpSetProp -AlarmSilence -a0
    Обратите внимание, что это не навсегда отключает сигнализацию, а просто выключает сигнал по текущей аварии.
    Просмотреть состояние диска (подставьте нужное значение [E:S]):

    megacli -pdInfo -PhysDrv [29:8] -a0
    Пометить диск требующий замены как потерянный (если контроллер не сделал этого сам)

    megacli -PDMarkMissing -PhysDrv [E:S] -aN
    Получить параметры потерянного диска

    megacli -Pdgetmissing -a0
    Вы должны получить ответ подобный этому:

    Adapter 0 — Missing Physical drives
    No. Array Row Size Expected
    0 0 4 1907200 MB
    Подсветить диск который надо менять (подставьте нужное значение [E:S]):

    megacli -PdLocate -start -PhysDrv [29:8] -a0
    На некоторых шасси могут быть проблемы с индикацией. Это лечится такой командой:

    megacli -AdpSetProp {UseDiskActivityforLocate -1} -aALL
    В этом случае для маркировки диска будет использоваться лампочка активности.

    Удаляем неисправный и вставляем новый диск.

    Прекращаем подсветку и проверяем состояние диска:

    megacli -PdLocate -stop -PhysDrv [29:8] -a0
    megacli -pdInfo -PhysDrv [29:8] -a0
    Может так случится, что он содержит метаданные от другого массива RAID (Foreign Configuration). Ваш контроллер не позволит использовать такой диск. Для проверки наличия Foreign Configuration

    megacli -CfgForeign -Scan -aALL
    Команда удаления Foreign Configuration (если вы уверены)

    megacli -CfgForeign -Сlear -aALL<code>

    Запускаем процесс замены
    <code>megacli -PdReplaceMissing -PhysDrv [32:4] -Array0 -row4 -a0
    [32:4] — это параметры диска которым вы меняете неисправный
    Rebuild drive

    megacli -PDRbld -Start -PhysDrv [32:4] -a0
    Проверка процесса ребилда
    megacli -PDRbld -ShowProg -PhysDrv [32:4] -a0
    Использование smartctl

    Получить список id

    megacli -PDlist -a0 | grep ‘^Device Id:’| awk ‘{print $3}’
    Получить данные смарт по диску с ID=9

    smartctl /dev/sda -d megaraid,9 -a
    для диска с интерфейсом sata
    smartctl /dev/sda -d sat+megaraid,9 -a
    пример скрипта для получения данных о всех дисках

    #!/bin/sh

    for arg in `megacli -PDlist -a0 | grep ‘^Device Id:’| awk ‘{print $3}’`
    do
    smartctl /dev/sda -d sat+megaraid,${arg} -l devstat
    #smartctl /dev/sda -d sat+megaraid,${arg} -a
    done
    Для контроля состояния дисков с помощью демона smartd нужно закомментировать DEVICESCAN в /etc/smartd.conf и добавить:

    /dev/sda -d sat+megaraid,0 -a -s L/../../3/02
    /dev/sda -d sat+megaraid,1 -a -s L/../../3/03
    /dev/sda -d sat+megaraid,2 -a -s L/../../3/04
    /dev/sda -d sat+megaraid,3 -a -s L/../../3/05
    Значения параметров типа /3/02 — /3/05 определяют время запуска тестов для заданного диска

    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии

    А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Как проверить php страницу на ошибки
  • Как проверить outlook на ошибки