AWS: збільшення розміру EBS на EC2 з Linux
0 (0)

Автор |  16/03/2026
Click to rate this post!
[Total: 0 Average: 0]

Кожного разу згадую як це робиться, хоча вже десь писав, але давно: треба руками збільшити розмір диску в AWS EC2.

Звикаєш до Kubernetes, де для цього достатньо просто змінити значення в PersistentVolumeClaim, а коли треба зробити руками – починаєш шукати документацію, тому накидаю таку замітку тут.

Інтересу ради пошукав старі записи, знайшов, як це робилось 10 років тому – пост AWS: увеличение размера диска EBS від  30/04/2015: треба було зупиняти EC2, створювати снапшот диску, потім з цього снапшоту створювати новий EBS з новим розміром, потім цей EBS підключати до EC2, потім запускати EC2… Жесть.

Зараз все набагато простіше і, головне – без необхідності зупиняти інстанс:

  • збільшуємо розмір диска з AWS CLI та modify-volume або методом clickops прямо в AWS Console
  • в операційній системі оновлюємо partition table – задаємо новий розмір розділу
  • збільшуємо файлову систему
  • profit!

AWS: Modify EBS volume

Є EC2 з одним root EBS, який треба збільшити:

Вибираємо Modify volume:

Заодно можна додати IOPS, бо дик активно використовується:

Задаємо новий розмір та Throughput:

AWS нагадує, що далі треба буде вносити зміни в саму файлову систему:

Чекаємо завершення змін:

Коли статус стає optimizing або completed – переходимо до файлової системи.

Linux: розширення partition та файлової системи

Перевіряємо що у нас є зараз:

root@ip-10-0-6-162:~# lsblk /dev/nvme0n1
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1      259:0    0  100G  0 disk 
├─nvme0n1p1  259:1    0   49G  0 part /
├─nvme0n1p14 259:2    0    4M  0 part 
├─nvme0n1p15 259:3    0  106M  0 part /boot/efi
└─nvme0n1p16 259:4    0  913M  0 part /boot

Диск /dev/nvme0n1 – доступно 100 гігабайт, але розділ nvme0n1p1 має розмір ~50 гігабайт.

Можна подивитись детальніше з опцією --output, до якої передаємо список колонок, які хочемо відобразити:

root@ip-10-0-6-162:~# lsblk -o NAME,SIZE,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT /dev/nvme0n1
NAME          SIZE FSSIZE FSUSED FSAVAIL FSUSE% MOUNTPOIN
nvme0n1       100G                              
├─nvme0n1p1    49G  47.4G  13.7G   33.7G    29% /
├─nvme0n1p14    4M                              
├─nvme0n1p15  106M 104.3M   6.1M   98.2M     6% /boot/efi
└─nvme0n1p16  913M 880.4M   159M  659.8M    18% /boot

Тут маємо:

  • SIZE: розмір самого диску, block device – nvme0n1, 100 G
  • FSSIZE: на ньому маємо partition з номером 1 – nvme0n1p1, у якого filesystem size – 50G (бачимо 47.4G, бо ext4 резервує частину блоків під метадані та системний резерв ~5%)

Далі нам треба виконати:

  • growpart: розширити запис розділу nvme0n1p1 в partition table до кінця диску
  • resize2fs: розширити саму файлову систему до розміру nvme0n1p1

Виконуємо:

root@ip-10-0-6-162:~# growpart /dev/nvme0n1 1
CHANGED: partition=1 start=2099200 old: size=102758367 end=104857566 new: size=207615967 end=209715166

Тепер розділ розділу 100G, але FS все ще 50G:

root@ip-10-0-6-162:~# lsblk -o NAME,SIZE,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT /dev/nvme0n1p1
NAME      SIZE FSSIZE FSUSED FSAVAIL FSUSE% M
nvme0n1p1  99G  47.4G  13.7G   33.7G    29% /

Збільшуємо саму файлову систему:

root@ip-10-0-6-162:~# resize2fs /dev/nvme0n1p1
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/nvme0n1p1 is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 13
The filesystem on /dev/nvme0n1p1 is now 25951995 (4k) blocks long.

Перевіряємо ще раз:

root@ip-10-0-6-162:~# lsblk -o NAME,SIZE,FSSIZE,FSUSED,FSAVAIL,FSUSE%,MOUNTPOINT /dev/nvme0n1p1
NAME      SIZE FSSIZE FSUSED FSAVAIL FSUSE% M
nvme0n1p1  99G  95.8G  13.7G   82.1G    14% /

Тепер SIZE 99G та FSSIZE 95.8G.

Готово.

Loading