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

Конспект в доработке

    Общие понятия

    Жесткие диск подключаются к контроллеру, который управляет работой жесткого диска и передачей данных
    VM VirtualBox может эмулировать наиболее распространенные типы контроллеров жестких дисков
    Рейд массив может применяться в высоконагруженных системах, в данном случае диски подключаются не по отдельности, а объединяются в один виртуальный диск. Данная технология обеспечивает сохранность данных, увеличивает скорость записи.
    Для создания RAID-массивов используются аппаратные и программные контроллеры.

    Общие понятия

    Существуют аппаратный RAID, поддельный RAID, программный RAID ( mdadm )
    Аппаратный рейд управляется с помощью контроллера. Контроллер может быть встроенным или интегрированным в материнскую плату. Благодаря контроллеру raid linux видит неско лько дисков как один единный том
    Программный reid наименее затратный вариант, но и менее производительный, так как вся нагрузка ложится на центральный процессор
    Интегрированный рейд быстрее программного, встроен в материнку как отдельный чип, работающий в паре с процессором. Аппаратный рейд это отдельный контроллер со своим процессором и кэшпамятью, данный вариант затратный, но самый производительный
    Кроме прочего аппартаный контроллер BBU (Battery Backup Unit) - батарея которая позволяет поддерживать напряжение на схеме кэша даже при выключении питания.
    ZMCP (Zero-Maintenance Cache Protection) - дополнительный модуль имеющий энергонезависимую память и конденсатор имеющую достаточно энергии для записи содержимого кэша вN AND-память
    Предположим что в наличии имеется 4 диска

    #Создание программного reid массива #****************************************** #Проверяем чтобы на дисках не было метаданных от предыдущего массива mdadm --examine /dev/sda /dev/sdb /dev/sdc /dev/sdd mdadm: No md superblock detected #При необходимости метаданные можно удалить mdadm --zero-superblock /dev/sdX #Создать разделы на каждом диске, в качестве типа раздела указывается fd ( Linux RAID autodetect ) #Далее необходимо собрать массив из созданных разделов mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 #После выполнения команды выше будет создан массив /dev/md0 и запущен процесс перестроения данных на дисках, за данным процессом можно наблюдать командой: cat /proc/mdstat #Создание аппаратного рейд массива #***************************************** #Перед использованием пространства аппаратного рейда необходимо настроить сам контроллер встроенной в контроллер утилитой или утилитой ОС #При инициализации дисков контроллером все данные на них будут уничтожены, после чего необходимо создать массив ( create array ) #Далее устанавливается размер страйпа, размер зависит от размера файлов #После создания массива начинается процесс перестроения данных на дисках
    Контроллеры

    IDE(ATA) из материалов википедии - параллельный интерфейс подключения накопителей (гибких дисков, жёстких дисков и оптических дисководов) к компьютеру. В 1990-е годы был стандартом на платформе IBM PC; в настоящее время вытеснен своим последователем — SATA — и с его появлением получил название PATA (Parallel ATA).
    В физических ПК в этом стандарте используются плоские ленточные параллельные кабели с 40 или 80 проводами
    VM VirtualBox предоставляет следующие типы аппаратного обеспечения IDE-контроллера: PIIX3, PIIX4 или ICH6
    Выбор типа не имеет значения с точки зрения производительности, но если вы импортируете виртуальную машину из другого продукта виртуализации, операционная система на этом компьютере может ожидать определенного типа контроллера и аварийно завершать работу, если он не найден.


    Serial ATA (SATA) из материалов википедии последовательный интерфейс обмена данными с накопителями информации. SATA является развитием параллельного интерфейса ATA (IDE)
    По сравнению с IDE, он поддерживает как гораздо более высокие скорости, так и большее количество устройств на контроллер
    Стандартный интерфейс для контроллеров SATA называется Advanced Host Controller Interface (AHCI).
    Как и настоящий SATA-контроллер, виртуальный SATA-контроллер Oracle VM VirtualBox работает быстрее, а также потребляет меньше ресурсов ЦП, чем виртуальный IDE-контроллер. Кроме того, это позволяет подключать до 30 виртуальных жестких дисков к одной машине вместо трех, по сравнению с контроллером Oracle VM VirtualBox IDE с подключенным DVD-приводом.
    Контроллер SATA и подключенные к нему виртуальные диски, включая те, которые находятся в режиме совместимости с IDE, не будут видны операционным системам, устройства которых не поддерживают AHCI.
    После установки можно переключиться с IDE на SATA, установив драйверы SATA и изменив тип контроллера в диалоговом окне Настроек виртуальной машины.

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

    SCSI с последовательным подключением (SAS) - из материалов википедии, последовательный компьютерный интерфейс, разработанный для подключения различных устройств хранения данных, например, жёстких дисков и ленточных накопителей. SAS разработан для замены параллельного интерфейса SCSI и основывается во многом на терминологии и наборах команд SCSI.
    SAS обратно совместим с интерфейсом SATA, которые могут быть подключены к контроллеру SAS, но не наоборот.
    Вместо параллельных кабелей используются последовательные кабели. Это упрощает подключение физических устройств. Следовательно, в некотором смысле SAS для SCSI то же, что SATA для IDE: он обеспечивает более надежные и быстрые подключения.
    VM VirtualBox эмулирует логический контроллер SAS LSI, который можно включить практически так же, как контроллер SCSI

    USB mass storage device является стандартом для подключения внешних устройств хранения данных, таких как жесткие диски или флэш-накопители, к хосту через USB.
    USB-контроллер VM VirtualBox, работает иначе, чем другие типы контроллеров хранения. USB-контроллер хранилища не отображается как виртуальный контроллер хранилища. Каждый диск, подключенный к контроллеру, отображается для гостя как выделенное USB-устройство.
    Загрузка с дисков, подключенных по USB, поддерживается только при использовании EFI, поскольку в BIOS отсутствует поддержка USB.

    Энергонезависимая память express (NVMe) - стандарт для подключения энергонезависимой памяти (NVM) через PCI Express, позволяющий снять ограничение пропускной способности ранее используемого протокола SATA для твердотельных устройств. В отличие от других стандартов, набор команд очень прост для достижения максимальной пропускной способности и несовместим с ATA или SCSI.
    Загрузка с дисков, подключенных с помощью NVMe, поддерживается только при использовании EFI, поскольку в BIOS отсутствует соответствующий драйвер.

    Типы RAID массивов

    RAID0 данный уровень объединяет два устройства вместе создавая один виртуальный диск. Чтение и запись чередуется между дисками повышая скорость. Скорость будет складываться исходя из кол-ва дисков.
    Данные списываться и записываться с нескольких устройств
    RAID1 на данном уровне данные зеркально записываются на два устройства для повышения безопасности. При выходе из строя одного устройства, данные будут доступны на другом устройстве
    RAID10 будет объединять два предыдущих варианта, но должен состоять как минимум из четырех дисков. В данном случае необходимо создать два RAID0 массива и два RAID1 массива
    RAID5 похож на RAID1, но в данном случае используется три устройства, двум из которым предоставляется пространство. Данные будут записываться до тех пор пока любые два устройства ( диска ) работают.

    Создание программного RAID массива

    RAID массивы необходимо размещать непосредственно на разделы, данный вариант более безопасный, так как операционная система может перезаписать суперблок RAID если последний размещен на самом диске. Для работы RAID требуется одинаковый размер дисков. Задать размер раздела проще, чем подобрать диск такого же размера

    # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 106.7G 0 disk ├─sda1 8:1 0 300M 0 part /boot ├─sda2 8:2 0 3.6G 0 part [SWAP] └─sda3 8:3 0 102.7G 0 part / sdb 8:16 0 8G 0 disk sdc 8:32 0 8G 0 disk sr0 11:0 1 1024M 0 rom #Добавить модуль ядра raid1 modprobe raid1 #Добавить модуль в автозагрузку echo raid1 >> /etc/modules-load.d/raid1.conf #Далее необходимо создать разделы на свободных дисках
    #Используйте n в fdisk для создания раздела и t для установки типа
    #В качестве типа раздела выбираем тип Linux raid autodetect
    #Перед изменением типа раздела необходимо убедиться, что raid не запущен mdadm --stop #Тоже самое делаем для второго диска sdc #Установить mdadm для создания массивов apk add mdadm #Перечитать таблицу разделов partprobe /dev/sd* #Расширить файловую систему resize2fs /dev/sd** #Форматировать раздел mkfs.xfs /dev/sd** #Расширить файловую систему в Linux Alpine xfs_growfs /dev/sd** #Возможно потребуется перезапуск системы #Занулить суперблоки дисков mdadm --zero-superblock --force /dev/sdb1 mdadm --zero-superblock --force /dev/sdс1 #Стереть подпись и метаданные wipefs --all --force /dev/sdb1 wipefs --all --force /dev/sdc1 #Создать массив mdadm --create --level=1 --raid-devices=2 /dev/md0 /dev/sdb1 /dev/sdc1 #Создать файловую систему mkfs.xfs /dev/md0 #Чтобы увидеть состояние синхронизации массива cat /proc/mdstat #Создать файл /etc/mdadm.conf, чтобы mdadm знал, как настроен ваш RAID: mdadm --detail --scan >> /etc/mdadm.conf #Добавить в автозагрузку rc-update add mdadm-raid #Служба mdadm должна быть запущена во время загрузки rc-update add mdadm boot rc-update add mdadm-raid boot #Примонтировать созданный массив mount /dev/md0 /mnt #И добавить в /etc/fstab запись /dev/md0 /mnt xfs noatime 0 1

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

    Подготовка диска с помощью parted
    #Установить apk add parted #Разметить диски parted /dev/sdb mklabel msdos parted /dev/sdс mklabel msdos #Создать таблицы разделов для дисков parted /dev/sdb mkpart primary xfs 2048 7Gb parted /dev/sdс mkpart primary xfs 2048 7Gb
    Создание RAID0
    #Создание массива mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1 #Созданный раздел /dev/md0 можно увидеть в lsblk и отформатировать в нужный тип файловой системы mkfs -t xfs /dev/md0 #Монтирование раздела mount /dev/md0 /mnt
    Информация о RAID

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

    #Информация о RAID mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Jan 5 14:14:27 2024 Raid Level : raid0 Array Size : 9662464 (9.21 GiB 9.89 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Fri Jan 5 14:14:27 2024 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Layout : -unknown- Chunk Size : 512K Consistency Policy : none Name : megaplan-box:0 (local to host megaplan-box) UUID : 754e5155:52f5d435:02e768c8:862c3fb8 Events : 0 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1 #Детальная информация о каждом устройстве которое входит в RAID mdadm --examine /dev/sdb1
    Как сохранить RAID массив
    #Сохранение конфигурации в файл mdadm --detail --scan >> /etc/mdadm.conf #Добавить в автозагрузку rc-update add mdadm-raid #Служба mdadm должна быть запущена во время загрузки rc-update add mdadm boot rc-update add mdadm-raid boot #Примонтировать созданный массив mount /dev/md0 /mnt #И добавить в /etc/fstab запись /dev/md0 /mnt xfs noatime 0 1
    Остановка, удаление и запуск RAID массива

    mdadm --create, -C Создать новый массив на основе указанных устройств
    mdadm --assemble, -A Собрать компоненты ранее созданного массива в массив. Компоненты можно указывать явно, но можно и не указывать — тогда выполняется их поиск по суперблокам mdadm --grow, -G Расширение или уменьшение массива, включаются или удаляются новые диски
    mdadm --incremental, -I Добавление диска в массив
    mdadm --monitor, --follow, -F Следить за изменением состояния устройств

    #Остановить массив mdadm --stop /dev/md0 #Запустить массив можно перезапуском системы, если массив добавлен в автозапуск или следующими командами: #Способ 1 mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 #Способ 2 ( uuid из /etc/mdadm.conf ) mdadm --assemble scan --uuid=47392974:0177bd49:f8267e8c:ec6c4003 #Способ 3 mdadm --assemble /dev/md0 #Удалить массив mdadm --remove /dev/md0 #После удаления следует удалить секцию данного RAID массива в /etc/mdadm/mdadm.conf #Можно просто остановить массив mdadm --stop /dev/md0 #После чего занулить суперблоки дисков mdadm --zero-superblock --force /dev/sdb1 mdadm --zero-superblock --force /dev/sdс1
    Проверка скорости записи

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

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

    #Сделать диск сбойным mdadm /dev/md0 --fail /dev/sdc1 #Удалить плохой диск mdadm /dev/md0 --remove /dev/sdc1 #Добавить новый диск mdadm /dev/md0 --add /dev/sdc1
    Расширение массива

    Опция --raid-devices указывает новое количество дисков в массиве с учётом добавленного
    На случай прерывание массива можно добавить опцию --backup-file=/var/backup

    #Сначала добавляется диск mdadm /dev/md0 --add /dev/sdc1 #Убедиться что диск добавлен mdadm --detail /dev/md0 #Далее необходимо расширить массив mdadm -G /dev/md0 --raid-devices=4 #Убедиться что массив расширился mdadm --detail --scan >> /etc/mdadm.conf
    Источники
    Последнее изменение: 08.10.2024 11:56


    Связанные темы
    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ