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

Я следовал за шагами для изменения размера тома 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 box с centos 6.2 x86_64

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

20 ответов

Решение

Спасибо, Уилман, ваши команды сработали правильно, нужно учесть небольшое улучшение, если мы увеличиваем 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. Нажмите, чтобы сделать его загрузочным
  16. Нажмите 1 и w, чтобы записать изменения
  17. Перезагрузите экземпляр ИЛИ используйте partprobe (от parted пакет) рассказать ядру о новой таблице разделов
  18. Войдите через SSH и запустите resize2fs /dev/xvde1
  19. Наконец, проверьте новое место, запустив df -h

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

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

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


Скажем, мы хотим увеличить загрузочный диск Ubuntu с 8G до 16G "на лету".

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


шаг 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 с удалением / воссозданием разделов, что является неприятным, рискованным и подверженным ошибкам процессом, особенно когда мы меняем загрузочный диск.


step-3) resize file system to grow all the way to fully use new partition space

# 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% /

So we have zero downtime and lots of new space to use.
Наслаждайтесь!

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

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

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

[Решено]

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

  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. Нажмите, чтобы сделать его загрузочным
  16. Нажмите 1 и w, чтобы записать изменения
  17. Перезагрузить экземпляр
  18. Войдите через SSH и запустите resize2fs /dev/xvde1
  19. Наконец, проверьте новый космос работает df -h

Это оно

Удачи!

Это будет работать для файловой системы XFS, просто запустите эту команду

xfs_growfs /

Как только вы измените размер своей EBS,

Список блочных устройств

sudo lsblk

      NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  10G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /

Развернуть раздел

Предположим, вы хотите расширить второй раздел, смонтированный на /,

sudo growpart /dev/nvme0n1 2

Если все ваше пространство израсходовано в корневом томе, и в основном вы не можете получить доступ, например, с сообщением об ошибке Unable to growpart because no space left,

  1. временно смонтировать /tmpобъем: sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
  2. размонтировать после полного изменения размера: sudo umount -l /tmp

Подтвердите новый размер

      NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  20G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /

Изменить размер файловой системы

Для XFS (используйте точку монтирования в качестве аргумента)

sudo xfs_growfs /

Для EXT4 (используйте имя раздела в качестве аргумента)

sudo resize2fs /dev/nvme0n1p2

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

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

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

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

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

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

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

Я столкнулся с аналогичной проблемой для системы Ubuntu в EC2.

Сначала проверил файловую систему

      lsblk

Затем, после увеличения размера тома с консоли, я выполнил команды ниже

      sudo growpart /dev/nvme0n1 1

Это покажет изменение в команде lsblk

Затем я мог бы расширить FS с помощью

      sudo resize2fs /dev/nvme0n1p1

Наконец, проверьте это с помощьюdf -hкоманда, это сработает

Так что в случае, если у кого-то возникла проблема, когда он столкнулся с этой проблемой со 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

Что касается моего EC2, он дает мне следующее:

      growpart /dev/xvda 1
FAILED: /dev/xvda: does not exist

Итак, я просто использовал это после изменения размера на веб-сайте управления AWS, и у меня это сработало:

      resize2fs /dev/xvda1

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

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

Затем используйте следующую команду, подставив точку монтирования файловой системы (файловые системы 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.

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

Если размер диска EC2 Linux не соответствует размеру подключенного тома устройства...

Я подключил два устройства

      /dev/sda1  8GB
/dev/xvda 20GB

но продолжал настаивать

      xvda     202:0    0     8G  0 disk

Затем меня осенило, что sda1 может скрыватьxvdaустройство, и я переименовал его в

      /dev/sda1  8GB
/dev/xvde 20GB

и вуаляlsblk

      xvda     202:0    0     8G  0 disk
xvde     202:64   0    20G  0 disk

Такое поведение может зависеть от вашей ОС/ядра...

Загрузочный флаг (a) не работал в моем случае (EC2, centos6.5), поэтому мне пришлось заново создать том из снимка. После повторения всех шагов, за исключением загрузочного флага - все работало безупречно, так что я смог после resize2fs. Спасибо!

Всего одна деталь. Вам не нужно ждать завершения состояния тома «Оптимизация».

Как упоминалось здесь:

Прежде чем начать (Расширение файловой системы Linux). Убедитесь, что изменение тома прошло успешно и что он находится в состоянии оптимизации или завершения. Дополнительные сведения см. в разделе Мониторинг хода изменения тома. (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recouncee-expanded-volume-linux.html)

И здесь:

Изменение размера обычно занимает несколько секунд и вступает в силу после перехода тома в состояние оптимизации. (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-volume-modifications.html)

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

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

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

sudo growpart /dev/xvda 1

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

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

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

Я изменил существующий том с 8 на 20 для решения вышеуказанной проблемы. После этого

      df -h
lsblk


sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp

sudo growpart /dev/xvda 1

в зависимости от ОС или файловой системы, после этого

      sudo resize2fs /dev/xvda 1

sudo umount /tmp
Другие вопросы по тегам