===== Как расширить существующий программный 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]]