Кожного разу згадую як це робиться, хоча вже десь писав, але давно: треба руками збільшити розмір диску в 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 GFSSIZE: на ньому маємо 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.
Готово.
![]()





