Расширение Linux Raid

Date October 31st, 2014 Author Vitaly Agapov

Счастье классиков в том, что они мертвы.
Наше и ваше счастье в том, что они мертвы.

Акутагава Рюноскэ «Слова пигмея»

raidНебольшая заметка про то, как увеличить размер программного RAID после, например, замены дисков на более ёмкие. Пусть мы заменили диски в linux raid:

mdadm –remove /dev/md0 /dev/sda1
mdadm –add /dev/md0 /dev/sdb1

Дождались полного ресинка:

watch -n 10 "cat /proc/mdstat | grep resync"
   [======>…………..] resync = 34.6% (1248559808/3599812864) finish=164.0min speed=238826K/sec

Cкорость ресинка при этом можно увеличить:

echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

Простой случай

Если нужно расширить RAID 0/1/4/5/6, то всё просто:

mdadm –grow /dev/mdX –size=max

Или, если использовался bitmap:

mdadm –grow /dev/mdX –bitmap none
mdadm –grow /dev/mdX –size max
mdadm –wait /dev/mdX
mdadm –grow /dev/mdX –bitmap internal

Затем просто расширяем файловую систему:

fsck /dev/md0
resize2fs /dev/md0

Случай посложнее

Утилита mdadm не позволяет делать grow на raid10, поэтому его нужно разобрать и собрать снова. Сначала надо сделать на всякий случай резервную копию файлов (tar или cp -a), остановить процессы, использующие раздел (lsof), отмонтировать swap, если swapfile лежит на нужном разделе (swapoff -a).

Дальше:

umount /dev/md1

Или в режие lazy, если не отмонтируется:

umount -l /dev/md1

Пересобираем RAID:

mdadm –stop /dev/md1
mdadm –zero-superblock /dev/sd{a,b}2
mdadm –zero-superblock /dev/sd{c,d}1
mdadm –create /dev/md1 –level=10 –raid-devices=4 /dev/sda2 /dev/sdb2 /dev/sdc1 /dev/sdd1

Проверяем, правильный ли размер

mdadm –detail /dev/md1

Дальше как обычно – дожидаемся ребилда и расширяем файловую систему:

cat /proc/mdstat | grep resync
fsck.ext3 -f /dev/md1
resize2fs /dev/md1
mount /dev/md1

Tags:
Category: Linux | No comments »

Comments

Leave a comment

 Comment Form