|
@@ -0,0 +1,95 @@
|
|
|
+# Eigentlich lässt sich ein EXT4 Dateisystem nicht online verkleinern.
|
|
|
+# Auf serverfault.com ist unter https://serverfault.com/a/888830/329677
|
|
|
+# jedoch ein eleganten Weg über die initramfs beschrieben:
|
|
|
+
|
|
|
+
|
|
|
+# resize using initramfs
|
|
|
+# --- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
|
|
|
+disk="/dev/sda1"
|
|
|
+disk-size="25G"
|
|
|
+
|
|
|
+### Prepare /etc/initramfs-tools/hooks/resizefs
|
|
|
+touch /etc/initramfs-tools/hooks/resizefs
|
|
|
+chmod +x /etc/initramfs-tools/hooks/resizefs
|
|
|
+cat >/etc/initramfs-tools/hooks/resizefs<<'EOF'
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+set -e
|
|
|
+
|
|
|
+PREREQS=""
|
|
|
+
|
|
|
+prereqs() { echo "$PREREQS"; }
|
|
|
+
|
|
|
+case $1 in
|
|
|
+ prereqs)
|
|
|
+ prereqs
|
|
|
+ exit 0
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+. /usr/share/initramfs-tools/hook-functions
|
|
|
+
|
|
|
+copy_exec /sbin/e2fsck
|
|
|
+copy_exec /sbin/resize2fs
|
|
|
+
|
|
|
+exit 0
|
|
|
+EOF
|
|
|
+
|
|
|
+
|
|
|
+### Prepare /etc/initramfs-tools/scripts/local-premount/resizefs
|
|
|
+touch /etc/initramfs-tools/scripts/local-premount/resizefs
|
|
|
+chmod +x /etc/initramfs-tools/scripts/local-premount/resizefs
|
|
|
+cat >/etc/initramfs-tools/scripts/local-premount/resizefs<<'EOF'
|
|
|
+#!/bin/sh
|
|
|
+
|
|
|
+set -e
|
|
|
+
|
|
|
+PREREQS=""
|
|
|
+
|
|
|
+prereqs() { echo "$PREREQS"; }
|
|
|
+
|
|
|
+case "$1" in
|
|
|
+ prereqs)
|
|
|
+ prereqs
|
|
|
+ exit 0
|
|
|
+ ;;
|
|
|
+esac
|
|
|
+
|
|
|
+/sbin/e2fsck -yf $disk
|
|
|
+/sbin/resize2fs $disk $disk-size
|
|
|
+/sbin/e2fsck -yf $disk
|
|
|
+EOF
|
|
|
+
|
|
|
+
|
|
|
+### Prepare initramfs and reboot
|
|
|
+update-initramfs -u
|
|
|
+reboot
|
|
|
+
|
|
|
+### Cleanup
|
|
|
+rm /etc/initramfs-tools/hooks/resizefs
|
|
|
+rm /etc/initramfs-tools/scripts/local-premount/resizefs
|
|
|
+update-initramfs -u
|
|
|
+
|
|
|
+
|
|
|
+# Change parition size
|
|
|
+# --- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
|
|
|
+tune2fs -l /dev/sda1 | grep "Block "
|
|
|
+# Block count: 6553600
|
|
|
+# Block size: 4096
|
|
|
+
|
|
|
+# This equals
|
|
|
+# 6553600 blocks * 4096 bytes / block = 26843545600 bytes
|
|
|
+# 26843545600 / (1024^3) = 25 GB
|
|
|
+
|
|
|
+fdisk -l /dev/sda
|
|
|
+# Sector size 512 bytes
|
|
|
+# Start 2048
|
|
|
+
|
|
|
+# Calculating last sector
|
|
|
+# 26843545600 bytes / 512 bytes/sector = 52428800 sectors
|
|
|
+# 52428800 sectors + 2048 to start from = 52430848
|
|
|
+
|
|
|
+
|
|
|
+fdisk /dev/sda
|
|
|
+# - Delete partition
|
|
|
+# - Create new starting with 2048 and end with 52430848
|