22 нояб. 2011 г.

Расширение EBS Volume на Amazon AWS

Амазон славится своей масштабируемостью. И вот если нам стало мало места на нашем виртуальном жестком диске, то его очень легко увеличить.

Заходим в AWS, например: https://console.aws.amazon.com/ec2/home?region=us-east-1#s=Volumes

Тут у нас два пути: 1 - создаем снапшот со старого диска, затем разворачиваем его на новом (но придется вручную увеличивать его объем, т. к. он будет как у старого, а остаток пространсва - неразмеченным), 2 - создать пустой диск и скопировать, например rsync'ом данные со старого диска на новый.
Я пошел по 1му более тернистому пути :)

Создаем снапшот нашего старого EBS volume. Дожидаемся окончания.

Далее пецкаем Create Volume и там выбираем наш только что созданный снапшот. Ждем окончания (не забывая обновлять страничку).

В контекстном меню EBS раздела выбираем Attach volume - далее вирт машину, куда надо его присоединить и то как она будет видна в /dev (например, /dev/sdf) - только выбираем еще не занятое обозначение! иначе операция залипнет.

Затем логинимся на целевую вирт. машину по ssh и монтируем наш новый раздел. У меня тут вылез косяк такого метода, заключающийся в том, что из-за снапшота на новом разделе выделилось столько же места, сколько и на старом. А остальное осталось неразмеченным, потому пришлось расширять раздел:

1) делаем

fsck -c /dev/sdf 

(sdf - имя, которое мы указывали при аттаче).
2) делаем

resize2fs /dev/sdf

(по умолчанию команда расширяет указанный раздел до конца свободного пространства на диске)

Затем можно еще раз чекнуть ФС - на всякий случай.

Если данные на старом разделе во время всей процедуры могли измениться, то сделаем следующее:

mount /dev/sdf /mnt/sdf/
rsync -av /mnt/oldebs/ /mnt/sdf/

Утилита rsync синхронизирует данные из 1го на 2й раздел, сохраняя права.

Теперь стопнем все службы, которые могут использовать старый диск и отмонтируем старый раздел:

umount /mnt/oldebs

И примонтируем на его место новый:

mount /dev/sdf /mnt/oldebs

Теперь остается подправить файл /etc/fstab - чтобы при загрузке ОС монтировался новый раздел, а не старый.

Идем в AWS консоль и делаем старому разделу Detach Volume.

Усё.