@@ -4,11 +4,42 @@ set -euo pipefail
44
55VOLUME_TYPE=${1:- data}
66
7+ # lsb release
8+ UBUNTU_VERSION=$( lsb_release -rs)
9+
710if pgrep resizefs; then
811 echo " resize2fs is already running"
912 exit 1
1013fi
1114
15+ # install amazon disk utilities if not present on 24.04
16+ if [ " ${UBUNTU_VERSION} " = " 24.04" ] && ! dpkg -l | grep -q amazon-ec2-utils; then
17+ apt-get update
18+ apt-get install -y amazon-ec2-utils || true
19+ fi
20+
21+ # We currently mount 3 possible disks
22+ # - /dev/xvda (root disk)
23+ # - /dev/xvdh (data disk)
24+ # - /dev/xvdp (upgrade data disk)
25+ # Initialize variables at 20.04 levels
26+ XVDA_DEVICE=" /dev/nvme0n1"
27+ XVDH_DEVICE=" /dev/nvme1n1"
28+ # Map AWS devices to NVMe for ubuntu 24.04 and later
29+ if [ " ${UBUNTU_VERSION} " = " 24.04" ] && dpkg -l | grep -q amazon-ec2-utils; then
30+ for nvme_dev in $( lsblk -dprno name,type | grep disk | awk ' {print $1}' ) ; do
31+ if [ -b " $nvme_dev " ]; then
32+ mapping=$( ebsnvme-id -b " $nvme_dev " 2> /dev/null)
33+ case " $mapping " in
34+ " xvda" |" /dev/xvda" ) XVDA_DEVICE=" $nvme_dev " ;;
35+ " xvdh" |" /dev/xvdh" ) XVDH_DEVICE=" $nvme_dev " ;;
36+ esac
37+ fi
38+ done
39+ fi
40+
41+ echo " Using devices - Root: $XVDA_DEVICE , Data: $XVDH_DEVICE "
42+
1243# Parses the output of lsblk to get the root partition number
1344# Example output:
1445# NAME MOUNTPOINT
@@ -26,15 +57,15 @@ if ! [[ "$ROOT_PARTITION_NUMBER" =~ ^[0-9]+$ ]]; then
2657 exit 1
2758fi
2859
29- if [ -b /dev/nvme1n1 ] ; then
60+ if [ -b " ${XVDH_DEVICE} " ] ; then
3061 if [[ " ${VOLUME_TYPE} " == " data" ]]; then
31- resize2fs /dev/nvme1n1
62+ resize2fs $XVDH_DEVICE
3263
3364 elif [[ " ${VOLUME_TYPE} " == " root" ]] ; then
3465 PLACEHOLDER_FL=/home/ubuntu/50M_PLACEHOLDER
3566 rm -f " ${PLACEHOLDER_FL} " || true
36- growpart /dev/nvme0n1 " ${ROOT_PARTITION_NUMBER} "
37- resize2fs " /dev/nvme0n1p ${ROOT_PARTITION_NUMBER} "
67+ growpart " ${XVDA_DEVICE} " " ${ROOT_PARTITION_NUMBER} "
68+ resize2fs " ${XVDA_DEVICE} p ${ROOT_PARTITION_NUMBER} "
3869 if [[ ! -f " ${PLACEHOLDER_FL} " ]] ; then
3970 fallocate -l50M " ${PLACEHOLDER_FL} "
4071 fi
@@ -43,7 +74,7 @@ if [ -b /dev/nvme1n1 ] ; then
4374 exit 1
4475 fi
4576else
46- growpart /dev/nvme0n1 " ${ROOT_PARTITION_NUMBER} "
47- resize2fs " /dev/nvme0n1p ${ROOT_PARTITION_NUMBER} "
77+ growpart " ${XVDA_DEVICE} " " ${ROOT_PARTITION_NUMBER} "
78+ resize2fs " ${XVDA_DEVICE} p ${ROOT_PARTITION_NUMBER} "
4879fi
4980echo " Done resizing disk"
0 commit comments