Итак вернувшись из отпуска с новыми силами получаем задачу:

На хранилище 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…

,
Trackback

На данный момент нет комментариев

Добавьте ваш комментарий