Расширить экземпляр EC2 легко, как вдох (например, создать AMI, запустить экземпляр из него, а затем изменить размер хранилища).
Но уменьшить его становится все труднее. Я бы хотел уменьшить размер корневого тома EBS экземпляра Amazon Web Services (AWS) EC2. В сети есть пары старых процедур высокого уровня. Более подробная версия, которую я нашел, - это годичный ответ на вопрос StackOverflow: как я могу уменьшить объем моего ebs , шаги имеют довольно высокий уровень:
Создайте новый том EBS нужного размера (например, / dev / xvdg)
Запустите экземпляр и подключите к нему оба тома EBS.
Проверьте файловую систему (исходного корневого тома): (например) e2fsck -f / dev / xvda1
Максимальное сжатие исходного корневого тома: (например, ext2 / 3/4) resize2fs -M -p / dev / xvda1
Скопируйте данные с помощью dd:
Выберите размер куска (мне нравится 16 МБ)
Рассчитать количество фрагментов (используя количество блоков из вывода resize2fs): blocks * 4 / (chunk_size_in_mb * 1024) - округлить немного для безопасности
Скопируйте данные: (например) dd if = / dev / xvda1 ibs = 16M of = / dev / xvdg obs = 16M count = 80
Измените размер файловой системы на новом (меньшем) томе EBS: (например) resize2fs -p / dev / xvdg
Проверьте файловую систему (исходного корневого тома): (например) e2fsck -f / dev / xvdg
Отключите новый корневой том EBS и прикрепите его к исходному экземпляру.
Я не могу найти подробное пошаговое «как» решение.
Мой корневой том EBS подключен к экземпляру HVM Ubuntu.
Любая помощь могла бы быть полезна.
Ответы:
В консоли AWS:
Остановите экземпляр, размер которого вы хотите изменить
Создайте снимок активного тома, а затем из этого снимка создайте том «SSD общего назначения».
Создайте другой том «SSD общего назначения» в нужном вам размере.
Присоедините эти 3 тома к экземпляру как:
Запустите экземпляр.
Войдите в новый экземпляр через SSH.
создайте эти новые каталоги:
mkdir /source /target
mkfs.ext4 /dev/xvdf
mount -t ext4 /dev/xvdf /target
e2label /dev/xvdf /
mount -t ext4 /dev/xvdg /source
rsync -ax /source/ /target
Примечание: нет "/" следующего "/ target". Кроме того, может быть несколько ошибок в символических ссылках и атрибутах, но изменение размера все еще было успешным
umount /target
umount /source
Вернитесь в консоль AWS. Остановите экземпляр и отсоедините все тома.
Присоедините том нового размера к экземпляру как: "/ dev / sda1"
Запустите экземпляр, и он должен загрузиться.
ШАГ 10 ВАЖНО : Пометьте новый том «e2label», как указано выше, иначе экземпляр будет загружаться в aws, но не пройдет проверку соединения.
источник
Ни одно из других решений не будет работать, если том используется в качестве корневого (загрузочного) устройства.
На вновь созданном диске отсутствует загрузочный раздел, поэтому необходимо установить GRUB и правильно установить некоторые флаги, прежде чем экземпляр сможет использовать его в качестве корневого тома.
Мое (на сегодня работающее ) решение для уменьшения корневого тома:
Фон: у нас есть экземпляр A, корневой объем которого мы хотим уменьшить. Давайте назовем этот том VA. Мы хотим уменьшить VA с 30 ГБ, скажем, до 10 ГБ
ПРИМЕЧАНИЕ. Следующие шаги в основном взяты из решения @bill:
Остановите экземпляр, размер которого вы хотите изменить (A).
Создайте снимок тома VA, а затем из этого снимка создайте том «SSD общего назначения». Этот том мы назовем его VASNAP.
Спин новый экземпляр с Amazon Amazon, мы будем называть этот экземпляр C. Мы просто будем использовать этот экземпляр, чтобы скопировать содержимое VASNAP в VB. Возможно, мы могли бы также использовать экземпляр A для выполнения этих шагов, но я предпочитаю делать это на независимой машине.
Прикрепите следующие тома к экземпляру C. / dev / xvdf для VB. / dev / xvdg для VASNAP.
Перезагрузите экземпляр C.
Войдите в экземпляр C через SSH.
Создайте эти новые каталоги:
mkdir /source /target
mkfs.ext4 /dev/xvdf1
Если вы не получили ошибок, перейдите к шагу 11. В противном случае, если у вас его нет
/dev/xvdf1
, вам нужно создать раздел, выполнив следующие действия i-vii:я) Если
/dev/xvdf1
не существует по какой-либо причине, вам нужно создать его. Сначала введите:sudo fdisk /dev/xvdf
,ii) Протрите диск, введя:
wipefs
iii) Создайте новый раздел, введя:
n
iv) Войдите,
p
чтобы создать основной разделv) Продолжайте нажимать ввод, чтобы продолжить настройки по умолчанию.
vi) Когда он снова запросит команду, введите,
w
чтобы записать изменения и выйти.vii) Убедитесь, что у вас есть
/dev/xvdf1
раздел, выполнив:lsblk
Вы должны увидеть что-то вроде:
Теперь перейдите к шагу 11.
mount -t ext4 /dev/xvdf1 /target
e2label /dev/xvdf1 /
mount -t ext4 /dev/xvdg1 /source
rsync -vaxSHAX /source/ /target
Примечание: нет "/" следующего "/ target". Кроме того, может быть несколько ошибок в символических ссылках и атрибутах, но изменение размера все еще было успешным
umount /target
Назад в Консоль AWS: извлечение VB из экземпляра C, а также извлечение VA из A.
Присоедините том нового размера (VB) к экземпляру как: "/ dev / xvda"
Загрузочный экземпляр A, теперь его корневое устройство 10 ГБ :)
Удалите оба экземпляра B и C, а также все тома, кроме VB, который теперь является корневым томом экземпляра A.
источник
/dev/sda1
Разве мы не должны прикрепить том на шаге 17 вместо/dev/xvda
@RubenSerrate?Следующие шаги работали для меня
Шаг 1. Создание снимка корневого тома ebs и создание нового тома из снимка (назовем это томом-копией)
Шаг 2. Создайте новый экземпляр с корневым томом ebs нужного размера. (давайте назовем это томом с измененным размером) Этот том ebs будет иметь правильный раздел для загрузки. (Создание нового тома ebs с нуля у меня не сработало)
Шаг 3. Присоедините изменение размера тома и копию тома к экземпляру.
Шаг 4. Формат громкости изменить размер.
Примечание: убедитесь, что объем раздела введен
/dev/xvdf1
не/dev/xvdf
Шаг 5. Смонтируйте изменение размера тома и скопируйте тома mkdir / mnt / copy mkdir / mnt / resize
Шаг 6. Скопируйте файлы
Шаг 7. Убедитесь, что e2label совпадает с корневым томом
Шаг 8. Обновите grub.conf для тома-копии, чтобы он соответствовал новому udid тома
Найдите и замените uudid в /boot/grub/grub.cfg
Шаг 9. Размонтирование томов
Шаг 10. Присоедините новый том ebs с измененным размером к экземпляру / dev / sda1
источник
blkid
безsudo
возврата кэшированных результатов без их проверки. Так что, похоже, UUID не изменился.Вот альтернативный подход;
Подключите и смонтируйте старый том EBS на работающем экземпляре EC2. Если вы хотите скопировать загрузочный том, лучше сделать это в другом экземпляре, со старым томом, смонтированным как данные, а не с томом, используемым в качестве действующей системы.
Создайте новый том EBS нужного размера.
Присоедините новый том к экземпляру и (осторожно) отформатируйте в нем новую файловую систему (например, используя mkfs). Смонтировать его.
Скопируйте содержимое старой файловой системы со старого тома на новый:
Размонтируйте новый том и отсоедините его от экземпляра.
Если вы копировали корневую файловую систему, то:
Создайте снимок EBS нового тома.
Зарегистрируйте снимок как новый AMI.
источник
Статья ниже - это хорошее и простое руководство о том, как уменьшить размер тома EBS. Имеет простое пошаговое руководство и скриншоты.
Уменьшите размер тома EBS в вашем экземпляре EC2
источник