@@ -4,11 +4,42 @@ set -euo pipefail
4
4
5
5
VOLUME_TYPE=${1:- data}
6
6
7
+ # lsb release
8
+ UBUNTU_VERSION=$( lsb_release -rs)
9
+
7
10
if pgrep resizefs; then
8
11
echo " resize2fs is already running"
9
12
exit 1
10
13
fi
11
14
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
+
12
43
# Parses the output of lsblk to get the root partition number
13
44
# Example output:
14
45
# NAME MOUNTPOINT
@@ -26,15 +57,15 @@ if ! [[ "$ROOT_PARTITION_NUMBER" =~ ^[0-9]+$ ]]; then
26
57
exit 1
27
58
fi
28
59
29
- if [ -b /dev/nvme1n1 ] ; then
60
+ if [ -b " ${XVDH_DEVICE} " ] ; then
30
61
if [[ " ${VOLUME_TYPE} " == " data" ]]; then
31
- resize2fs /dev/nvme1n1
62
+ resize2fs $XVDH_DEVICE
32
63
33
64
elif [[ " ${VOLUME_TYPE} " == " root" ]] ; then
34
65
PLACEHOLDER_FL=/home/ubuntu/50M_PLACEHOLDER
35
66
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} "
38
69
if [[ ! -f " ${PLACEHOLDER_FL} " ]] ; then
39
70
fallocate -l50M " ${PLACEHOLDER_FL} "
40
71
fi
@@ -43,7 +74,7 @@ if [ -b /dev/nvme1n1 ] ; then
43
74
exit 1
44
75
fi
45
76
else
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} "
48
79
fi
49
80
echo " Done resizing disk"
0 commit comments