Fast Site Engine
Высокопроизводительный движок для сайтов
Заказать сайт на основе движка
О движкеПроизводительностьБезопасностьТехнические требованияSEO 
Лицензионное соглашение
Демо
Установка
Панель управления
Модули
Документация
Шаблоны
Тесты производительности php
Планы на будущее
Список изменений
Отзывы и пожелания
Переходим на Линукс
Всякое разное
Переходим на Линукс  »  Скрипт управления RAID массивами mdadm в Linux

Скрипт управления RAID массивами mdadm в Linux

Встала задача собрать компьютер с зеркалированием двух дисков для сохранности информация и где-то в процессе я понял, что обычный пользователь не справится с управлением - много моментов, которые даже бывалому мне выносили мозг.. В итоге написал Bash скрипт управления RAID массивами mdadm в Linux - md. Он писался и отлаживался для RAID1 схемы, остальные должны работать, но настоятельно советую протестировать все функции до использования.

При использования на домашней машине, в случае проблем с RAID массивом, на рабочем столе появится кликабельная иконка(запускающая скрипт md) предупреждающая о поломке. Для серверов есть возможность отсылать в php скрипт информацию о тестировании дисков и массивов..

Скрипт написан только под GPT разметку диска, в чём разница читайте в статье разметка диска GPT или MBR Linux

Установка

# 2-clause BSD license.
cd /tmp && wget https://fsen.ru/inc/doc/linux/md && chmod +x ./md && ./md
# или
cd /tmp && curl -O https://fsen.ru/inc/doc/linux/md && chmod +x ./md && ./md

Далее следует воспользоваться одним из пунктов 8, 9 - Установить ПО... в меню операций с дисками и операционной системой (оно само появляется при запуске если не установлены: gdisk, lsblk или mdadm). В зависимости от условий: скрипт скопирует себя в /usr/bin/ и можно будет вызывать в консоли просто как md; Добавится в автозагрузку или в crontab(если root) для проверки состояния массивов и создаст в настройках значок его запуска..

Обязательно перезагрузите компьютер, особенно если собираются ранее существовавшие массивы (например, если решили переустановить Linux). После перезагрузки mdadm корректно собирает рэйд массивы. (Непонятно собранные (неактивные итп) массивы можно остановить и запустить, бывает налаживается..)

Разработчики Ubuntu где-то набыдлокодили! Debian без проблем ставится на RAID, а все его наследники от Ubuntu не в EFI ни в MSDOS не ставятся на RAID. (Проверял только с разметкой диска GPT. Если разметить как MBR возможно что-то будет, но я не рассматриваю данную устаревшую технологию.. Для дома вполне сойдёт: установить на SSD диск операционную систему и ещё пару дисков зарэйдить в массив и там разводить файлопомойку..)

Установка операционной системы у меня сейчас происходит так: гружу компьютер под живым режимом (LiveCD/DVD/USB K/Ubuntu или любым другим из семейства Linux Debian) скачиваю md, размечаю диск/и, перехожу к установке.

Если это сервер: следом гружу под установочным Debian и устанавливаю его.. Создаю RAID массивы в процессе установки из предварительной разметки (форматирую их, если они новые иначе нет - сохраняю данные. Заранее создавать массивы при разметке не стоит - установщик может не найти, и может быть двойная синхронизация..)

Синхронизация рэйда приостанавливается для записи, так что можно сразу всё устанавливать и настраивать..

Если в процессе установки выдаст о неудачи записи загрузчика - сотрите раздел EFI в меню установки в Debian или любыми другими способами в FAT32 разметке.

В данный момент собрал и полностью протестировал:

Компьютер с операционной системой Kubuntu 18.04 LTS (Bionic Beaver) на SSD и 2 HDD 3Тб винчестера в зеркале RAID1 (синхронизация заняла ~5:27 ч).

Сервер на Debian 9.5 c 2 HDD 500Гб ОС поставлена на RAID1 (синхронизация заняла ~60 мин). На сервере подразумевается что работать будет под пользователем root, установите sudo чтоб скрипт нормально функционировал..

Основное меню:

1) Показать диски в системе

Показывает диски, серийные номера, размер итп. полезную информацию. Ниже выводит структуру дисков (разметку) с указанием UUID и точек монтирования.
ссылка-якорь disksinfo

2) Детальная информация о RAID массиве

Показывает детальную информацию о массиве, выводит системный и рэйдовый UUID.
ссылка-якорь raidinfo

3) Собрать ранее существовавший RAID (шаг 1 после переустановки Linux (если не подцепился на автомате))

Именно этот пункт нужен если собираете ранее существовавший рэйд массив. В процессе предложит указать имя и разделы массива на дисках.
ссылка-якорь raidassemble

4) Создать точку(папку) монтирования и примонтировать RAID. (шаг 2..)

Указанная папка будет создана, если её ещё нет. Произойдёт отмонтирование папки и выбранного RAID массива, и примонтирование к новой. После чего можно будет работать с RAID массивом обращаясь к папке..
ссылка-якорь raidmount

5) Удалить диск из RAID массива (шаг 1 при поломке диска)

Удаляет диск из массива и предлагает стереть его. Так же не забудьте записать серийный номер диска, бумажка на торце с ним обычно, будет понятно какой вытаскивать..
ссылка-якорь diskremove

6) Добавить диск (раздел) в RAID массив (шаг 2 при поломке диска)

Добавляет диск в массив, в процессе предложит скопировать разметку с другого диска или указать раздел на диске. При разметке скопирует EFI раздел или установит GRUB.
ссылка-якорь diskadd

7) Установить загрузчик GRUB или скопировать EFI (если RAID на дисках с операционной системой)

Внутри есть 3) пункт, который просматривает указанные диски в RAID массиве на предмет соответствующих разделов и если находит EFI - копирует раздел, если находит раздел BIOS Boot Partition(bios_grub), ставит на диск GRUB загрузчик.. Так же пытается определить больший по размеру раздел EFI и предложит с него скопировать содержимое.. (При добавлении диска в массив так же происходит данная операция..) И есть ещё 2 пункта позволяющих только grub ставить на диски или на массивы (не знаю зачем :).
ссылка-якорь grubefi

8) Меню операций с RAID массивами

Переходит в соответствующее меню.
ссылка-якорь raidmenu

9) Меню операций с дисками и операционной системой

Переходит в соответствующее меню.
ссылка-якорь more

10) Выйти (Ctrl+C)

Ctrl+C прерывает сценарий на любой стадии.
ссылка-якорь exit

Меню операций с RAID массивами:

1) В меню

Вернуться в основное меню.

2) Проверить RAID массив на ошибки e2fsck -fpv

Отмонтирует массив, запускает e2fsck -fpv и монтирует обратно после проверки..
ссылка-якорь raidcheck

3) Тест скорости записи и чтения RAID массива

Производит тестирование скоростей чтения и записи RAID массива (обязательно должен быть примонтирован к системе).
ссылка-якорь testspeed

4) Остановить RAID

Останавливает массив.
ссылка-якорь raidstop

5) Запустить RAID

Запускает массив или все сразу(это работает только с предопределёнными массивами в /etc/mdadm/mdadm.conf).
ссылка-якорь raidstart

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

Переименовывает массив и заменяет в конфигурационных файлах (т.е. руками ничего прописывать/изменять не нужно). Массив будет отмонтирован на время операции..
ссылка-якорь raidrename

7) Удалить RAID массив (можно удалять некорректно собранные массивы без стирания дисков и восстанавливать (пункт 3 основного меню))

Удаляет массив с возможностью не стирать диск/и и информацию о массивах (superblock итп.)
ссылка-якорь raidremove

8) Создать RAID массив (шаг 1)

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

9) Создать RAID массив (шаг 2) отформатировать после синхронизации

Форматирует выбранный массив в ext4 (ext4 на данный момент остаётся крайне надёжной и самой быстрой файловой системой).
ссылка-якорь raidformat

10) Расширение RAID массива (при замене дисков на большие или добавлении дисков)

Позволяет увеличить количество дисков в RAID; Расширить объём RAID массива и файловую систему до максимума без изменения разметки дисков; Увеличить объём RAID массива с расширением размера разделов (разметки дисков, например, если заменили на большие диски).
Потенциально самые опасные действия с массивами, лучше чтоб свет не отрубили в этот момент.. Скрипт напишет много всего по данным пунктам..
ссылка-якорь raidgrow

11) Изменить скорость синхронизации дисков (по умолчанию NVMe = 3.2 ГБ/с)

Задаётся при установке ПО 3.2 ГБ/с. Скрипт покажет возможные скорости интерфейсов SATA, SAS, NVMe, так же можно указать желаемую..
ссылка-якорь syncspeed

12) Запустить синхронизацию RAID массива

Записывает параметр check в /sys/block/md?/md/sync_action, в теории следом mdadm должен запустить синхронизацию..
ссылка-якорь raidsync

Меню операций с дисками и операционной системой:

1) В меню

Вернуться в основное меню.

2) Выйти (Ctrl+C)

Ctrl+C прерывает сценарий на любой стадии.

3) Быстрый тест здоровья дисков

Выводит полезную информацию о серийнике тестируемого диска размере итп.. Производит короткий тест SMART всех дисков. Так же достаёт критическую информацию о состоянии диска: переназначенные сектора, ошибки шлейфа и прочие показатели типа перегревов.. Подсвечивает красным ошибки..
Функция так же вызывается в случае отсылки в скрипт (для серверов).
ссылка-якорь diskshealth

4) Стереть диск

Форматирует и удаляет разделы и затирает записи связанные с массивами.. Ох сколько головняка я натерпелся пока не допёр, что необходимо так же стирать(форматировать) разделы, ибо в них так же содержится информация о RAID массивах собранных ранее.. Так же были моменты с занятым диском итд.. Перед созданием массива и прочих смежных операциях, так же запускается эта функция..
ссылка-якорь disknil

5) Разметить диск/и

Это мой любимый пункт, перед началом установки ОС просто запускаю, указываю необходимое и диск автоматом размечен..
Представлены возможные схемы разметки для современного UEFI режима и на всякий случай(например сервер из старого компьютера или старого сервера без UEFI) MSDOS но с разметкой GPT диска, для этого создаётся ещё один раздел BIOS boot partition (bios_grub).
Если размечаем сразу несколько дисков, остальные диски размечаются методом копирования разметки (на случай если решили создать RAID, а диски отличаются размером..)
ссылка-якорь diskparted

6) Удалить точку монтирования

Выводит файл /etc/fstab, остаётся указать какую строку удаляем..
ссылка-якорь delmount

7) Создать/Удалить своп файл /swapfile

Создаёт или удаляет файл подкачки swapfile. Скрипт покажет рекомендации по размеру..
ссылка-якорь swap

8) Установить ПО для обеспечения работоспособности скрипта: bc curl gdisk lsblk(util-linux) smartctl(smartmontools)

Устанавливает софт необходимый для обслуживания дисков (для разметки GPT).
ссылка-якорь install

9) Установить ПО из 8п. и для RAID: mdadm; скопировать скрипт в /usr/bin/md и добавить в автозагрузку

Устанавливает весь необходимый софт добавляет в автозагрузку для проверки состояния массивов или crontab если пользователь root.. И копирует себя (md) в /usr/bin/. После этого шага лучше перезагрузить компьютер (будет предложено).
ссылка-якорь installmd

10) Настроить оповещение на почту и пр. (dpkg-reconfigure mdadm, отдельно настройте почтовый сервер)

Запускает встроенную функцию конфигурации dpkg-reconfigure mdadm. Оставлен на всякий случай, в процессе оказалось, что этот пункт нынче не нужен..
ссылка-якорь reconf














Куча

строк

чтоб

якоря

доставали

:)













Страница сгенерирована за 0.003755 секунды
На один процесс веб-сервера: 266 стр/сек.
Всего Apache может отдать: 68 096 стр/сек.
Выделено php памяти: 911.03 KB, real_usage: 2 MB

© Все права защищены 2004 - 2018
Карта сайта
Отслеживать изменения в Твиттере
Политика конфиденциальности

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

С момента выгрузки предыдущей страницы из памяти браузера: сек.