Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:centos:linux-how-to-create-software-raid-via-mdadm-over-multipath-disks-in-centos

Как создать программный RAID используя mdadm из дисковых multipath-устройств в CentOS Linux 7.2

В моём случае используется СХД MSA 1500 CS, которая подключена к двум фабрикам SAN (к двум оптическим коммутаторам). К MSA1500 по SCSI подключены 2 дисковых полки MSA20. В одну из полок установлены 10 дисков SATA 7.2K 500GB

Контроллеры MSA1500 имеют ограничение при создании RAID-массивов - максимальный объём RAID, в независимости от уровня RAID, упирается в 2TB.

Настройка СХД MSA 1500 CS

Посмотрим какие диски доступны в MSA 1500 CS

CLI-1> show disks

Disk List:   (box,bay)    (B:T:L)      Size     Speed    Units
Enclosure 5:    SATA     (0:04:00)  PROLIANT 8LCE   2.08
Enclosure 6:    SATA     (1:04:00)  PROLIANT 8LCE   2.08
   Disk601     (6,01)    (1:04:01)    500.0GB  160 MB/s  none
   Disk602     (6,02)    (1:04:02)    500.0GB  160 MB/s  none
   Disk603     (6,03)    (1:04:03)    500.0GB  160 MB/s  none
   Disk604     (6,04)    (1:04:04)    500.0GB  160 MB/s  none
   Disk605     (6,05)    (1:04:05)    500.0GB  160 MB/s  none
   Disk606     (6,06)    (1:04:06)    500.0GB  160 MB/s  none
   Disk607     (6,07)    (1:04:07)    500.0GB  160 MB/s  none
   Disk608     (6,08)    (1:04:08)    500.0GB  160 MB/s  none
   Disk609     (6,09)    (1:04:09)    500.0GB  160 MB/s  none
   Disk610     (6,10)    (1:04:10)    500.0GB  160 MB/s  none

Создаём с использованием каждого отдельного диска отдельные логический массив уровня RAID-0. Например для первого диска disk601 команда будет выглядеть следующим образом (unit, то есть RAID массивы нумеруем по порядку начиная с 0):

CLI-1> add unit 0 data="disk601-disk601" raid_level=0

First volume to be configured on these drives.
Logical Unit size                 =     476906 MB
RAID overhead                     =          0 MB
Total space occupied by new unit  =     476906 MB
Free space left on this array:    =          0 MB
Unit 0 is created successfully.

Аналогичным образом создаются отельные RAID0 массивы для других дисков:

CLI-1> add unit 1 data="disk602-disk602" raid_level=0
CLI-1> add unit 2 data="disk603-disk603" raid_level=0
...
CLI-1> add unit 9 data="disk610-disk610" raid_level=0

Проверим, что у нас в итоге получилось:

CLI-1> show disks

Disk List:   (box,bay)    (B:T:L)      Size     Speed    Units
Enclosure 5:    SATA     (0:04:00)  PROLIANT 8LCE   2.08
Enclosure 6:    SATA     (1:04:00)  PROLIANT 8LCE   2.08
   Disk601     (6,01)    (1:04:01)    500.0GB  160 MB/s  0
   Disk602     (6,02)    (1:04:02)    500.0GB  160 MB/s  1
   Disk603     (6,03)    (1:04:03)    500.0GB  160 MB/s  2
   Disk604     (6,04)    (1:04:04)    500.0GB  160 MB/s  3
   Disk605     (6,05)    (1:04:05)    500.0GB  160 MB/s  4
   Disk606     (6,06)    (1:04:06)    500.0GB  160 MB/s  5
   Disk607     (6,07)    (1:04:07)    500.0GB  160 MB/s  6
   Disk608     (6,08)    (1:04:08)    500.0GB  160 MB/s  7
   Disk609     (6,09)    (1:04:09)    500.0GB  160 MB/s  8
   Disk610     (6,10)    (1:04:10)    500.0GB  160 MB/s  9

Как видим, каждый диск теперь отнесён к отдельному unit, то есть RAID-массиву уровня 0.

Зонирование оптических коммутаторов SAN

Настраиваем зонирование на оптических свичах SAN. То есть создаём возможность доступности созданных нами RAID-0 массивов с СХД MSA1500 для FC HBA контроллера нашего файлового сервера.

Настройка CentOS Linux - Инициализация multipath-устройств

После настройки зонирования переходим на наш Linux сервер и пробуем обновить на нём информацию об устройствах доступных из SAN:

# ls -la /sys/class/scsi_host/

total 0
drwxr-xr-x.  2 root root 0 Aug 31 11:30 .
drwxr-xr-x. 48 root root 0 Aug 31 11:30 ..
lrwxrwxrwx.  1 root root 0 Aug 31 11:30 host0 -> ../../devices/pci...
lrwxrwxrwx.  1 root root 0 Aug 31 11:30 host1 -> ../../devices/pci...
lrwxrwxrwx.  1 root root 0 Aug 31 11:30 host2 -> ../../devices/pci...
lrwxrwxrwx.  1 root root 0 Aug 31 11:30 host3 -> ../../devices/pci...


# echo "- - -" > /sys/class/scsi_host/host[0-3]/scan

В некоторых случаях это может не помочь, тогда просто пробуем перезагрузить сервер.

После перезагрузки увидим, что логические дисковые устройства с MSA1500 доступны в системе. Причём каждое устройство в нашем случае доступно по двум путям, типа:

# cat /proc/scsi/scsi

Attached devices:
...
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: HP       Model: MSA CONTROLLER   Rev: 7.20
  Type:   RAID                             ANSI  SCSI revision: 04
...
Host: scsi3 Channel: 00 Id: 00 Lun: 00
  Vendor: HP       Model: MSA CONTROLLER   Rev: 7.20
  Type:   RAID                             ANSI  SCSI revision: 04
...

Настройка multipath

Пример настройки DM Multipath мы уже рассматривали ранее в статье Настраиваем Device Mapper Multipathing в CentOS Linux 7.2 для FC HBA при подключении к СХД HP 3PAR 7200 (3PAR OS v. 3.2.2). Здесь повторим главные моменты тезисно.

Устанавливаем пакет device-mapper-multipath:

# yum install device-mapper-multipath

Генерируем файл в конфигурации «по умолчанию» (/etc/multipath.conf):

# mpathconf --enable

При необходимости корректируем multipath.conf по свою СХД.

Выполняем запуск службы multipathd и проверяем результат:

# service multipathd start 
# multipath -ll
...
mpathk (3600508b30091bb407da37e0e4c440045) dm-4 HP      ,MSA VOLUME
size=466G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 3:0:0:1  sdk 8:160 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 2:0:0:1  sda 8:0   active ready running
mpathl (3600508b30091bb40e026456edf0d0047) dm-9 HP      ,MSA VOLUME
size=466G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=50 status=active
| `- 2:0:0:6  sdf 8:80  active ready running
`-+- policy='service-time 0' prio=10 status=enabled
  `- 3:0:0:6  sdp 8:240 active ready running
...

Как видим, наши multipath-устройства успешно нашли свои пути и «собрались».

Теперь из 20 устройств (10 логических массивов c MSA1500, каждое из которых видно системе по двум путям) мы получили 10 multipath-устройств:

# ls -la /dev/mapper/

drwxr-xr-x.  2 root root     260 Aug 31 11:30 .
drwxr-xr-x. 22 root root    4440 Aug 31 11:30 ..
crw-------.  1 root root 10, 236 Aug 31 11:30 control
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathk -> ../dm-4
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathl -> ../dm-9
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathm -> ../dm-0
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathn -> ../dm-1
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpatho -> ../dm-3
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathp -> ../dm-8
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathq -> ../dm-5
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpathr -> ../dm-2
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpaths -> ../dm-6
lrwxrwxrwx.  1 root root       7 Aug 31 11:30 mpatht -> ../dm-7

Далее эти multipath-устройства мы будем использовать как диски для построения программного RAID.

Настройка CentOS Linux - Создание программного RAID

Настройка mdadm - создание программного RAID

Более развёрнуто настройку программного RAID мы рассматривали ранее в заметке CentOS Linux 7.2 и программный RAID с помощью mdadm. Здесь опять же пробежимся тезисно.

Устанавливаем пакет mdadm:

# yum install mdadm -y

Создаём RAID массив уровня 6 из 10 наших multipath-устройств:

# mdadm --create /dev/md0 --level=6 --raid-devices=10 /dev/mapper/mpath[klmnopqrst]

mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

Проверяем состояние массива командой:

# mdadm --detail /dev/md0

/dev/md0:
        Version : 1.2
  Creation Time : Wed Aug 31 11:05:49 2016
     Raid Level : raid6
     Array Size : 3905765376 (3724.83 GiB 3999.50 GB)
  Used Dev Size : 488220672 (465.60 GiB 499.94 GB)
   Raid Devices : 10
  Total Devices : 10
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Wed Aug 31 17:40:31 2016
          State : active, resyncing
 Active Devices : 10
Working Devices : 10
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

  Resync Status : 1% complete

           Name : 0
           UUID : 5baba46f:31132696:5f8b64f3:1e9605d9
         Events : 605

    Number   Major   Minor   RaidDevice State
       0     253        4        0      active sync   /dev/dm-4
       1     253        9        1      active sync   /dev/dm-9
       2     253        0        2      active sync   /dev/dm-0
       3     253        1        3      active sync   /dev/dm-1
       4     253        3        4      active sync   /dev/dm-3
       5     253        8        5      active sync   /dev/dm-8
       6     253        5        6      active sync   /dev/dm-5
       7     253        2        7      active sync   /dev/dm-2
       8     253        6        8      active sync   /dev/dm-6
       9     253        7        9      active sync   /dev/dm-7

Как видим, наш массив успешно создан и находится в стадии инициализации.

Генерируем конфигурационный файл, чтобы наш массив автоматически стартовал после перезагрузки системы в нужной нам конфигурации:

# mdadm --detail --scan > /etc/mdadm.conf

После генерации файла, правим его

# cat /etc/mdadm.conf

DEVICE /dev/dm*
DEVICE /dev/mapper/mpath*
ARRAY /dev/md0 metadata=1.2 name=0 UUID=5baba46f:31132696:5f8b64f3:1e9605d9
MAILADDR DST-KOM-FS03-Admins@holding.com
MAILFROM KOM-FS03@holding.com

Запускаем службу mdmonitor и проверяем её состояние:

# service mdmonitor restart
# service mdmonitor status


Монтирование RAID-тома

Создаём файловую систему на массиве (в нашем случае это будет ext4), затем создаём каталог, в который будем монтировать созданный раздел и, наконец, монтируем этот раздел:

# mkfs.ext4 /dev/md0
# mkdir /mnt/mdadm-vv1
# mount /dev/md0 /mnt/mdadm-vv1
# df -H /dev/md0

Теперь пропишем в файл /etc/fstab информацию для автоматического монтирования раздела в точку монтирования /mnt/mdadm-vv1 в процессе загрузки системы. Для этого сначала узнаем UUID раздела:

# blkid /dev/md0

/dev/md0: UUID="ace6cab1-015a-475c-aa09-11e12c046db1" TYPE="ext4"

Затем добавим информацию о монтировании в конец файла /etc/fstab

...
#
# Mount software RAID-disk /dev/md0 on /mnt/mdadm-vv1
#

UUID=ace6cab1-015a-475c-aa09-11e12c046db1 /mnt/mdadm-vv1 ext4 discard,defaults 0 2

После этого перезагружаем сервер и убеждаемся в том, что конечный результат достигнут и раздел автоматически монтируется в точку монтирования /mnt/mdadm-vv1. Пробуем создать новый пустой файл в смонтированном в каталог разделе, проверяя тем самым возможность записи в этот каталог:

# touch /mnt/mdadm-vv1/write-test.txt
# rm /mnt/mdadm-vv1/write-test.txt

Автор первичной редакции:
Алексей Максимов
Время публикации: 31.08.2016 17:54

Обсуждение

Ваш комментарий:
 

unix-linux/centos/linux-how-to-create-software-raid-via-mdadm-over-multipath-disks-in-centos.txt · Последние изменения: 31.08.2016 17:57 — Алексей Максимов