core-agent-linux/misc/resize-rootfs
Marek Marczykowski-Górecki 2dbdb1e66f
Fix misleading error message on rootfs resize
The partition being extended is in use and sfdisk can't reload such
partition table. Tell it to not even try, it will be done by partprobe
call below.
2019-09-30 04:03:06 +02:00

38 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
set -e
dm_major=$(printf %x "$(grep device-mapper /proc/devices | cut -f 1 -d ' ')")
case "$(stat -Lc %t:%T /dev/mapper/dmroot)" in
ca:0)
# nothing needed, xvda used directly
;;
ca:3)
# resize partition table itself and xda3 partition
echo ',+' | sfdisk --no-reread --no-tell-kernel -q -N 3 /dev/xvda
# and reload partition table; prefer partprobe over blockdev
# --rereadpt, as it works on mounted partitions
partprobe /dev/xvda
;;
ca:*)
echo "Unsupported partition layout, resize it manually" >&2
exit 1
;;
$dm_major:*)
new_size=$(cat /sys/block/xvda/size)
ro=$(cat /sys/block/xvda/ro)
if [ "$ro" -eq 1 ]; then
new_table="0 $new_size snapshot /dev/xvda /dev/xvdc2 N 16"
else
new_table="0 $new_size linear /dev/xvda 0"
fi
dmsetup load dmroot --table "$new_table"
dmsetup resume dmroot
;;
*)
echo "Unsupported device type for root volume, resize it manually" >&2
exit 1
;;
esac
resize2fs /dev/mapper/dmroot