EC2 Не удается изменить размер тома после увеличения размера


96

Я выполнил шаги по изменению размера тома EC2

  1. Остановил экземпляр
  2. Сделал снимок текущего тома
  3. Создал новый том из предыдущего снимка с большим размером в том же регионе
  4. Отключил старый том от экземпляра
  5. Подключил новый том к экземпляру в той же точке монтирования

Старый том был 5 ГБ, а созданный мной - 100 ГБ. Теперь, когда я перезапускаю экземпляр и запускаю его, я df -h Iвсе еще вижу это

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

Это то, что я получаю при беге

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

Если я убегу, cat /proc/partitionsя увижу

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

Насколько я понимаю, если я выполнил правильные шаги, xvde должен иметь те же данные, что и xvde1, но я не знаю, как его использовать.

Как я могу использовать новый том или размонтировать xvde1 и вместо этого смонтировать xvde?

Я не могу понять что делаю не так

Я тоже пробовал sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

Кстати, это Linux-бокс с centos 6.2 x86_64

Заранее спасибо за помощь

Ответы:


71

Спасибо, Вильман, ваши команды работали правильно, необходимо рассмотреть небольшое улучшение, если мы увеличиваем EBS до большего размера

  1. Остановить экземпляр
  2. Создать снимок из тома
  3. Создайте новый том на основе снимка, увеличив размер
  4. Проверьте и запомните текущую точку монтирования тома (т.е. /dev/sda1)
  5. Отключить текущий объем
  6. Прикрепите недавно созданный том к экземпляру, установив точную точку монтирования
  7. Перезапустите экземпляр
  8. Доступ через SSH к экземпляру и запуск fdisk /dev/xvde

    ВНИМАНИЕ: DOS-совместимый режим устарел. Настоятельно рекомендуется выключить режим (команда 'c') и изменить единицы отображения на секторы (команда 'u').

  9. Нажмите, pчтобы показать текущие разделы

  10. Нажмите, dчтобы удалить текущие разделы (если их более одного, вы должны удалять по одному) ПРИМЕЧАНИЕ: не волнуйтесь, данные не потеряны
  11. Нажмите, nчтобы создать новый раздел
  12. Нажмите, pчтобы сделать его основным
  13. Нажмите, 1чтобы установить первый цилиндр
  14. Установите желаемое новое пространство (если оно пусто, зарезервировано все пространство)
  15. Нажмите, aчтобы сделать его загрузочным
  16. Хит 1и wписать изменения
  17. Перезагрузите экземпляр ИЛИ используйте partprobe(из partedпакета), чтобы сообщить ядру о новой таблице разделов
  18. Войдите через SSH и запустите resize2fs / dev / xvde1
  19. Наконец, проверьте новое пространство, запустив df -h

1
«ВНИМАНИЕ: DOS-совместимый режим устарел. Настоятельно рекомендуется выключить этот режим (команда 'c') и изменить единицы отображения на секторы (команда 'u')». Мне в этом не было необходимости (Ubuntu 13.04). Он уже отключил совместимость с DOS и по умолчанию использовал секторы. Нажатие cи uфактически переключилось на устаревшие режимы.
wisbucky

6
Решение сработало великолепно, но экземпляр застрял на «1/2 проверки пройдено» с восклицательным знаком (ReadHat 6.5). Чтобы исправить это, я установил «первый цилиндр» на 16 (как было раньше). После этого экземпляр запустился нормально с «2/2 проверки пройдены». Надеюсь, это кому-то поможет ...
user3586516

1
Мне тоже пришлось изменить первый цилиндр, но я должен был изменить его на 2048. Я бы рекомендовал проверить текущую настройку раздела, прежде чем удалять его.
Дойли

9
После перезагрузки экземпляра я не могу подключиться через SSH. Время ожидания подключения истекло, и консоль aws показывает, что не может начать проверку состояния. Я думаю, он мертв. Есть идеи, что делать?
Ричард

5
Этот ответ теперь устарел, поскольку AWS поддерживает изменение размера томов EBS в режиме онлайн.
Дейл Андерсон

310

Больше не нужно останавливать экземпляр и отключать том EBS, чтобы изменить его размер!

13 февраля 2017 г. Amazon объявила: « Обновление Amazon EBS - новые эластичные тома меняют все »

Процесс работает, даже если расширяемый том является корневым томом работающего экземпляра!


Допустим, мы хотим увеличить загрузочный диск Ubuntu с 8G до 16G «на лету».

шаг-1) войдите в веб-консоль AWS -> EBS -> щелкните правой кнопкой мыши тот, размер которого вы хотите изменить -> «Изменить том» -> измените поле «Размер» и нажмите кнопку [Изменить]

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь


step-2) ssh в экземпляр и измените размер раздела:

давайте перечислим блочные устройства, подключенные к нашему ящику:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

Как вы можете видеть, / dev / xvda1 по-прежнему является разделом 8 ГиБ на устройстве 16 ГиБ, и на томе нет других разделов. Давайте использовать "growpart" для увеличения размера раздела 8G до 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

Давайте проверим результат (вы видите, что / dev / xvda1 теперь 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

Многие ответы SO предлагают использовать fdisk с удалением / воссозданием разделов, что является неприятным, рискованным и подверженным ошибкам процессом, особенно когда мы меняем загрузочный диск.


Шаг 3) измените размер файловой системы, чтобы полностью использовать пространство нового раздела
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

Таким образом, у нас нет времени простоя и много нового пространства для использования.
Наслаждайтесь!

Обновление: Обновление: используйте sudo xfs_growfs / dev / xvda1 вместо resize2fs, когда файловая система XFS.


изменение размера раздела было большим подспорьем .... !! Самое замечательное, что он работал даже на корневом томе.
piyushmandovra

4
Кто-нибудь, пожалуйста, примет это как правильный ответ? Просто потому что ... это так.
eduardohl 05

Твердо, большое спасибо ... Я был так скептичен к выполнению шагов, упомянутых в ответах выше, но это было чертовски круто ...
AAgg

4
Ха, официальные документы не упоминают Growpart, поэтому я не мог заставить это работать раньше. Благодарность!
Ибрагим

1
@Shihas, да. В этом весь смысл. Даже загрузочный диск, смонтированный с «root», можно безопасно увеличить без перезагрузки!
Дмитрий Шевкопляс

42

Комментарий префекта от jperelli выше.

Сегодня я столкнулся с такой же проблемой. В документации AWS нет четкого упоминания Growpart. Я разобрался на собственном горьком опыте, и действительно, две команды отлично работали на M4.large и M4.xlarge с Ubuntu.

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

второй ответ для прикрепления, и этот ответ для изменения размера
Adiii

Удивительный! работал на моем экземпляре t2.small. Уф. Думал, что это будет кровавее. Благодарность!
publicknowledge

Кажется, я не могу установить cloud-guest-utils, который содержит Growpart. Linux версии 3.16.0-4-amd64
nettie

16

[Решено]

Это то, что нужно было сделать

  1. Остановить экземпляр
  2. Создать снимок из тома
  3. Создайте новый том на основе снимка, увеличив размер
  4. Проверьте и запомните текущую точку монтирования тома (т.е. / dev / sda1)
  5. Отключить текущий объем
  6. Прикрепите недавно созданный том к экземпляру, установив точную точку монтирования
  7. Перезапустите экземпляр
  8. Доступ через SSH к экземпляру и запуск fdisk /dev/xvde
  9. Нажмите, pчтобы показать текущие разделы
  10. Нажмите, dчтобы удалить текущие разделы (если их более одного, вы должны удалять по одному) ПРИМЕЧАНИЕ: не волнуйтесь, данные не потеряны
  11. Нажмите, nчтобы создать новый раздел
  12. Нажмите, pчтобы сделать его основным
  13. Нажмите, 1чтобы установить первый цилиндр
  14. Установите желаемое новое пространство (если оно пусто, зарезервировано все пространство)
  15. Нажмите, aчтобы сделать его загрузочным
  16. Хит 1и wписать изменения
  17. Перезагрузить экземпляр
  18. Войдите через SSH и запустите resize2fs /dev/xvde1
  19. Наконец, проверьте новое пространство. df -h

Это оно

Удачи!


1
В томах Amazon EBS кажется важным использовать ту же точку монтирования в resize2fs, что и в fdisk. df показывает что-то вроде / dev / xvda1 в качестве присоединенного тома EBS, но команда resize2fs работала для меня только тогда, когда я использовал идентификатор / dev / sdf1, который я использовал, когда создавал новый раздел в fdisk.
Гаррет МакДэйд 05

Это в документации AWS. Что плохо, так это то, что их процедуры все еще не завершены после 3 лет этого. Если у вас есть изображение, вы можете вернуться назад. Всегда можно временно повесить новый диск на экземпляр, на котором запущен рабочий стол, но необходимость его монтирования для изменения размера может стать проблемой, если вы подумываете об использовании gparted. gcloud изменяет размер на лету.
mckenzm

Мое запоминающее устройство (/ dev / xvda1) началось с сектора 16065, а не с сектора 1. Таким образом, шаг 13 (нажатие 1 для установки первого цилиндра) в моем случае должен был быть 16065.
Саймон Паарлберг

Не используйте это решение, вы можете потерять свои данные. На самом деле, я понял, что не выбирайте вариант удаления раздела, если показывать значения списка разделов в таблице разделов, потому что, если список есть, он буквально удаляет раздел, поэтому данные будут потеряны, даже если ответ говорит: удалять". Есть способ увеличить размер раздела, проверьте внизу, есть ли другие утилиты, которые помогут плавно увеличить размер вашего раздела.
piyushmandovra

6
  1. войдите в веб-консоль AWS -> EBS -> щелкните правой кнопкой мыши тот, размер которого вы хотите изменить -> «Изменить том» -> измените поле «Размер» и нажмите кнопку [Изменить]

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

Это сокращенная версия ответа Дмитрия Шевкопляса. В документации AWS growpartкоманда не указана . Это нормально работает для ubuntu AMI.


6
  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1

две приведенные выше команды сэкономили мое время для экземпляров AWS ubuntu ec2.



4

На всякий случай, если кто-то здесь для облачной платформы GCP google,
попробуйте следующее:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1

2

Вы делали на этом томе раздел? Если вы это сделали, вам нужно сначала увеличить раздел.


нет, я не. Должен ли я? Как мне это сделать? Помните, что этот новый том, который я прикрепил, должен содержать все предыдущие данные, потому что это снимок исходного тома
Уилман Арамбилете

Нет. Но я получал эту ошибку, если был прикреплен раздел. Пойдите и дважды проверьте, что вы сделали том правильного размера, и дважды проверьте, что вы смонтировали новый том.
chantheman

Кроме того, для этого не нужно останавливать экземпляр. Это безопасно, если у вас есть записи на этом томе, но вы можете сделать снимок его с запущенным экземпляром.
chantheman

1

Флаг загрузки (a) не работал в моем случае (EC2, centos6.5), поэтому мне пришлось заново создать том из моментального снимка. После повторения всех шагов, ЗА ИСКЛЮЧЕНИЕМ загрузочного флага - все работало безупречно, поэтому я смог изменить resize2fs после. Спасибо!


1

Спасибо, @Dimitry, это сработало отлично с небольшими изменениями, соответствующими моей файловой системе.

источник: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

Затем используйте следующую команду, подставив точку монтирования файловой системы (файловые системы XFS должны быть смонтированы, чтобы изменить их размер):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

Примечание. Если вы получили сообщение «Ошибка xfsctl: Невозможно выделить память», вам может потребоваться обновить ядро ​​Linux на вашем экземпляре. Для получения дополнительной информации обратитесь к документации вашей конкретной операционной системы. Если вы получили сообщение «Файловая система уже имеет длину nnnnnnn блоков». Нечего делать! об ошибке, см. Расширение раздела Linux.


0

Не хватает репутации, чтобы прокомментировать выше; но также обратите внимание на комментарии выше, что вы можете повредить свой экземпляр, если начнете с 1; если вы нажмете «u» после запуска fdisk до того, как укажете свои разделы с помощью «p», это фактически даст вам правильный начальный номер, чтобы вы не повредили свои тома. Для centos 6.5 AMI, как уже упоминалось выше, 2048 был правильным для меня.


0

Итак, в случае, если у кого-то была проблема, когда они столкнулись с этой проблемой при 100% использовании, и нет места даже для запуска команды growpart (потому что она создает файл в / tmp)

Вот команда, которую я обнаружил, которая обходит, даже когда используется том EBS, а также если у вас нет места на вашем ec2, и вы на 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

см. этот сайт здесь:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis


Эта команда должна сопровождаться sudo resize2fs /dev/xvda1для обновления /etc/fstab, только после этого df -hбудет показывать возросшую дисковое пространство
karmendra

0

Поместите пробел между именем и номером, например:

sudo growpart /dev/xvda 1

Обратите внимание, что между именем устройства и номером раздела есть пробел.

Чтобы расширить раздел на каждом томе, используйте следующие команды growpart. Обратите внимание, что между именем устройства и номером раздела есть пробел.

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.