В 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 ГБ.
- Остановите целевой экземпляр EC2.
- Снимок корневого тома EBS.
- Создайте том EBS из снимка. Это будет исходный том EBS.
- Запустите новый рабочий экземпляр EC2 в том же регионе, что и целевой экземпляр.
- Присоедините исходный том EBS к рабочему экземпляру в формате xvdf .
- Создайте новый целевой том EBS меньшего размера 4 ГБ. Размер должен быть как минимум немного больше, чем фактический размер используемой файловой системы.
- Присоедините новый целевой том EBS к рабочему экземпляру как xvdg .
- Проверьте файловую систему на исходном томе 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.
Убедитесь, что все хорошо, прежде чем приступить к очистке.
уборка
- Завершить рабочий экземпляр EC2.
- Удалите временный целевой том EBS.
- Удалить снимок.
- Удалить исходный корневой том EBS.
Как показано выше, несмотря на то, что мы можем уменьшить размер корневого тома EBS до лучшего размера, чтобы сэкономить на затратах, этот процесс сложен и подвержен ошибкам. Мы в FittedCloud рады нашей недавно выпущенной функции изменения размера корневого тома, которая может помочь пользователям снизить стоимость за счет уменьшения размера корневого тома EBS одним щелчком мыши из нашего веб-интерфейса SaaS.