Статьи

Как обойти ограничение в 8 ГБ для корневых томов в AWS

 

В AWS, когда экземпляр EC2 запускается впервые, размер его корневого тома определяется резервным снимком AMI. Например, Amazon Linux AMI приведет к созданию корневого тома объемом 8 ГБ. При запуске размер корневого тома может только увеличиваться, но не уменьшаться. У некоторых AMI есть еще большие снимки поддержки. Это приводит к расточительству во многих случаях. Пользователи вынуждены платить за неиспользуемое пространство, так как тома EBS оплачиваются по ГБ в месяц независимо от того, используется это пространство или нет.

На самом деле нет никаких причин, по которым мы должны чрезмерно выделять место на диске в облачной среде, поскольку стало так легко увеличивать размер тома EBS онлайн, как описано здесь в следующих трех шагах:

1. Перейдите в консоль AWS EC2, щелкните правой кнопкой мыши том EBS и выберите «Изменить том», увеличьте размер и нажмите «Изменить».

2. Войдите в экземпляр EC2, используйте  growpartкоманду для увеличения раздела, чтобы заполнить доступное пространство.

growpart /dev/xvda 1

3. Используйте команду, чтобы изменить размер файловой системы, чтобы заполнить доступное пространство раздела. resize2fs 

resize2fs /dev/xvda1

К сожалению, все еще очень трудно уменьшить размер корневого тома EBS, и это можно сделать только в автономном режиме.

В этом блоге я продемонстрирую, как уменьшить размер корневого тома Amazon Linux EC2 с 8 до 4 ГБ, пройдя по шагам. Фактический размер используемой файловой системы составляет около 2 ГБ.

  1. Остановите целевой экземпляр EC2.
  2. Снимок корневого тома EBS.
  3. Создайте том EBS из снимка. Это будет исходный том EBS.
  4. Запустите новый рабочий экземпляр EC2 в том же регионе, что и целевой экземпляр.
  5. Присоедините исходный том EBS к рабочему экземпляру в формате xvdf .
  6. Создайте новый целевой том EBS меньшего размера 4 ГБ. Размер должен быть как минимум немного больше, чем фактический размер используемой файловой системы.
  7. Присоедините новый целевой том EBS к рабочему экземпляру как xvdg .
  8. Проверьте файловую систему на исходном томе EBS. Это необходимо для того, чтобы сделать resize2fs.
e2fsck -p -f /dev/xvdf1

9. Сократите файловую систему до минимального размера.

resize2fs -M /dev/xvdf1

10. Получите общее количество блоков недавно уменьшенной файловой системы.

NEW_FS_BLOCK_COUNT=`tune2fs -l /dev/xvdf1 | grep "Block count:" | awk '{print $3}'`
NEW_FS_BLOCK_SIZE=`tune2fs -l /dev/xvdf1| grep "Block size:" | awk '{print $3}'`
NEW_FS_SECTOR_COUNT=$((NEW_FS_BLOCK_COUNT*NEW_FS_BLOCK_SIZE/512))

11. Скопируйте все вновь сжатые блоки диска файловой системы из источника на новый целевой том EBS.

DD_BS_1M=$((1<<20))
DD_COUNT=$((NEW_FS_SECTOR_COUNT*512/DD_BS_1M+1))
dd if=/dev/xvdf of=/dev/xvdg bs=1M count=${DD_COUNT}

12. Переразделите новый целевой том EBS, чтобы охватить все используемое пространство.

а. Удалить раздел 1.

sgdisk -d 1 /dev/xvdg

б. Получите последний используемый сектор диска.

NEW_DISK_LAST_USABLE_SECTOR=`sgdisk -p /dev/xvdg | grep " last usable sector is " | awk '{print $10}'`

с. Воссоздать раздел 1, чтобы покрыть все полезное пространство.

sgdisk -n 1:4096:${NEW_DISK_LAST_USABLE_SECTOR} /dev/xvdg

13. Увеличьте файловую систему на новом целевом томе EBS, чтобы заполнить пространство нового раздела.

resize2fs /dev/xvdg1

14. Остановите рабочий экземпляр.

15. Отсоедините новый целевой том EBS xvdg от рабочего экземпляра.

16. Отсоедините исходный том EBS xvdf от рабочего экземпляра.

17. Присоедините новый целевой том EBS к целевому экземпляру EC2 как xvda .

18. Запустите целевой экземпляр EC2.

Убедитесь, что все хорошо, прежде чем приступить к очистке.

уборка

  1. Завершить рабочий экземпляр EC2.
  2. Удалите временный целевой том EBS.
  3. Удалить снимок.
  4. Удалить исходный корневой том EBS.

Как показано выше, несмотря на то, что мы можем уменьшить размер корневого тома EBS до лучшего размера, чтобы сэкономить на затратах, этот процесс сложен и подвержен ошибкам. Мы в FittedCloud рады нашей недавно выпущенной функции изменения размера корневого тома, которая может помочь пользователям снизить стоимость за счет уменьшения размера корневого тома EBS одним щелчком мыши из нашего веб-интерфейса SaaS.