Итак вернувшись из отпуска с новыми силами получаем задачу:
На хранилище ReadyNAS 3200, один из разделов на котором — это RAID5 4х3TB, свободный объем, не спеша, стремится к нулю.
На разделе хранится инкрементная резервная копия рабочих файлов крупного издательства, чистить нечего.
Необходимо увеличить размер раздела, путем замены дисков 3TB->4TB, без простоев и потери производительности в дневное рабочее время.
Намного теории:
ReadyNAS 3200 не плохое хранилище среднего уровня, имеет 12 корзин для дисков и построено на базе серверной материнской платы SuperMicro X7SB3-NI015 с двумя распаянными контроллерами SAS/SATAII на 8 и SATAII на 6 дисков (Правда SAS не поддерживается софтом RAIDiator).
Контроллер на 8 дисков (LSI SAS1068E) имеет ограничение максимального объема диска — 2TB.
Встроенный в южный мост контроллер на 6 дисков (Intel® ICH9) в этом замечен не был, к счастью проблемный раздел располагался на этом контроллере.
При создании раздела это хранилище предлагает выбор из двух технологий:
1. X-RAID2 — фирменная технология Netgear (можно начать с одного диска, и потом добавлять дополнительные и хранилище автоматически увеличит раздел. В общем случае это выглядит так: SINGLE-DISK/RAID1/RAID5 и т.д.)
2. Flex-RAID — классический RAID. Сами выбираем тип рейда при создании.
На данном хранилище был создан как раз Flex-RAID5 из четырех дисков 3TB.
Гугление вывело на release notes прошивки RAIDiator 4.2.16, пишут мол:
«Volume expansion is now supported in Flex-RAID mode.»
Отлично, у нас прошивка уже RAIDiator 4.2.19, но на форуме настоятельно рекомендуют обновиться до последней на данный момент RAIDiator 4.2.24.
Делаем это. (здесь эта прошивка http://www.readynas.com/?p=7002)
Далее из инструкции выясняется — для чудесного перехода на более емкие диски, нужно ПООЧЕРЕДНО на живую поменять каждый диск на больший и КАЖДЫЙ РАЗ ДОЖДАТЬСЯ ОКОНЧАНИЯ СИНХРОНИЗАЦИИ RAID.
Делаем это каждый вечер перед уходом домой, в нашем случае каждая синхронизация занимала ~ 7 часов и соответственно 4 суток ожидания 🙂
Далее хранилище предлагает расширить раздел и перезагрузить устройство для принятия изменений.
Дальнейшие действия совершались вечерком из дома…
В ВАШЕМ СЛУЧАЕ ОНИ ВЫПОЛНЯЮТСЯ НА ВАШ СТРАХ И РИСК, У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ.
Соглашаемся и перезагружаем устройство и WTF — ничего не изменилось…
Начинаем немного злиться и лесть на ReadyNAS по ssh.
К счастью создатели хранилища не стали изобретать велосипед, и организовали разделы с помощью обычных линуксовых инструментов (Multiple Device driver aka Software RAID).
Соответственно ничто не мешает нам ручками помочь хранилищу сделать то — что надо.
Пробуем сделать расширение раздела руками:
# mdadm —grow /dev/md3 —size=max
mdadm: component size of /dev/md3 has been set to 2925544448K
Прикольно, ничего не изменилось.
#mdadm -Q —detail /dev/md3
/dev/md3:
Version : 1.2
Creation Time : Sat Sep 3 00:00:48 2011
Raid Level : raid5
Array Size : 8776633344 (8370.05 GiB 8987.27 GB)
Used Dev Size : 2925544448 (2790.02 GiB 2995.76 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Sep 10 14:42:49 2013
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Name : 30469A8006F4:3
UUID : 0583271d:181640c9:0eec43b1:ba89ead0
Events : 190
Number Major Minor RaidDevice State
5 8 3 0 active sync /dev/sda3
6 8 19 1 active sync /dev/sdb3
7 8 35 2 active sync /dev/sdc3
4 8 51 3 active sync /dev/sdd3
Посмотрим там:
#cd /sys/block/md3/md
# cat component_size
2925544448
# grep . dev-sd*/size
dev-sda3/size:2925544448
dev-sdb3/size:2925544448
dev-sdc3/size:2925544448
dev-sdd3/size:2925544448
Так я и думал, размеры softraid остались прежними, от старых дисков.
Непорядок, нужно это поправить, но как узнать нужную цифру..
fdisk -l /dev/sda
fdisk: device has more than 2^32 sectors, can’t use all of them
Found valid GPT with protective MBR; using GPT
Disk /dev/sda: 4294967295 sectors, 2047G
Logical sector size: 512
Disk identifier (GUID): fbd24c16-20be-442d-a1d8-8ad79b00519b
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 7814037134
Number Start (sector) End (sector) Size Code Name
1 64 8388671 4096M 0700
2 8388672 9437247 512M 0700
3 9437248 7814033072 3721G 0700
Путем нехитрых манипуляций получаем: (7814033072-9437248)/2 = 3902297912
#echo 3902297912 > dev-sda3/size
#echo 3902297912 > dev-sdb3/size
#echo 3902297912 > dev-sdc3/size
#echo 3902297912 > dev-sdd3/size
# mdadm —grow /dev/md3 —size=max
mdadm: component size of /dev/md3 has been set to 3902296832K
ну вот это другое дело, осталось дождаться окончания синхронизации…
# mdadm -Q —detail /dev/md3
/dev/md3:
Version : 1.2
Creation Time : Sat Sep 3 00:00:48 2011
Raid Level : raid5
Array Size : 11706890496 (11164.56 GiB 11987.86 GB)
Used Dev Size : 3902296832 (3721.52 GiB 3995.95 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Tue Sep 10 15:19:05 2013
State : clean, resyncing
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 64K
Rebuild Status : 74% complete
Name : 30469A8006F4:3
UUID : 0583271d:181640c9:0eec43b1:ba89ead0
Events : 191
Number Major Minor RaidDevice State
5 8 3 0 active sync /dev/sda3
6 8 19 1 active sync /dev/sdb3
7 8 35 2 active sync /dev/sdc3
4 8 51 3 active sync /dev/sdd3
Так как у нас lvm, неоходимо расширить сначала Physical volume:
# pvdisplay /dev/md3
— Physical volume —
PV Name /dev/md3
VG Name d
PV Size 8.17 TB / not usable 0
Allocatable yes (but full)
PE Size (KByte) 65536
Total PE 133920
Free PE 0
Allocated PE 133920
PV UUID 9i2Pbk-Iy5y-3QEB-PHYJ-0KF9-2fuL-xEfdTz
# pvresize /dev/md3
Physical volume «/dev/md3» changed
1 physical volume(s) resized / 0 physical volume(s) not resized
# pvdisplay /dev/md3
— Physical volume —
PV Name /dev/md3
VG Name d
PV Size 10.90 TB / not usable 0
Allocatable yes
PE Size (KByte) 65536
Total PE 178632
Free PE 44712
Allocated PE 133920
PV UUID 9i2Pbk-Iy5y-3QEB-PHYJ-0KF9-2fuL-xEfdTz
# vgdisplay d
— Volume group —
VG Name d
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size 10.90 TB
PE Size 64.00 MB
Total PE 178632
Alloc PE / Size 133920 / 8.17 TB
Free PE / Size 44712 / 2.73 TB
VG UUID mYXHrA-mLuu-aybF-H6ZO-irZC-ujwQ-q9NlaW
Volume group уже расширилась
Ну и расширяем Logical volume:
# lvdisplay /dev/d/d
— Logical volume —
LV Name /dev/d/d
VG Name d
LV UUID 0kLV54-g1y5-OQN0-Hx01-eap3-1NUD-M3pdfF
LV Write Access read/write
LV Status available
# open 0
LV Size 8.17 TB
Current LE 133920
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
Вроде логично написать 10.90T из предыдущего листинга
lvextend -L10.90T /dev/d/d
Rounding up size to full physical extent 10.90 TB
Extending logical volume d to 10.90 TB
Logical volume d successfully resized
# lvdisplay /dev/d/d
— Logical volume —
LV Name /dev/d/d
VG Name d
LV UUID 0kLV54-g1y5-OQN0-Hx01-eap3-1NUD-M3pdfF
LV Write Access read/write
LV Status available
# open 0
LV Size 10.90 TB
Current LE 178586
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0
Ну и напоследок нужно растянуть файловую систему ext4 на новый объем:
# umount /dev/d/d
# resize2fs /dev/d/d
# mount /dev/d/d
Profit.
P.S. вычитал еще одно решение — просто добавить -r к lvextend…
На данный момент нет комментариев