К системе подключены три диска.
Что делаем первым делом, когда на системе настраиваем программный RAID, правильно — обновляем систему до самого актуального состояния текущего релиза:
ekzorchik@srv-mon:~$ sudo apt-get update && sudo apt-get upgrade -y
Устанавливаю в систему пакет mdadm посредством которого и осуществляется взаимодействие с создаваемым программным RAID’ом:
ekzorchik@srv-mon:~$ sudo apt-get install mdadm -y
Присутствующие диски в системе из которых будет создавать программный RAID:
/dev/sdb,/dev/sdc,/dev/sdd — все они по 10Gb
Использовать буду RAID 5 — как раз для него нужно три диска:
ekzorchik@srv-mon:~$ sudo mdadm --create --verbose /dev/md0 --level 5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 10477056K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
Отобразить результирующую по текущей конфигурации: – файл /etc/mdadm/mdadm.conf
ekzorchik@srv-mon:~$ sudo mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 spares=1 name=srv-mon:0 UUID=3e2fc6ba:17cabd34:c44ac3db:6ca217c6
Если реальная конфигурация не совпадает с той, которая записана в /etc/mdadm/mdadm.conf, то обязательно приведите этот файл в соответствие с реальной конфигурацией до перезагрузки, иначе в следующий раз массив не запустится.
Узнать текущий статус RAID–массива можно так:
ekzorchik@srv-mon:~$ sudo mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 spares=1 name=srv-mon:0 UUID=3e2fc6ba:17cabd34:c44ac3db:6ca217c6
ekzorchik@srv-mon:~$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdd[3] sdc[1] sdb[0]
20954112 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
[===============>…..] recovery = 77.0% (8071800/10477056) finish=0.6min speed=59607K/sec
unused devices: <none>
После того, как массив создан чтобы с ним можно было работать в привычном представлении: копировать файлы, создавать файлы — нужно создать на нем (массиве) файловую систему, к примеру ext4:
ekzorchik@srv-mon:~$ sudo mkfs.ext4 /dev/md0
При создание файловой системы на диске резервируется 5% свободного места. Но мы может его уменьшить используя средства утилиты tune2fs.
Теперь смонтируем раздел RAID–массива в систему:
ekzorchik@srv-mon:~$ sudo mkdir /media/shara
ekzorchik@srv-mon:~$ sudo nano /etc/fstab
/dev/md0 /media/shara ext4 defaults 0 0
ekzorchik@srv-mon:~$ sudo mount -a
ekzorchik@srv-mon:~$ df -h | grep shara
/dev/md0 20G 44M 19G 1% /media/shara
Но это еще не все, настройка не завершена полностью, т. к. система Ubuntu 12.04.5 не знает какие RAID-массивы ей нужно создавать и какие параметры для этого используется, про что я говорю, а вот — если перезагрузить систему, то система не сможет загрузиться без Вашего внимания:
ekzorchik@srv-mon:~$ sudo reboot
The disk drive for /media/shara is not ready yet or not present.
Continue to wait, or Press S to skip mounting or M for manual recovery
Нажимаем пока клавишу S: (загружаемся пропуская этап инициализиации смонтированного массива на каталог /media/shara) и из информации по RAID массиву в файл /etc/mdadm/mdadm.conf добавляем описание для системы, что мы используем программный рейд, без это информации система все так же не сможет загрузится корректно, ведь запись ей, а как читать эту запись нету:
ekzorchik@srv-mon:~$ sudo mdadm --detail --scan --verbose
ARRAY /dev/md/srv-mon:0 level=raid5 num-devices=3 metadata=1.2 name=srv-mon:0 UUID=3e2fc6ba:17cabd34:c44ac3db:6ca217c6
devices=/dev/sdb,/dev/sdc,/dev/sdd
Из этой информации приводим конфигурационный файл /etc/mdadm/mdadm.conf к виду:
ekzorchik@srv-mon:~$ sudo nano /etc/mdadm/mdadm.conf
/dev/md0 level=raid5 num-devices=3 metadata=1.2 UUID=3e2fc6ba:17cabd34:c44ac3db:6ca217c6
Не забываем сохранить внесенные изменения.
Проверяем, что перезагрузив систему — система самостоятельно загрузится без нашего участия, как и должно иметь место быть:
ekzorchik@srv-mon:~$ sudo reboot
хм странно — ситуация не изменилась хотя должна была быть, проверяю информацию по определию массива в системе:
ekzorchik@srv-mon:~$ sudo mdadm --detail --scan
mdadm: Unknown keyword /dev/md0
ARRAY /dev/md/srv-mon:0 metadata=1.2 name=srv-mon:0 UUID=3e2fc6ba:17cabd34:c44ac3db:6ca217c6
и вот что система поменяла имя массива с /dev/md0 на /dev/md/srv-mon:0 — нужно поменять обратно:
ekzorchik@srv-mon:~$ sudo mdadm -S /dev/md/srv-mon:0
mdadm: Unknown keyword /dev/md0
mdadm: stopped /dev/md/srv-mon:0
ekzorchik@srv-mon:~$ sudo mdadm -As
mdadm: Unknown keyword /dev/md0
mdadm: /dev/md/0 has been started with 3 drives.
ekzorchik@srv-mon:~$ sudo mount -a
, но что еще заметил — проделываю команды выше и все становится в нормале, а вот когда перезагрузил систему, но снова сбилось — что же делать: (на лицо не доработаки самой утилиты управления RAID-массивом), а нужно (спасибо за документацию):
ekzorchik@srv-mon:~$ sudo nano /etc/mdadm/mdadm.conf
# automatically tag new arrays as belonging to the local system
HOMEHOST srv-mon
и заново проделываем команды:
ekzorchik@srv-mon:~$ sudo mdadm -S /dev/md/srv-mon:0
mdadm: stopped /dev/md/srv-mon:0
ekzorchik@srv-mon:~$ sudo mdadm -As
mdadm: /dev/md/0 has been started with 3 drives.
ekzorchik@srv-mon:~$ sudo mount -a
Перезагружаюсь еще раз — и снова ошибка, короче просто пока массив не введен в эксплуатацию удаляю его и создам заново с именем как обозначается система:
ekzorchik@srv-mon:~$ sudo mdadm -S /dev/md/srv-mon:0
mdadm: stopped /dev/md/srv-mon:0
Затем очищаю суперблоки RAIDа на дисках из которых пытался создать массив:
ekzorchik@srv-mon:~$ sudo mdadm --zero-superblock /dev/sdb
ekzorchik@srv-mon:~$ sudo mdadm --zero-superblock /dev/sdc
ekzorchik@srv-mon:~$ sudo mdadm --zero-superblock /dev/sdd
Теперь создаю рейд но уже по другому:
ekzorchik@srv-mon:~$ sudo mdadm --create --verbose /dev/md/srv-mon:0 --auto=yes --level 5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
ekzorchik@srv-mon:~$ sudo bash -c "mdadm --examine --scan >> /etc/mdadm/mdadm.conf"
вот такая вот строка добавилась в /etc/mdadm/mdadm.conf
ARRAY /dev/md/0 metadata=1.2 UUID=310c2489:de03df76:b8a3640f:4a11a75a name=srv-mon:0
ekzorchik@srv-mon:~$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-3.13.0-32-generic
Создаю файловую систему на /dev/md0:
ekzorchik@srv-mon:~$ sudo mkfs.ext4 /dev/md0
В файл: /etc/fstab добавляю строку монтирования RAID–массива:
/dev/md0 /media/shara ext4 defaults,rw 0 0
После перезагружаюсь:
- ekzorchik@srv-mon:~$ sudo reboot
и вот теперь все хорошо, система загрузилась, массив доступен, ошибок нет.
Дальше нужно активировать и проверить работу контроля состояния RAID массива с помощью оповещения по почте, в данную информацию должно включаться:
Информация о состоянии дискового массива (Вышел диск, проблемы с диском)
За оповещение по почте буду использовать уже полюбившийся агент MTA ssmtp, а текий postfix удалю (ставился совместно с mdadm):
ekzorchik@srv-mon:~$ sudo apt-get remove postfix -y
Устанавливаю MTA агент — ssmtp:
ekzorchik@srv-mon:~$ sudo apt-get install ssmtp mailutils -y
ekzorchik@srv-mon:~$ sudo nano /etc/ssmtp/ssmtp.conf
mailhub = smtp.yandex.ru:465
AuthUser=ekzorchik@ekzorchik.ru
AuthPass=<password>
rewriteDomain=ekzorchik.ru
UseTLS=YES
FromLineOvveride=yes
Root=postmaster
Теперь разрешаем кому можно будет из консоли отправлять почту:
ekzorchik@srv-mon:~$ sudo nano /etc/ssmtp/revaliases
root:ekzorchik@ekzorchik.ru:smtp.yandex.ru:465
ekzorchik:ekzorchik@ekzorchik.ru:smtp.yandex.ru:465
Теперь в конфигурационном файле MDADM адрес на который следует отправлять уведомления:
ekzorchik@srv-mon:~$ sudo nano /etc/mdadm/mdadm.conf
#MAILADDR root
MAILADDR alexander.ollo@nemdom.ru
Сохраняем внесенные изменения и перезапускаю сервис:
ekzorchik@srv-mon:~$ sudo /etc/init.d/mdadm restart
* Stopping MD monitoring service mdadm –monitor [ OK ]
* Starting MD monitoring service mdadm –monitor
Проверяем, что уведомления отсылаются, для это запускаем команду:
ekzorchik@srv-mon:~$ sudo mdadm --monitor --scan --test --oneshot
если у Вас команда просто висит значит у Вас какие-то проблемы с отправкой почты из консоли, разбирайтесь с ssmtp.conf:
У меня письмо пришло
Но не запускать же предыдущую команду вручную, пусть это делает планировщик к примеру раз в шесть часов для некритичных сервером, а для критичных каждый сам определяет данное значение.
Вот таким вот образом, имея практическое знакомство со множеcтвом инструментов можно в последствии их комбинировать для расширения текущего функционала друг друга, сейчас данной заметкой я еще раз прошелся по шагам как использовать программный RAID и уведомлять меня по почте на случай каких либо проблем. На этом все, с уважением автор блога — ekzorchik.