Содержание
Эта страница целиком списана с исходной, где рассматриваются вопросы создания и обслуживания программного 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.
Рекомендуется задать файл бэкапа на случай прерывания перестроения массива, например добавить:
-
-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. (англ.)
Contents
- 1 Detecting, querying and testing
- 1.1 Detecting a drive failure
- 1.2 Querying the array status
- 1.3 Simulating a drive failure
- 1.3.1 Force-fail by hardware
- 1.3.2 Force-fail by software
- 1.4 Simulating data corruption
- 1.5 Monitoring RAID arrays
Detecting, querying and testing
This section is about life with a software RAID system, that’s
communicating with the arrays and tinkertoying them.
Note that when it comes to md devices manipulation, you should always
remember that you are working with entire filesystems. So, although
there could be some redundancy to keep your files alive, you must
proceed with caution.
Detecting a drive failure
Firstly: mdadm has an excellent ‘monitor’ mode which will send an email when a problem is detected in any array (more about that later).
Of course the standard log and stat files will record more details about a drive failure.
It’s always a must for /var/log/messages to fill screens with tons of
error messages, no matter what happened. But, when it’s about a disk
crash, huge lots of kernel errors are reported. Some nasty examples,
for the masochists,
kernel: scsi0 channel 0 : resetting for second half of retries. kernel: SCSI bus is being reset for host 0 channel 0. kernel: scsi0: Sending Bus Device Reset CCB #2666 to Target 0 kernel: scsi0: Bus Device Reset CCB #2666 to Target 0 Completed kernel: scsi : aborting command due to timeout : pid 2649, scsi0, channel 0, id 0, lun 0 Write (6) 18 33 11 24 00 kernel: scsi0: Aborting CCB #2669 to Target 0 kernel: SCSI host 0 channel 0 reset (pid 2644) timed out - trying harder kernel: SCSI bus is being reset for host 0 channel 0. kernel: scsi0: CCB #2669 to Target 0 Aborted kernel: scsi0: Resetting BusLogic BT-958 due to Target 0 kernel: scsi0: *** BusLogic BT-958 Initialized Successfully ***
Most often, disk failures look like these,
kernel: sidisk I/O error: dev 08:01, sector 1590410 kernel: SCSI disk error : host 0 channel 0 id 0 lun 0 return code = 28000002
or these
kernel: hde: read_intr: error=0x10 { SectorIdNotFound }, CHS=31563/14/35, sector=0 kernel: hde: read_intr: status=0x59 { DriveReady SeekComplete DataRequest Error }
And, as expected, the classic /proc/mdstat look will also reveal problems,
Personalities : [linear] [raid0] [raid1] [translucent] read_ahead not set md7 : active raid1 sdc9[0] sdd5[8] 32000 blocks [2/1] [U_]
Later on this section we will learn how to monitor RAID with mdadm so
we can receive alert reports about disk failures. Now it’s time to
learn more about /proc/mdstat interpretation.
Querying the array status
You can always take a look at the array status by doing cat /proc/mdstat
It won’t hurt. Take a look at the /proc/mdstat page to learn how to read the file.
Finally, remember that you can also use mdadm to check
the arrays out.
mdadm --detail /dev/mdx
These commands will show spare and failed disks loud and clear.
Simulating a drive failure
If you plan to use RAID to get fault-tolerance, you may also want to
test your setup, to see if it really works. Now, how does one
simulate a disk failure?
The short story is, that you can’t, except perhaps for putting a fire
axe thru the drive you want to «simulate» the fault on. You can never
know what will happen if a drive dies. It may electrically take the
bus it is attached to with it, rendering all drives on that bus
inaccessible. The drive may also just report a read/write fault
to the SCSI/IDE/SATA layer, which, if done properly, in turn makes the RAID layer handle this
situation gracefully. This is fortunately the way things often go.
Remember, that you must be running RAID-{1,4,5,6,10} for your array to be
able to survive a disk failure. Linear- or RAID-0 will fail
completely when a device is missing.
Force-fail by hardware
If you want to simulate a drive failure, you can just plug out the
drive. If your HW does not support disk hot-unplugging, you should do this with the power off (if you are interested in testing whether your data can survive with a disk less than the usual number, there is no point in being a hot-plug cowboy here. Take the system down, unplug the disk, and boot it up again)
Look in the syslog, and look at /proc/mdstat to see how the RAID is
doing. Did it work? Did you get an email from the mdadm monitor?
Faulty disks should appear marked with an (F) if you look at
/proc/mdstat. Also, users of mdadm should see the device state as
faulty.
When you’ve re-connected the disk again (with the power off, of
course, remember), you can add the «new» device to the RAID again,
with the mdadm —add’ command.
Force-fail by software
You can just simulate a drive failure without unplugging things.
Just running the command
mdadm --manage --set-faulty /dev/md1 /dev/sdc2
should be enough to fail the disk /dev/sdc2 of the array /dev/md1.
Now things move up and fun appears. First, you should see something
like the first line of this on your system’s log. Something like the
second line will appear if you have spare disks configured.
kernel: raid1: Disk failure on sdc2, disabling device. kernel: md1: resyncing spare disk sdb7 to replace failed disk
Checking /proc/mdstat out will show the degraded array. If there was a
spare disk available, reconstruction should have started.
Another useful command at this point is:
mdadm --detail /dev/md1
Enjoy the view.
Now you’ve seen how it goes when a device fails. Let’s fix things up.
First, we will remove the failed disk from the array. Run the command
mdadm /dev/md1 -r /dev/sdc2
Note that mdadm cannot pull a disk out of a running array.
For obvious reasons, only faulty disks can be hot-removed from an
array (even stopping and unmounting the device won’t help — if you ever want
to remove a ‘good’ disk, you have to tell the array to put it into the
‘failed’ state as above).
Now we have a /dev/md1 which has just lost a device. This could be a
degraded RAID or perhaps a system in the middle of a reconstruction
process. We wait until recovery ends before setting things back to
normal.
So the trip ends when we send /dev/sdc2 back home.
mdadm /dev/md1 -a /dev/sdc2
As the prodigal son returns to the array, we’ll see it becoming an
active member of /dev/md1 if necessary. If not, it will be marked as
a spare disk. That’s management made easy.
Simulating data corruption
RAID (be it hardware or software), assumes that if a write to a disk
doesn’t return an error, then the write was successful. Therefore, if
your disk corrupts data without returning an error, your data will
become corrupted. This is of course very unlikely to happen, but it
is possible, and it would result in a corrupt filesystem.
RAID cannot, and is not supposed to, guard against data corruption on
the media. Therefore, it doesn’t make any sense either, to purposely
corrupt data (using dd for example) on a disk to see how the RAID
system will handle that. It is most likely (unless you corrupt the
RAID superblock) that the RAID layer will never find out about the
corruption, but your filesystem on the RAID device will be corrupted.
This is the way things are supposed to work. RAID is not a guarantee
for data integrity, it just allows you to keep your data if a disk
dies (that is, with RAID levels above or equal one, of course).
Monitoring RAID arrays
You can run mdadm as a daemon by using the follow-monitor mode. If
needed, that will make mdadm send email alerts to the system
administrator when arrays encounter errors or fail. Also, follow mode
can be used to trigger contingency commands if a disk fails, like
giving a second chance to a failed disk by removing and reinserting
it, so a non-fatal failure could be automatically solved.
Let’s see a basic example. Running
mdadm --monitor --daemonise --mail=root@localhost --delay=1800 /dev/md2
should release a mdadm daemon to monitor /dev/md2. The —daemonise switch tells mdadm to run as a deamon. The delay parameter means that polling will be done in intervals of 1800 seconds.
Finally, critical events and fatal errors should be e-mailed to the
system manager. That’s RAID monitoring made easy.
Finally, the —program or —alert parameters specify the program to be
run whenever an event is detected.
Note that, when supplying the -f switch, the mdadm daemon will never exit once it decides that there
are arrays to monitor, so it should normally be run in the background.
Remember that your are running a daemon, not a shell command.
If mdadm is ran to monitor without the -f switch, it will behave as a normal shell command and wait for you to stop it.
Using mdadm to monitor a RAID array is simple and effective. However,
there are fundamental problems with that kind of monitoring — what
happens, for example, if the mdadm daemon stops? In order to overcome
this problem, one should look towards «real» monitoring solutions.
There are a number of free software, open source, and even commercial
solutions available which can be used for Software RAID monitoring on
Linux. A search on FreshMeat should return a good number of matches.
Содержание
- Как проверить raid массив windows
- Поиск и замена диска поврежденного диска в Raid-1
- Главная > Восстановление Данных при помощи R-Studio > Наборы Томов и RAID > Проверка Целостности Данных RAID
- Элементы управления окна Проверка корректности RAID
- Мониторинг raid массивов в Windows Core
- Объединение 2-х дисков в 1: настройка RAID-массива на домашнем компьютере (просто о сложном)
- Настройка RAID
- Основы, какими могут быть RAID массивы (т.е. то, как будем объединять диски)
- Пару слов о дисках и мат. плате
- Пример настройки RAID 0 в BIOS
- Как создать RAID 0, RAID 1 программно (в ОС Windows 10)
Как проверить raid массив windows
Сообщения: 26925
Благодарности: 3917
Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.
Сообщения: 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″>
Сообщения: 8627
Благодарности: 2126
Видимо у вас там два RAID-1 по два диска. И вы видите не физические диски, а фиктивные, которыми и являются RAID (видимо те самые два «Intel MegaSR SCSI Disk Device» – и пускай вас не смущают слова SCSI и SAS).
Источник
Поиск и замена диска поврежденного диска в Raid-1
Рассмотрим порядок действий проверки дисков выделенного сервера, с которого пришла ошибка SMART, выявления и замены неисправного диска в массиве Raid-1.
в данном примере всё с raid всё в порядке. Если бы было так: [U_], то диск sdb неисправен, если так: [_U], то sda (смотрим порядок в md-устройствах, например: md2 : active raid1 sda3[2] sdb3[3])
[X] меняем на a или b в зависимости от диска, список дисков можно посмотреть командой:
Оцениваем состояние диска по параметрам и выявляем неисправный, смотрим:
В зависимости от количества разделов выполняем соответственно для разных разделов:
Далее команда на удаление из RAID
Для проверки типа разбиения надо выполнить следующую команду:
на не замененном диске
После этого выполнить команду:
(для MBR), и
(структура разделов в этой команде копируется из /dev/sda в /dev/sdb)
(для GPT)
Источник
Главная > Восстановление Данных при помощи R-Studio > Наборы Томов и RAID > Проверка Целостности Данных RAID
Вы можете проверить целостность данных RAID (правильность блоков четности на RAID).
Чтобы проверить целостность данных RAID
* | Щелкните правой кнопкой мыши по RAID и выберите пункт Проверить корректность RAID. контекстного меню |
> | Откроется окно Проверка корректности RAID, в котором будет отображаться ход выполнения (прогресс) операции. |
Окно Проверка корректности RAID
После окончания проверки можно просмотреть ее результаты.
Блок четности RAID корректен.
Блок четности RAID некорректен.
Если подвести указатель мыши к блоку, то можно будет увидеть номера находящихся в нем секторов, а также число корректных и некорректных секторов. Если дважды щелкнуть по блоку мышью, то он сместится в левый верхний угол и масштаб данных увеличится а 2 раза.
Элементы управления окна Проверка корректности RAID
Номер первого сектора в ряде.
Переход к предыдущей/следующей порции данных.
Источник
Мониторинг raid массивов в Windows Core
За последние годы мы привыкли что можно и нужно все мониторить, множество инструментов начиная от простых логов, заканчивая 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.
На выходе получается вот такая картинка:
UPD.
По поводу использования store space, все сервера с windows core на борту используются в филиалах, в филиале установлен только 1 сервер и для получения «бесплатного» гипервизора и уменьшения стоимости лицензии используется именно core.
Источник
Объединение 2-х дисков в 1: настройка RAID-массива на домашнем компьютере (просто о сложном)
Доброго дня!
Согласитесь, звучит заманчиво?! Однако, многим пользователям слово «RAID» — либо вообще ничего не говорит, либо напоминает что-то такое отдаленное и сложное (явно-недоступное для повседневных нужд на домашнем ПК/ноутбуке). На самом же деле, все проще, чем есть. 👌 (разумеется, если мы не говорим о каких-то сложных производственных задачах, которые явно не нужны на обычном ПК)
Собственно, ниже в заметке попробую на доступном языке объяснить, как можно объединить диски в эти RAID-массивы, в чем может быть их отличие, и «что с чем едят».
Настройка RAID
Основы, какими могут быть RAID массивы (т.е. то, как будем объединять диски)
Обратите внимание также на табличку ниже.
Разумеется, видов RAID-массивов гораздо больше (RAID 5, RAID 6, RAID 10 и др.), но все они представляют из себя разновидности вышеприведенных (и, как правило, в домашних условиях не используются).
Пару слов о дисках и мат. плате
Не все материнские платы поддерживают работу с дисковыми массивами RAID. И прежде, чем переходить к вопросу объединению дисков, необходимо уточнить этот момент.
Как это сделать : сначала с помощью спец. утилит (например, AIDA 64) нужно узнать точную модель материнской платы компьютера.
Далее найти спецификацию к вашей мат. плате на официальном сайте производителя и посмотреть вкладку «Хранение» (в моем примере ниже, мат. плата поддерживает RAID 0, RAID 1, RAID 10).
Спецификация материнской платы
Если ваша плата не поддерживает нужный вам вид RAID-массива, то у вас есть два варианта выхода из положения:
RAID-контроллер (в качестве примера)
Важная заметка : RAID-массив при форматировании логического раздела, переустановки Windows и т.д. — не разрушится. Но при замене материнской платы (при обновлении чипсета и RAID-контроллера) — есть вероятность, что вы не сможете прочитать информацию с этого RAID-массива (т.е. информация не будет недоступна. ).
Что касается дисков под RAID-массив :
Пример настройки RAID 0 в BIOS
Важно : при этом способе информация с дисков будет удалена!
Примечание : создать RAID-массив можно и из-под Windows (например, если вы хотите в целях безопасности сделать зеркальную копию своего диска).
1) И так, первым делом необходимо подключить диски к компьютеру (ноутбуку). Здесь на этом не останавливаюсь.
2) Далее нужно зайти в BIOS и установить 2 опции:
Затем нужно сохранить настройки (чаще всего это клавиша F10) и перезагрузить компьютер.
Intel Rapid Storage Technology
Create RAID Volume
5) Теперь нужно указать:
После нажатия на кнопку Create Volume — RAID-массив будет создан, им можно будет пользоваться как обычным отдельным накопителем.
Как создать RAID 0, RAID 1 программно (в ОС Windows 10)
Рассмотрю ниже пару конкретных примеров.
2) Открываете управление дисками (для этого нужно: нажать Win+R, и в появившемся окне ввести команду diskmgmt.msc).
3) Теперь действия могут несколько отличаться.
Вариант 1 : допустим вы хотите объединить два новых диска в один, чтобы у вас был большой накопитель для разного рода файлов. В этом случае просто кликните правой кнопкой мышки по одному из новых дисков и выберите создание чередующегося тома (это подразумевает RAID 0). Далее укажите какие диски объединяете, файловую систему и пр.
Создать чередующийся или зеркальный том
Вариант 2 : если же вы беспокоитесь за сохранность своих данных — то можно подключенный к системе новый диск сделать зеркальным вашему основному диску с ОС Windows, причем эта операция будет без потери данных (прим.: RAID 1).
4) После Windows начнет автоматическую синхронизацию накопителей: т.е. с выбранного вами раздела все данные будут также скопированы на новый диск.
5) В общем-то, всё, RAID 1 настроен — теперь при любых изменениях файлов на основном диске с Windows — они автоматически будут синхронизированы (перенесены) на второй диск.
6) Удалить зеркало, кстати, можно также из управления дисками : пример на скрине ниже.
Источник
Adblock
detector
RAID 0 (распределение) | RAID 1 (зеркалирование) |
Привет, друзья. В прошлой статье мы с вами создали RAID 1 массив (Зеркало) — отказоустойчивый массив из двух жёстких дисков SSD. Смысл создания RAID 1 массива заключается в повышении надёжности хранения данных на компьютере. Когда два жёстких диска объединены в одно хранилище, информация на обоих дисках записывается параллельно (зеркалируется). Диски являются точными копиями друг друга, и если один из них выйдет из строя, мы получим доступ к операционной системе и нашим данным, ибо их целостность будет обеспечена работой другого диска. Также конфигурация RAID 1 повышает производительность при чтении данных, так как считывание происходит с двух дисков. В этой же статье мы рассмотрим, как восстановить массив RAID 1, если он развалится. Другими словами, мы рассмотрим, как сделать Rebuild RAID 1.
Развал RAID 1 массива может произойти по нескольким причинам: отказ одного из дисков, ошибки микропрограммы БИОСа, неправильные действия пользователя компьютера. При развале RAID 1 в БИОСе у него будет статус «Degraded».
В таких случаях нужно произвести восстановление (Rebuild) массива. Каким образом это можно сделать? К примеру, при отказе одного накопителя мы просто подсоединяем другой исправный, затем жмём в БИОСе кнопку «Rebuild», и происходит синхронизация данных на дисках. Таким вот образом RAID 1 массив восстанавливается, и мы можем работать дальше. Вроде, всё просто. Однако на практике при возникновении такой проблемы много нюансов. Давайте подробно рассмотрим все особенности восстановления RAID.
Если созданный с помощью БИОСа материнской платы RAID 1 массив развалился, неопытный пользователь может этого сразу и не понять. Мы не получим ни звукового оповещения, ни оповещения в иной форме, сигнализирующих о проблеме развала RAID 1. Возможностями аварийной сигнализации при развале массивов обладают только отдельные SAS/SATA/RAID-контроллеры, работающие через интерфейс PCI Express. За аварийную сигнализацию при проблемах с массивами отвечает специальное ПО таких контроллеров. Не имея таких контроллеров, можем использовать программы типа CrystalDiskInfo или Hard Disk Sentinel Pro, которые предупредят нас о выходе из строя одного из накопителей массива звуковым сигналом, либо электронным письмом на почту.
Если заглянем в управление дисками Windows, о развале RAID 1 можем догадаться, например, по исчезновению разметки одного из дисков.
Но лучше, конечно, чтобы на компьютере был установлен родной софт от производителя чипсета материнской платы, выполняющий задачи по обслуживанию RAID-массивов. И именно этот софт должен вывести сообщение о деградации массива из-за выхода из строя одного из накопителей. Ещё такой софт должен выполнять постоянное наблюдение за техническим состоянием массива. И при замене вышедшего из строя диска на исправный на таком софте лежит ответственность за быстрое перестроение рассыпавшегося массива.
Для примера возьмём мою материнскую плату на чипсете Z490 от Intel, для которого существует специальное программное обеспечение Intel Rapid Storage Technology (Intel RST). Технология Intel Rapid Storage поддерживает SSD SATA и SSD PCIe M.2 NVMe, повышает производительность компьютеров с SSD-накопителями за счёт собственных разработок. Всесторонне обслуживает массивы RAID в конфигурациях 0, 1, 5, 10. Предоставляет пользовательский интерфейс Intel Optane Memory and Storage Management для управления системой хранения данных, в том числе дисковых массивов.
После установки Intel RST в главном окне увидим созданный нами из двух SSD M.2 NVMe Samsung 970 EVO Plus (250 Гб) RAID 1 массив, исправно функционирующий.
Вот этот массив в управлении дисками Windows.
И в диспетчере устройств.
Технология Intel Rapid Storage имеет свою службу и постоянно мониторит состояние накопителей. На данный момент все находящиеся в рейде диски исправны.
Если какой-либо накопитель неисправен, драйвер Intel RST сразу предупредит всплывающим окном о проблеме «Требуется внимание. Производительность одного из ваших томов снижена».
И в главном окне программы будет значиться, что один из дисков массива неисправен.
В этом случае можно произвести диагностику неисправного накопителя специальным софтом, к примеру, программой Hard Disk Sentinel Pro. Если диск неисправен или отработал свой ресурс, выключаем компьютер и заменяем диск на новый. Затем делаем Rebuild (восстановление) RAID 1 массива.
После замены неисправного диска включаем ПК и входим в БИОС. Заходим в расширенные настройки «Advanced Mode», идём во вкладку «Advanced». Переходим в пункт «Intel Rapid Storage Technology».
Видим, что наш RAID 1 массив с названием Volume 1 неработоспособен — «Volume 1 RAID 1 (mirroring), Degraded».Выбираем «Rebuild» (Восстановить).
Обратим внимание на уведомление внизу: «Selecting a disk initiates a rebuild. Rebuild completes in the operating system», переводится как «Выбор диска инициирует перестройку массива. Восстановление завершается в операционной системе». Выбираем новый накопитель, который нужно добавить в массив для его восстановления, жмём Enter. Появится следующий экран, указывающий, что после входа в операционную систему будет выполнено автоматическое восстановление — «All disk data will be lost», переводится как «Все данные на диске будут потеряны».RAID 1 массив восстановлен.
Жмём F10, сохраняем настройки, произведённые нами в БИОСе, и перезагружаемся.
После перезагрузки открываем программу Intel Optane Memory and Storage Management и видим, что всё ещё происходит перестроение массива, но операционной системой уже можно пользоваться.
Восстановить дисковый массив можно непосредственно в программе Intel Optane Memory and Storage Management. К примеру, у нас неисправен один диск массива, и Windows 10 загружается с исправного накопителя. Выключаем компьютер, отсоединяем неисправный, а затем устанавливаем новый SSD PCIe M.2 NVMe, включаем ПК. Программа Intel Optane Memory and Storage Management определяет его как неизвестный жёсткий диск.
Диспетчер устройств, как и управление дисками, не видит целостный RAID, а видит два разных SSD.
В главном окне программы жмём «Создать том RAID».
У нас SSD нового поколения с интерфейсом PCIe M.2 NVMe, значит, выбираем контроллер PCIe. Тип дискового массива — «Защита данных в режиме реального времени (RAID 1)».
Выбираем два наших диска SSD PCIe M.2 NVMe.
Если на новом диске были данные, после перестроения массива данные на нём удалятся. Жмём «Создать том RAID». Можем наблюдать процесс восстановления массива.
RAID 1 массив восстановлен.
Если включить в настройках программы Intel RST «Автоматическое перестроение при оперативной замене», при замене неисправного накопителя не нужно будет ничего настраивать. Восстановление дискового массива начнётся автоматически.
Если у вас выйдут из строя сразу оба накопителя, то покупаем новые, устанавливаем в системный блок, затем создаём 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: 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
После запуска команды, нужно подтвердить действия и массив будет создан:
Теперь при просмотре информации о дисках, мы видим наш массив:
# 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
Создадим директорию 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
Просмотр состояния, проверка целостности RAID массива
Чтобы проверить целостность данных в массиве, используйте команду:
#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
Personalities : [raid1] md0 : active raid1 vdc[1] vdb[0] 20954112 blocks super 1.2 [2/2] [UU]
В листинге команды, видим информацию о нашем ранее созданном raid.
Более подробную информацию о конкретном raid-массиве, можно посмотреть командой:
# mdadm -D /dev/md0
Разберем основные пункты листинга команды:
- 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
Данная команда просканирует диски из разобранного или развалившегося 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:
Чтобы проверить, сработает ли «горячая замена» диска, пометим любой из дисков как нерабочий и проверим статус raid-массива:
# mdadm /dev/md0 --fail /dev/vdb
После чего при проверке статуса массива, будет видно, что началась пересборка массива:
Диск /dev/vdb помечен как нерабочий, а hot-spare диск стал одним из активных дисков RAID и запустился процесс восстановления.
Чтобы добавить дополнительный рабочий диск в RAID, нужно выполнить два шага.
Добавить пустой диск массиву:
# mdadm /dev/md0 --add /dev/vdb
Теперь данный диск будет отображаться как hot-spare, чтобы сделать его рабочим, расширим raid-массив:
# mdadm -G /dev/md0 —raid-devices=3
После чего запустится процесс пересборки массива:
После выполнения пересборки, все диски стали активны:
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.
Управление дисковым массивом работающего на аппаратном контроллере 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 определяют время запуска тестов для заданного диска