Ни одно из других решений не будет работать, если том используется в качестве корневого (загрузочного) устройства.
На вновь созданном диске отсутствует загрузочный раздел, поэтому необходимо установить GRUB и правильно установить некоторые флаги, прежде чем экземпляр сможет использовать его в качестве корневого тома.
Мое (на сегодня работающее ) решение для уменьшения корневого тома:
Фон: у нас есть экземпляр A, корневой объем которого мы хотим уменьшить. Давайте назовем этот том VA. Мы хотим уменьшить VA с 30 ГБ, скажем, до 10 ГБ
- Создайте новый экземпляр ec2, B, с той же операционной системой, что и экземпляр A. В качестве хранилища выберите том того же типа, что и VA, но размером 10 ГБ. (или какой бы ни был ваш целевой размер). Итак, теперь у нас есть экземпляр B, который использует этот новый том (назовем его VB) в качестве корневого тома.
- После запуска нового экземпляра (B). Остановите его и отсоедините его корневой том (VB).
ПРИМЕЧАНИЕ. Следующие шаги в основном взяты из решения @bill:
Остановите экземпляр, размер которого вы хотите изменить (A).
Создайте снимок тома VA, а затем из этого снимка создайте том «SSD общего назначения». Этот том мы назовем его VASNAP.
Спин новый экземпляр с Amazon Amazon, мы будем называть этот экземпляр C. Мы просто будем использовать этот экземпляр, чтобы скопировать содержимое VASNAP в VB. Возможно, мы могли бы также использовать экземпляр A для выполнения этих шагов, но я предпочитаю делать это на независимой машине.
Прикрепите следующие тома к экземпляру C. / dev / xvdf для VB. / dev / xvdg для VASNAP.
Перезагрузите экземпляр C.
Войдите в экземпляр C через SSH.
Создайте эти новые каталоги:
mkdir /source /target
- Отформатируйте основной раздел VB с файловой системой ext4:
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
Вы должны увидеть что-то вроде:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
Теперь перейдите к шагу 11.
- Смонтируйте его в этот каталог:
mount -t ext4 /dev/xvdf1 /target
- Это очень важно, файловой системе нужен e2label для Linux, чтобы распознать его и загрузить, используйте «e2label / dev / xvda1» на активном экземпляре, чтобы увидеть, каким он должен быть, в данном случае метка: «/»
e2label /dev/xvdf1 /
- Смонтировать VASNAP в / source:
mount -t ext4 /dev/xvdg1 /source
- Скопируйте содержимое:
rsync -vaxSHAX /source/ /target
Примечание: нет "/" следующего "/ target". Кроме того, может быть несколько ошибок в символических ссылках и атрибутах, но изменение размера все еще было успешным
- Umount VB:
umount /target
Назад в Консоль AWS: извлечение VB из экземпляра C, а также извлечение VA из A.
Присоедините том нового размера (VB) к экземпляру как: "/ dev / xvda"
Загрузочный экземпляр A, теперь его корневое устройство 10 ГБ :)
Удалите оба экземпляра B и C, а также все тома, кроме VB, который теперь является корневым томом экземпляра A.