Изначально данный материал входил в заметку: "Сервер для малого и среднего бизнеса. Минимальные требования". Во внутренней сети: http://net.adm/lec15_u.add/0817_small_biznes.htm
То есть он имеет отношение к курсу "Сетевой администратор Windows / Linux"

Создание массива RAID в ubuntu 14.04 (linux) средствами gparted/mdadm

Суть черезстрочного RAID (с которым работает лишь драйвер RAID) Это level=raid0 :

физический носитель HDD1 первое третье пятое седьмое
физический носитель HDD2 второе четвёртое шестое восьмое

Как результат появляется некий "виртуальный массив HDD" с которым и работает OS:

виртуальный носитель md первое второе третье четвёртое пятое шестое седьмое восьмое

Читал форумы, где всеми способами отговаривают от использования RAID 0 (черестрочный RAID).

По моему мнению: приобретение реально ОДИНАКОВОГО массива дисков - задача затратная. Поэтому достаточно двух близких по размеру для организации RAID 0 (у меня скорости до RAID 400 и 317 МБ за 3 сек соответственно, в RAID 700 МБ за 3 сек). 

По памяти: изначально делал средствами gparted. Просто создав два (одинакового размера) пустых раздела на двух HDD, на которые и поставил по флагу "raid".

В таком режиме RAID-массив (черезстрочный) отработал больше 10 лет. Проблема возникла лишь при попытке поменять ядро операционной системе на много более современное (переход с 3.13 на 4.4). См. "Ещё о работе с ядром (на примере ubuntu 14.04)" (здесь) ОШИБКА вида:

Incrementally started RAID arrays
mdadm: CREATE user root not found
mdadm: CREATE group disk not found



Диск, на котором находится корень OS и который в RAID0 не входит:

Диск, на котором находится корень OS и который в RAID0 не входит

sudo fdisk -l

Диск /dev/sdc: 1000.2 Гб, 1000204886016 байт
255 головок, 63 секторов/треков, 121601 цилиндров, всего 1953525168 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   *        2048   165887189    82942571   83  Linux
/dev/sdc2       165887998  1953523711   893817857    5  Расширенный
/dev/sdc5       165888000   182681599     8396800   82  Linux своп / Solaris
/dev/sdc6       182683648  1953523711   885420032   83  Linux

-----

Диск, раздел которого используется для первой части черезстрочного RAID

Диск, раздел которого используется для первой части черезстрочного RAID

Диск /dev/sda: 1000.2 Гб, 1000204886016 байт
255 головок, 63 секторов/треков, 121601 цилиндров, всего 1953525168 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1            2048     6146047     3072000   82  Linux своп / Solaris
/dev/sda2         6146048  1953523711   973688832    5  Расширенный
/dev/sda5         6148096  1953523711   973687808   fd  Автоопределение Linux raid

+ dev_sda_err.png = странное сообщение об ошибке (тревоге), которая указана для этого раздела.

-----

Диск, раздел которого используется для второй части черезстрочного RAID

Диск, раздел которого используется для второй части черезстрочного RAID

Диск /dev/sdb: 1000.2 Гб, 1000204886016 байт
255 головок, 63 секторов/треков, 121601 цилиндров, всего 1953525168 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 512 bytes / 512 bytes
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdb1            2048     6146047     3072000   82  Linux своп / Solaris
/dev/sdb2         6146048  1953523711   973688832    5  Расширенный
/dev/sdb5         6148096  1953523711   973687808   fd  Автоопределение Linux raid

+ dev_sdb_err.png = странное сообщение об ошибке (тревоге), которая указана для этого раздела.

-----

Виртуальный раздел. Это и есть результат черезстрочного массива RAID

Виртуальный раздел. Это и есть результат черезстрочного массива RAID

Диск /dev/md0: 1994.1 Гб, 1994111582208 байт
255 головок, 63 секторов/треков, 242436 цилиндров, всего 3894749184 секторов
Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 512 байт
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/md0p1            2048  3894749183  1947373568   83  Linux

----- 


 

mount
/dev/sdc1 on  /  type ext4 (rw,errors=remount-ro)
/dev/sdc6 on /media/vas_vic/second type ext4 (rw,nosuid,nodev)
/dev/md0p1 on /media/vas_vic/RAIDcommon type ext4 (rw,nosuid,nodev)
 

sudo cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

# / was on /dev/sdc1 during installation
UUID=82339623-ad79-420c-b258-e02ea170014b      /           ext4    errors=remount-ro 0       1

#/dev/sda1
UUID=ee529ca8-6f63-4741-b3d5-64678cb002c3 none           swap    sw           0       0
#/dev/sdb1
UUID=0a24567a-7044-46b0-aeea-ae1476bbf864 none           swap    sw              0       0


# swap was on /dev/sdc5 during installation
UUID=ef0c7c45-4e13-4812-a4a8-ac365fd0987a none            swap    sw              0       0


# second /dev/sdc6
UUID=5b6e87da-b7e1-4da6-9458-3a8161aaf92e  /media/vas_vic/second  ext4 rw,user,auto,exec  0   0
#rw,nosuid,nodev,uhelper=udisks2


# RAIDcommon /dev/md0p1 
UUID=0bc5ea4c-2159-499a-b58a-1d79fcb7355c /media/vas_vic/RAIDcommon/ ext4 rw,user,auto,exec  0   0


Если внесли изменения в /etc/fstab то не забыть:

sudo mount -a    # примонтировать всё, что в этом файле описанно
 



Основная утилита для работы с software RAID: mdadm

Очень тщательное описание работы (здесь)

lsblk   # удобная утилита, чтобы отобразить RAID массив

отклик lsblk, описывающий массив md0

---

sudo mdadm --detail --scan --verbose
ARRAY /dev/md/0 level=raid0 num-devices=2 metadata=1.2 name=virtuos:0 UUID=00e1e8f9:0dc0a24d:458b61ad:82781cce
   devices=/dev/sda5,/dev/sdb5   # эту часть отклика в /etc/mdadm/mdadm.conf писать БЕСПОЛЕЗНО!!! Так как количество devices вместе с единым UUID однозначно описывают ВСЕ элементы массива.

Этот UUID с откликом sudo blkid  взаимодействет ПО ПЕРВОМУ (и второму) задействованному разделу:

/dev/sda5: UUID="00e1e8f9-0dc0-a24d-458b-61ad82781cce" UUID_SUB="c9c15c92-f99d-51c5-0a45-81ebbe992ef8" LABEL="virtuos:0" TYPE="linux_raid_member"

/dev/sdb5: UUID="00e1e8f9-0dc0-a24d-458b-61ad82781cce" UUID_SUB="1898d861-4c14-036f-2755-6bd0853a778f" LABEL="virtuos:0" TYPE="linux_raid_member"

/dev/md0p1: LABEL="RAIDcommon" UUID="0bc5ea4c-2159-499a-b58a-1d79fcb7355c" TYPE="ext4"

Дополняем /etc/mdadm/mdadm.conf

# vas_vic adds this:
DEVICE partitions
ARRAY /dev/md/0 level=raid0 num-devices=2 metadata=1.2 name=virtuos:0 UUID=00e1e8f9:0dc0a24d:458b61ad:82781cce
# devices=/dev/sda5,/dev/sdb5

sudo update-grub

Ещё раз глянуть на творение:

cat /proc/mdstat

md0 : active raid0 sda5[0] sdb5[1]
      1947374592 blocks super 1.2 512k chunks

sudo mdadm -D /dev/md0 

ИЛИ

sudo mdadm --detail /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug  7 15:21:47 2013
     Raid Level : raid0
     Array Size : 1947374592 (1857.16 GiB 1994.11 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent
Update Time : Wed Aug  7 15:21:47 2013
          State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
  Spare Devices : 0
     Chunk Size : 512K

 

           Name : virtuos:0  (local to host virtuos)           

           UUID : 00e1e8f9:0dc0a24d:458b61ad:82781cce         

           Events : 0

    Number   Major   Minor   RaidDevice State       

      0            8           5            0                active sync   /dev/sda5       

      1            8          21           1                active sync   /dev/sdb5

Если не срабатывает (в качестве массива), то попробовать:

mdadm --assemble --scan    # найти, что найдёт и попытаться собрать в массив

mdadm: No arrays found in config file or automatically  # то есть он НЕ ВИДИТ того, что мог бы добавить в массив, хотя RAIDcommon /dev/md0p1 к этому моменту уже был отмонтирован.

sudo mdadm --assemble /dev/md0 /dev/sda5 /dev/sdb5   #  указано попытаться собрать в массив

mdadm: /dev/sda5 is busy - skipping
mdadm: /dev/sdb5 is busy - skipping
#  То есть массив собран-задействован КАКИМ-ТО другим средством!

...


Суть зеркалирования RAID. Это level=raid1

физический носитель HDD1 первое второе третье четвёртое
физический носитель HDD2 первое второе третье четвёртое

При этом OS работает лишь с носителем HDD1. А драйвер RAID автоматически обеспечивает, чтобы на HDD2 была зеркальная копия с HDD1.

Так как такой подход хорош только для ОТКАЗОУТОЙЧИВОСТИ, то есть ошибка пользователя совершённая на HDD1 автоматически транслируется на HDD2. Следовательно для реальных производственных целей удобнее ОБХОД этой технологии на основе ОТСТАЮЩЕЙ СИНХРОНИЗАЦИИ: когда рабочий день закончен и вроде бы разрушительных ошибок не допущено, то только тогда и запускается зеркалирование на HDD2 (то есть по сути используется динамическая копия, отстающая по времени от процесс создания оригинала).

При таком подходе все ценные данные нужно сохранять на резервный носитель (третий HDD)  с использованием (что лучше всего) за счёт самодисциплины пользователя: на окончание работы запускать синхронизацию rsync ИЛИ по anacron (то есть в автоматическом режиме). То есть третий диск в системе появляется, но так как пользователь изначально может определить ценность данных и разложить их по папкам "Нуждается в сохранении back копии" (= unique) / "Не нуждается в резервировании" (= ordinary), то третий диск может быть сущесвенно медленнее и меньшего размера, чем любой из дисков, входящих в черезстрочный RAID.

---

Суть параметров rsync следующая:

sudo rsync -h -r -t -p -o -g -v --progress --delete -u -c /media/vas_vic/RAIDcommon/unique/ /media/second/Backup.Vas/
#  -h, --human-readable        output numbers in a human-readable format (выводить номера в формате понятном человеку)
#  -r, --recursive             recurse into directories (рекурсивно брать содержимое каталогов)
#  -t, --times                 preserve modification times (сохранять [у копии] время изменения [по оригиналу])
#  -p, --perms                 preserve permissions (сохранять права)
#  -o, --owner                 preserve owner (super-user only) (сохранять идентификатор владельца-создателя)
#  -g, --group                 preserve group (сохранять группу)
#  -v, --verbose               increase verbosity (увеличить подробность разъяснений)
#      --progress              show progress during transfer (отображать прогресс-индикатор в течении перемещения)
#      --delete                delete extraneous files from destination dirs (удалять посторонние файлы в получающем директории)
#  -u, --update                skip files that are newer on the receiver (пропускать файлы, которые в получателе новее, чем в оригинале)
#  -c, --checksum              skip based on checksum, not mod-time & size (!!! пропускать файлы базируясь на контрольной сумме, но не на дате и времени)
 

Соответственно, после однократного прогона с параметром -с можно уже упростить работу и его не использовать. Скорость работы возрастёт колосcально.


Ссылки: