===== Как расширить существующий программный RAID 6 (добавление дополнительных дисков), созданный с помощью mdadm из дисковых multipath-устройств в CentOS =====
В этой статье мы произведём расширение [[unix-linux:centos:linux-how-to-create-software-raid-via-mdadm-over-multipath-disks-in-centos|ранее созданного]] программного **RAID 6** **/dev/md0**, в котором на текущий момент участвует 10 дисков. Мы добавим 2 дополнительных диска, которые также будут представлены в системе как **multipath**-устройства
\\
==== Обновление информации о дисках ====
Итак, предполагаем, что 2 новых диска уже презентованы нашему файловому серверу на уровне SAN, и каждый из дисков доступен по двум путям (multipath).
Получим список каналов подключений (scsi_host):
# ls -la /sys/class/scsi_host/
... host0 -> ../../devices/pci0000:00/0000:00:1f.1/ata1/host0/scsi_host/host0
... host1 -> ../../devices/pci0000:00/0000:00:1f.1/ata2/host1/scsi_host/host1
... host2 -> ../../devices/pci0000:00/0000:00:04.0/0000:13:00.0/host2/scsi_host/host2
... host3 -> ../../devices/pci0000:00/0000:00:04.0/0000:13:00.1/host3/scsi_host/host3
... host4 -> ../../devices/platform/host4/scsi_host/host4
Проверим список устройств, доступных системе:
# cat /proc/scsi/scsi
Если добавленные диски не отображается, то попробуем обновить информацию соответствующих каналов:
# echo "- - -" > /sys/class/scsi_host/host2/scan
# echo "- - -" > /sys/class/scsi_host/host3/scan
Снова посмотрим список устройств. Добавленные диски должны появиться (вывод команды сокращён):
# cat /proc/scsi/scsi
...
Host: scsi2 Channel: 00 Id: 00 Lun: 11
Vendor: HP Model: MSA VOLUME Rev: 7.20
Type: Direct-Access ANSI SCSI revision: 04
Host: scsi2 Channel: 00 Id: 00 Lun: 12
Vendor: HP Model: MSA VOLUME Rev: 7.20
Type: Direct-Access ANSI SCSI revision: 04
Host: scsi3 Channel: 00 Id: 00 Lun: 11
Vendor: HP Model: MSA VOLUME Rev: 7.20
Type: Direct-Access ANSI SCSI revision: 04
Host: scsi3 Channel: 00 Id: 00 Lun: 12
Vendor: HP Model: MSA VOLUME Rev: 7.20
Type: Direct-Access ANSI SCSI revision: 04
...
Как видно, в моём примере в систему добавлено 2 диска (**Lun11** и **Lun12**), каждый из которых доступен по двум путям (**scsi2** и **scsi3**)
Если после последней команды добавленные диски всё же не появились, то можно попробовать перезагрузить сервер.
Теперь посмотрим, что нам покажет служба **multipathd**:
# multipath -ll
В выводе команды мы должны увидеть наши 2 добавленных multupath-диска (вывод команды сокращён) :
...
mpathv (3600508b30091bb409d8550206947004a) dm-11 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:11 sdx 65:112 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 2:0:0:11 sdv 65:80 active ready running
mpathu (3600508b30091bb406c4d212983eb004a) dm-10 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:12 sdw 65:96 active ready running
`-+- policy='service-time 0' prio=10 status=enabled
`- 3:0:0:12 sdy 65:128 active ready running
...
В нашем примере:
* multupath-диск **mpathv** собран из устройств **scsi2\Lun11** и **scsi3\Lun11**
* multupath-диск **mpathu** собран из устройств **scsi2\Lun12** и **scsi3\Lun12**
Посмотрим список устройств **/dev/dm***. Эти устройства мы будем использовать для расширения нашего RAID-массива (вывод команды сокращён):
# ls -la /dev/mapper/
...
rwxrwxrwx. 1 root root 8 Nov 27 08:28 mpathu -> ../dm-10
lrwxrwxrwx. 1 root root 8 Nov 27 08:28 mpathv -> ../dm-11
\\
==== Добавление SPARE-дисков в RAID-массив ====
Посмотрим состояние нашего программного RAID-массива и увидим то, какие **/dev/dm*** устройства уже включены в него:
# 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 : Sun Nov 27 08:32:28 2016
State : clean, checking
Active Devices : 10
Working Devices : 10
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Check Status : 74% complete
Name : 0
UUID : 5baba46f:31132696:5f8b64f3:1e9605d9
Events : 23854
Number Major Minor RaidDevice State
0 253 4 0 active sync /dev/dm-4
1 253 3 1 active sync /dev/dm-3
2 253 7 2 active sync /dev/dm-7
3 253 5 3 active sync /dev/dm-5
4 253 8 4 active sync /dev/dm-8
5 253 1 5 active sync /dev/dm-1
6 253 6 6 active sync /dev/dm-6
7 253 2 7 active sync /dev/dm-2
8 253 0 8 active sync /dev/dm-0
9 253 9 9 active sync /dev/dm-9
Добавляем в RAID-массив **/dev/md0** первое multupath-устройство **dm-10** (**mpathu**)
#mdadm --add /dev/md0 /dev/dm-10
mdadm: added /dev/dm-10
Добавляем в RAID-массив **/dev/md0** второе multupath-устройство **dm-11** (**mpathv**)
# mdadm --add /dev/md0 /dev/dm-11
mdadm: added /dev/dm-11
Устройства будут добавлены как **spare**-диски. В нашем примере эти диски имеют номера **10** и **11** внутри массива **md0**:
# 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 : 12
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Sun Nov 27 09:04:03 2016
State : clean, checking
Active Devices : 10
Working Devices : 12
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Check Status : 83% complete
Name : 0
UUID : 5baba46f:31132696:5f8b64f3:1e9605d9
Events : 23908
Number Major Minor RaidDevice State
0 253 4 0 active sync /dev/dm-4
1 253 3 1 active sync /dev/dm-3
2 253 7 2 active sync /dev/dm-7
3 253 5 3 active sync /dev/dm-5
4 253 8 4 active sync /dev/dm-8
5 253 1 5 active sync /dev/dm-1
6 253 6 6 active sync /dev/dm-6
7 253 2 7 active sync /dev/dm-2
8 253 0 8 active sync /dev/dm-0
9 253 9 9 active sync /dev/dm-9
10 253 10 - spare /dev/dm-10
11 253 11 - spare /dev/dm-11
Как видим автоматически запущена процедура проверки состояния (State : ..., **checking** )
Следим за статусом окончания процедуры командой (процесс может занять длительное время):
# watch cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 dm-11[11](S) dm-10[10](S)
dm-5[3] dm-4[0] dm-1[5] dm-3[1] dm-9[9] dm-2[7] dm-6[6] dm-8[4] dm-0[8] dm-7[2]
3905765376 blocks super 1.2 level 6, 512k chunk, algorithm 2 [10/10] [UUUUUUUUUU]
[=========>...] check = 83.2% (406424328/488220672) finish=98.7min speed=13803K/sec
bitmap: 0/4 pages [0KB], 65536KB chunk
unused devices:
\\
==== Расширение RAID-массива ====
Когда процедура проверки массива будет окончена, можно приступать к преобразованию spare-дисков в активные диски RAID-массива.
С учётом добавленных дисков в массиве будет 12 дисков, поэтому используем команду:
# mdadm --grow /dev/md0 --raid-devices=12
Команда может выполниться, а может вызвать ошибку типа
mdadm: Failed to initiate reshape!
unfreeze
Тогда можно просто попробовать выполнить команду повторно.
После этого можно следить за преобразованием RAID-массива (процесс может занять длительное время)
# watch cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 dm-11[11] dm-10[10]
dm-5[3] dm-4[0] dm-1[5] dm-3[1] dm-9[9] dm-2[7] dm-6[6] dm-8[4] dm-0[8] dm-7[2]
3905765376 blocks super 1.2 level 6, 512k chunk, algorithm 2 [12/12] [UUUUUUUUUUUU]
[>............] reshape = 0.1% (518144/488220672) finish=1577.2min speed=5153K/sec
bitmap: 0/4 pages [0KB], 65536KB chunk
Когда процесс перестроения массива закончен, снова посмотрим его свойства:
# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Wed Aug 31 11:05:49 2016
Raid Level : raid6
Array Size : 4882206720 (4656.04 GiB 4999.38 GB)
Used Dev Size : 488220672 (465.60 GiB 499.94 GB)
Raid Devices : 12
Total Devices : 12
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Mon Nov 28 20:50:44 2016
State : clean
Active Devices : 12
Working Devices : 12
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : 0
UUID : 5baba46f:31132696:5f8b64f3:1e9605d9
Events : 35875
Number Major Minor RaidDevice State
0 253 4 0 active sync /dev/dm-4
1 253 3 1 active sync /dev/dm-3
2 253 7 2 active sync /dev/dm-7
3 253 5 3 active sync /dev/dm-5
4 253 8 4 active sync /dev/dm-8
5 253 1 5 active sync /dev/dm-1
6 253 6 6 active sync /dev/dm-6
7 253 2 7 active sync /dev/dm-2
8 253 0 8 active sync /dev/dm-0
9 253 9 9 active sync /dev/dm-9
11 253 11 10 active sync /dev/dm-11
10 253 10 11 active sync /dev/dm-10
Как видим, размер нашего RAID-массива увеличен на объём добавленных дисков.
\\
**Дополнительные источники информации**:
* [[https://raid.wiki.kernel.org/index.php/Growing|Linux RAID Wiki - Growing]]