AWS — EBS уменьшение размера

Есть EC2 Instance с именем "Galaxy", и с EBS диском размером 250Gb и файловой системой ext4, нужно его урезать до 100Gb.

1. Создаем временный инстанс (В той же Availability zone, что и существующий инстанс), для копирования данных. Размер его диска нам не важен, к этому инстансу мы будем монтировать существующий EBS, и новый, уменьшенного размера.

 

2. Останавливаем инстанс с EBS  диском, который собираемся уменьшать.

3. Переходим в Volumes, и нужному EBS диску делаем "Detach Volume". Так же после "Detach Volume", желательно сделать снапшот диска.

 

Его статус должен изменится на "available"

 

4. Создаем новый EBS диск нужного нам размера, в данном случае 100Gb. Диск должен быть в той же Availability zone, в которой находится текущий EBS диск и временный инстанс.

 

Теперь у нас 2 EBS диска в статусе "available"

 

5. Делаем "Attach Volume" старого EBS диска и нового к временному инстансу.

 

Они теперь в статусе "in-use"

 

6. Подключаемся через SSH на временный инстанс.

 

7. Проверяем наши диски, и так же по их размеру определяемся с именами. 2 EBS диска, с которого и на который мы будем копировать, не должны быть примонтированы.

sudo fdisk -l
Disk /dev/xvda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe6e324f2

Device     Boot Start      End  Sectors Size Id Type
/dev/xvda1       2048     4095     2048   1M 83 Linux
/dev/xvda2 *     4096 20971486 20967391  10G 83 Linux


Disk /dev/xvdf: 250 GiB, 268435456000 bytes, 524288000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xeeaf5908

Device     Boot Start       End   Sectors  Size Id Type
/dev/xvdf1 *     2048 524287966 524285919  250G 83 Linux


Disk /dev/xvdg: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

 

Внимательно смотрим имена старого и нового дисков

/dev/xvdf — Старый EBS диск, который будем уменьшать
/dev/xvdg — Новый EBS диск, на который будем копировать данные

 

8. Создадим директории для монтирования:

sudo mkdir /source /target

 

9. Создадим раздел на новом диске:

sudo fdisk /dev/xvdg

n (create new partition)
All option by default
a (add boot)
w

 

10. Создаем файловую систему ext4 на новом разделе:

sudo mkfs.ext4 /dev/xvdg1

 

11. Монтируем созданный раздел:

sudo mount -t ext4 /dev/xvdg1 /target

 

12. Обязательный шаг, так как без него не будет монтироваться новый раздел через fstab

sudo e2label /dev/xvdg1 "cloudimg-rootfs"

 

13. Монтируем раздел, с которого будем копировать данные:

sudo mount -t ext4 /dev/xvdf1 /source

 

14. Копируем данные со старого раздела на новый:

sudo rsync -avHAX /source/ /target

 

15. Переустанавливаем Grub на новом разделе:

sudo grub-install --boot-directory=/target/boot /dev/xvdg

 

16. Так же проверим, что UUID нового диска совпадают с UUID в файле "/target/boot/grub/grub.cfg". UUID можно посмотреть следующей командой:

sudo blkid

 

17. Размонтируем EBS диски:

sudo umount /source
sudo umount /target

 

Теперь отмонтируем новый EBS диск (100Gb) от временного инстанса и монтируем к инстансу "Galaxy" как "/dev/sda1"

 

Теперь можно запускать инстанс "Galaxy" и проверять, если все хорошо, то временный инстанс и старый EBS диск можно удалять.

0 0 vote
Рейтинг статьи

Метки: Метки

Подписаться
Уведомление о
guest
3 комментариев
старее
новее большинство голосов
Inline Feedbacks
View all comments
Алексей
Алексей
6 месяцев назад

Попробовал таким образом изменить количество inodes на диске. Обнаружил опечатку — в grub-install аргументах надо —boot-directory вместо —root-directory В конце перед Attach надо сделать Detach (очевидно, но лучше указать все шаги) А моя проблема такая — диск нормально не загрузился. Причина мне не ясна и как исследовать непонятно, так как делал на AWS это в первый раз. А внешние признаки такие: загрузка пошла, сначала инстанс показал, что успешно загрузился (через некоторое время), но по ssh на него доступа не было (сервис на порту не отвечал от слова совсем — не слушал порт). Еще через некоторое время инстанс перешел снова в… Подробнее »