123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/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
- # use undocumented ---pretend-input-tty (yes, three '-') to
- # force unattended operation, otherwise it aborts on first
- # prompt, even with '-s' option
- echo fix | parted ---pretend-input-tty /dev/xvda print >/dev/null
- # then resize 3rd partition, even though it is mounted
- echo yes 100% | parted ---pretend-input-tty /dev/xvda resizepart 3
- # 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
|