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


95

Я дотримувався кроків щодо зміни розміру тома 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, але я не знаю, як ними користуватися

Як я можу використовувати новий том або umount xvde1 і замість цього змонтувати xvde?

Я не можу зрозуміти, що я роблю не так

Я теж намагався sudo ifs_growfs /dev/xvde1

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

До речі, це Linux коробка з centos 6.2 x86_64

Заздалегідь дякую за допомогу

Відповіді:


70

Дякую, Вільмане, ваші команди працювали коректно, слід враховувати невеликі вдосконалення, якщо ми збільшуємо 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. Перезавантажте екземпляр АБО використовуйте partprobepartedпакету), щоб повідомити ядру про нову таблицю розділів
  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.
Дейл Андерсон,

308

Не потрібно більше зупиняти екземпляр і від'єднувати том 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 для видалення / відтворення розділів, що є неприємним, ризикованим та схильним до помилок процесом, особливо коли ми змінюємо завантажувальний диск.


крок-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.


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

4
Хтось, будь ласка, прийме це як правильну відповідь? Просто тому, що ... це так.
eduardohl

Твердо, дякую тонна ... Я був таким скептичним, виконуючи дії, згадані у вище відповідях, але це було так проклято ...
AAgg

4
Ага, в офіційних документах не згадується growpart, саме тому я раніше не міг змусити це працювати. Дякую!
Ібрагім

1
@Shihas, так. У цьому вся суть. Навіть завантажувальний "кореневий" привід можна безпечно збільшити без необхідності перезавантаження!
Дмитро Шевкопляс

42

Коментар префекта від jperelli вище.

Сьогодні я зіткнувся з такою ж проблемою. У документації AWS чітко не згадується growpart. Я зрозумів важкий шлях, і справді дві команди чудово працювали на M4.large та M4.xlarge з Ubuntu

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

друга відповідь для додавання, і ця відповідь для зміни розміру
Adiii,

Дивовижний! працював на моєму екземплярі t2.small. Шфу. Думав, це буде кривавіше за це. Дякую!
publicknowledge

Здається, я не можу встановити хмарні гостьові утиліти, які містять 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.
Garreth McDaid

Це є в документації AWS. Погано, що їхні процедури все ще є неповними через 3 роки цього. Якщо у вас є зображення, ви можете повернутися назад, звичайно. Завжди можна тимчасово повісити новий диск з екземпляра, на якому запущено робочий стіл, але необхідність його монтування для зміни розміру може стати проблемою, якщо ви думали використовувати gparted. gcloud змінюється на льоту.
mckenzm

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

Не використовуйте це рішення, оскільки ви можете втратити свої дані. Насправді, я зрозумів, що не варто вибирати параметр видалення розділу, якщо в таблиці розділів відображаються значення списку розділів, тому що якщо список є, то він буквально видаляє розділ, тому дані будуть втрачені, навіть якщо відповідь говорить "Це не буде видалити ". Існує спосіб розширити розмір розділу, перевірте внизу, чи є інші утиліти, які допоможуть плавно збільшити розмір розділу.
піюшмандовра

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

Про всяк випадок, якщо хтось тут є для хмарної платформи Google GCP,
Спробуйте це:

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

2

Ви зробили розділ на цьому томі? Якщо ви це зробили, вам потрібно буде спочатку виростити розділ.


Ні, я не зробив. Як це зробити? Пам’ятайте, цей новий том, який я вклав, повинен мати усі попередні дані, оскільки це знімок оригінального тому
Вільман Арамбіллете

Ні. Але я отримав цю помилку, якщо був прикріплений розділ. Перевірте, перевірте, чи правильно встановили том, і перевірте, чи встановили ви новий том.
chantheman

Крім того, для цього не потрібно зупиняти екземпляр. Це безпечно, якщо у вас є записи на цьому томі, але ви можете зробити його знімок, коли запущений екземпляр.
chantheman

1

Завантажувальний прапор (а) не працював у моєму випадку (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.