
Производить конвертацию мы будем на сервере HP Proliant DL160 G8 с обычным разбиением по разделам (не lvm). Т.е. диски sda1...sda8, каждый из которых примонтирован в определенный каталог. В случае с lvm процесс немного легче и удобнее. Статья должна подойти для любого hp-сервера, в котором используется официальная утилита hpacucli. В данном примере у нас CentOS 6.5, но подойдет любой Linux, поддерживаемый hpacucli.
В процессе конвертации для добавления места в CentOS придется отмонтировать каталог, в который мы будем добавлять свободное место (последний в таблице разделов parted — sda8), а также сделать reboot, если только все разделы sda1..sda8 не используются ни одним процессом.
Добавляем диски
Проверяем какой у нас RAID, сколько в нем дисков, а также сколько дисков не использовано:
#hpacucli ctrl all show configВ нашем случае команда покажет 4 диска в RAID 10 и 4 незадействованных диска, которые мы только что вставили.
Добавляем незадействованные диски в RAID 10:
#hpacucli ctrl slot=2 ld 1 add drives=allunassignedКонвертация RAID 10 в RAID 6
Конвертируем командой:
#hpacucli ctrl slot=2 ld 1 modify raid=6Проверяем, что теперь мы имеем RAID 6 из 8ми дисков:
#hpacucli ctrl all show configSmart Array P420 in Slot 2 (sn: PDSXK0BRH5S1AY)array A (SAS, Unused Space: 1525708 MB)logicaldrive 1 (558.7 GB, RAID 6 (ADG), OK)physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK)Расширяем полученный RAID до максимального размера:
#hpacucli ctrl slot=2 ld 1 modify size=maxarray A (SAS, Unused Space: 0 MB)Добавление места в CentOS
Заставляем CentOS пересканировать RAID:
#echo 1 > /sys/block/sda/device/rescanСмотрим, что физически место появилось:
#fdisk -lДобавление свободного места к последнем разделу в таблице разделов
Посмотрим текущую таблицу разделов, переведя единицы измерения в сектора:
#parted /dev/sda(parted) unit s(parted) printModel: HP LOGICAL VOLUME (scsi)Disk /dev/sda: 3515228764sSector size (logical/physical): 512B/512BPartition Table: msdosNumber Start End Size Type File system Flags1 2048s 1026047s 1024000s primary ext4 boot2 1026048s 84912127s 83886080s primary ext43 84912128s 168798207s 83886080s primary ext44 168798208s 1171743323s 1002945116s extended5 168800256s 252686335s 83886080s logical ext46 252688384s 294631423s 41943040s logical ext47 294633472s 303022079s 8388608s logical linux-swap(v1)8 303025152s 1171743323s 868718172s logical ext4Видим, что последний раздел 8й. Запоминаем начало 8го раздела (303025152s). Смотрим, куда он примонтирован:
#mount |grep sda8/dev/sda8 on /var/lib type ext4 (rw)Ищем, не использует ли кто-нибудь каталог /var/lib:
#lsof /var/libВыключаем все сервисы/процессы, которые показала эта утилита.
Теперь можно отмонтировать каталог:
#umount /var/libЕсли у нас только один раздел, на котором располагается корень системы, то нам не повезло, и придется загружаться в rescue режиме, после чего можно продолжать дальше.
Добавить место мы можем только в последний (8й) раздел.
Сначала увеличим 4й extended раздел, т.к. все разделы, номера которых больше четырех, по сути содержатся внутри 4го:
#parted(parted) resize 4 168798208s -1sУдаляем 8й раздел (с данными ничего не случится) и создаем новый, используя запомненный номер сектора начала этого раздела.
(parted) rm 8(parted) mkpart logical ext4 303024128s -1sТеперь чтобы CentOS увидел измененную таблицу разделов, если ни один процесс не использует разделы sda1..sda8, то просто делаем partprobe /dev/sda, иначе (что более вероятно) просто перезагружаем сервер.
После этого увеличиваем файловую систему раздела (если нам удалось избежать ребута, то нужно не забыть примонтировать раздел обратно командой mount /dev/sda8 /var/lib):
#resize2fs /dev/sda8Проверяем:
#df -h
/dev/sda8 1.5T 229M 1.4T 1% /var/libP.S.
Зачем мы конвертировали RAID 10 в RAID 6?
Потому что он значительно быстрее для 8-ми дисков. Этот факт проверен и протестирован мной лично.
Полезные ссылки:
Hpacucli Utility for Linux — All Commands Guide.
