Browse Source

'initrext4-resize' hinzufügen

Toastie 6 years ago
parent
commit
c788686c4a
1 changed files with 95 additions and 0 deletions
  1. 95 0
      initrext4-resize

+ 95 - 0
initrext4-resize

@@ -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